- O artigo discute várias maneiras de capturar mudanças no banco de dados Postgres.
- Uma empresa chamada Sequin sincroniza dados de APIs de terceiros, como Salesforce e HubSpot, para que desenvolvedores possam usar seus bancos de dados Postgres para estruturar dados de API.
- O Postgres oferece várias opções para capturar dados em movimento, como acionar fluxos de trabalho com base em mudanças em tabelas ou transmitir dados em tempo real para outros armazenamentos de dados, sistemas ou serviços.
- A abordagem mais simples é usar o Listen/Notify, recurso de comunicação entre processos do Postgres. Trata-se de uma implementação do padrão publish-subscribe, mas com limitações como semântica de entrega "no máximo uma vez" e limite de 8000 bytes no tamanho do payload.
- Outro método é fazer polling diretamente nas tabelas, o que exige que cada tabela tenha uma coluna
updated_at ou algo semelhante, atualizada sempre que uma linha for modificada. No entanto, esse método não consegue detectar quando linhas são excluídas e não fornece diffs.
- O Postgres oferece suporte à replicação por streaming para outros bancos Postgres, e isso pode ser usado para capturar mudanças da aplicação. Porém, esse método é complexo e pode exigir ajustes no
postgresql.conf.
- As mudanças também podem ser capturadas em tabelas de auditoria que registram as alterações. Essa abordagem é semelhante ao uso de replication slots, mas é mais manual.
- Também existem os foreign data wrappers (FDWs), um recurso do Postgres que permite ler e escrever em fontes de dados externas. No entanto, esse método só é recomendado em situações muito específicas.
- Em conclusão, a melhor forma de capturar mudanças no Postgres depende do caso de uso. Listen/Notify é bom para capturar eventos não críticos, fazer polling de mudanças é uma solução intuitiva para casos de uso simples, e a replicação é a melhor escolha para uma solução robusta. Se a replicação for difícil demais, tabelas de auditoria podem ser uma boa solução intermediária.
1 comentários
Comentários do Hacker News
updated_at.txidem vez deupdated_at.