Eu tenho um banco de dados PostgreSQL no qual tenho uma grande carga em massa em execução. Desejo que esta carga seja o mais rápida possível. Já estou usando o comando copy etc.
Eu tenho lido sobre timescaledb e como ele oferece melhor desempenho de inserção. No entanto, gostaria de saber se há alguma desvantagem em usar hipertabelas em vez de tabelas regulares, se eu me importar apenas com o desempenho da inserção?
(Pessoa de escala de tempo aqui.)
Sim, você deve conseguir uma taxa de inserção muito maior em uma hipertabela TimescaleDB do que em uma tabela normal.
A principal desvantagem das hipertabelas é que existem algumas limitações que elas expõem relacionadas à maneira como fazemos o dimensionamento interno. Em particular:
Só permitimos que uma chave seja marcada como ÚNICA se ela incluir todas as chaves de particionamento (em seu prefixo). Portanto, se você particionar em uma coluna de tempo, a coluna de tempo poderá ser exclusiva ou você poderá criar uma chave composta exclusiva em (tempo, device_id). Mas isso significa que você não pode construir um id de incremento automático padrão como a chave primária (observe que as chaves primárias são definidas como ÚNICAS). Mas descobrimos que isso normalmente não faz sentido para dados de séries temporais.
Você pode definir uma restrição de chave estrangeira de sua hipertabela para uma tabela regular, mas atualmente não permitimos o oposto: um FK de uma tabela regular para uma hipertabela. (Mas, assim como a limitação de restrição UNIQUE acima, isso raramente faz sentido ou pode ser projetado em torno.)
Se você tiver outras dúvidas, o Documentos (docs.timescale.com) ou o Slack da comunidade (slack.timescale.com) são ótimos recursos.