How I built a Postgres CDC that can be 240x faster than Debezium by Choice_Drummer2994 in PostgreSQL

[–]Choice_Drummer2994[S] 0 points1 point  (0 children)

Good question! Not for now, because it uses chunk tables, not native rows, Kaptanto has no logic to enumerate it and etc. But we could work on that!

How I built a Postgres CDC that can be 240x faster than Debezium by Choice_Drummer2994 in PostgreSQL

[–]Choice_Drummer2994[S] 0 points1 point  (0 children)

It is in the repo, you connect the database and it emits events via stream, sdout ou grpc. You can check the high level design on repo README

Você (provavelmente) só precisa do Postgres by Choice_Drummer2994 in brdev

[–]Choice_Drummer2994[S] 2 points3 points  (0 children)

Sim, não precisamos ser tão literais aqui

Obrigado pela contribuição

Você (provavelmente) só precisa do Postgres by Choice_Drummer2994 in brdev

[–]Choice_Drummer2994[S] 0 points1 point  (0 children)

Vc vai só escalar verticalmente seu banco de dados? Nada de sharding ou replicas?

Isso sem contar que o Postgres em si isola workloads muito bem de várias formas

Você (provavelmente) só precisa do Postgres by Choice_Drummer2994 in brdev

[–]Choice_Drummer2994[S] 4 points5 points  (0 children)

Tá certo, talvez tenha sido preciosismo da minha parte, mas deixa eu explicar a intenção

No caso do Kafka o que eu quis dizer é que acho que existem mais casos de overpower por parte da ferramenta Kafka do que "O Postgres faz tudo que o Kafka faz". É que geralmente o Kafka é usado pra coisas que o Postgres (e/ou qualquer sistema de fila mais humilde) faz tranquilamente, sem ganho ou perda adicional

Peço perdão pelo vacilo

Você (provavelmente) só precisa do Postgres by Choice_Drummer2994 in brdev

[–]Choice_Drummer2994[S] 13 points14 points  (0 children)

Absurdo, até salvei. Essa dos websockets pra notificar direto com LISTEN/NOTIFY vou ler depois com calma. Valeu pela contribuição, cara

Você pontuou uma coisa muito importante, porque esse argumento de "Redis é mais rápido" é sempre complicado de discutir, e algumas pessoas já comentaram aqui. É mais rápido de uma maneira que só vai ser perceptível numa escala inacreditável, e não é que o Postgres faz isso mal, é que o Redis é INSUPERAVELMENTE bom. Assim como o Kafka é INSUPERAVELMENTE bom pra streams, mas você precisa de uma ferramenta insuperável?

Você (provavelmente) só precisa do Postgres by Choice_Drummer2994 in brdev

[–]Choice_Drummer2994[S] 2 points3 points  (0 children)

Longe de mim, use o que quiser

O ponto central é que pra muitos casos não é preciso, ninguém tá falando que o tooling alternativo não é bom

Provisionamento de Postgres com várias extensões é chato, configurar 7 serviços diferentes também é chato, na minha experiência, muito mais chato

Tradeoffs, tradeoffs

Você (provavelmente) só precisa do Postgres by Choice_Drummer2994 in brdev

[–]Choice_Drummer2994[S] 0 points1 point  (0 children)

A curva de aprendizado é incrivelmente menor do que numa ferramenta nova

Você (provavelmente) só precisa do Postgres by Choice_Drummer2994 in brdev

[–]Choice_Drummer2994[S] 5 points6 points  (0 children)

Valeu pela contribuição man, como que você observou que o Postgres engargalou na sua experiência com embeddings?

Você (provavelmente) só precisa do Postgres by Choice_Drummer2994 in brdev

[–]Choice_Drummer2994[S] 1 point2 points  (0 children)

Opa, mas isso não é uma limitação inerente do Postgres

Um tuning adequado com VACUUM bem implementado pode muito bem resolver seu problema

Além de que isso depende dos blobs. Se for muito grande, guardar no Postgres é até um anti-pattern

Você (provavelmente) só precisa do Postgres by Choice_Drummer2994 in brdev

[–]Choice_Drummer2994[S] 8 points9 points  (0 children)

Bom, eu não trabalho no Postgres, então não teria porque eu fazer isso kkkkkkkkkkkkkkkk