50 pontos por xguru 2022-12-13 | 13 comentários | Compartilhar no WhatsApp
  • O Postgres pode substituir inúmeras tecnologias de backend (até para bases com milhões de usuários)
    → Kafka, RabbitMQ, Mongo, Redis,..
  • Para cache, usar TEXT em formato JSON em tabelas UNLOGGED no lugar do Redis
    • Definir período de expiração dos dados com stored procedures
  • Fila de mensagens (Kafka): SKIP LOCKED
  • Para data warehouse, Postgres + TimescaleDB
  • No lugar do Mongo, armazenar JSONB com busca e indexação
  • Usar pg_cron como daemon de CRON para tarefas como envio de e-mails
  • Usar para consultas geoespaciais
  • No lugar do Elastic, usar para busca full-text
  • Gerar JSON dentro do banco e entregar direto para a API sem código server-side
  • Também oferece suporte a GraphQL com um adaptador GraphQL

13 comentários

 
bbulbum 2022-12-15

Hum... parece que a ideia básica é que, a menos que você precise de mais recursos específicos que cada app oferece, o conceito básico já pode ser coberto pelo Postgres.
Afinal, cada app pode usar mais recursos do que o fluxo que está sendo substituído acima.

 
colossus 2022-12-14

Se a interface for bem definida e usada, não acho que isso seja um absurdo. Ainda assim, acho que coisas como cache/fila de mensagens podem muito bem ficar a cargo do Redis.

 
gninggoon 2022-12-14

Recentemente também tenho pensado de forma parecida com o texto acima. Claro que, em serviços de grande escala, o ideal é distribuir ao máximo para diluir os riscos, mas, ao fazer projetos terceirizados de pequeno porte, muitas vezes foi muito mais útil aproveitar o tipo jsonb do Postgres sem usar um NoSQL separado. A experiência de uso parecia combinar RDB + NoSQL e, dentro de projetos pequenos, o desempenho foi mais do que suficiente.

 
a9t84j1k5j2j1 2022-12-13

Como tudo fica concentrado em uma coisa só, todos os pontos de risco também acabam concentrados em um único lugar..!

 
ehlegeth 2022-12-13

Embora algumas dessas coisas fossem realmente feitas com um RDB na época em que não havia produtos para substituí-las, parece que coisas como Redis, Kafka e Cron não conseguem substituir suas principais vantagens. Parece mais uma ideia para ler por diversão e seguir em frente.

 
ifmkl 2022-12-13

Parece perfeito para quem gosta de fazer tudo com uma coisa só.

 
s0400615 2022-12-13

Eu usei postgres por causa de geospatial.
Comparado a outros bancos de dados, foi algo entre 10 e 100 vezes mais rápido... na parte de geo ele realmente domina.

Mas, como todo mundo sabe, quando os dados aumentam e o vacuum roda errado, você experimenta o inferno...

 
kbumsik 2022-12-13

Oh, tem vários truques aí.

Mas, no caso da primeira combinação de UNLOGGED com stored procedures, acho que seria bem mais limpo simplesmente usar Redis mesmo haha

 
youknowone 2022-12-13

Já faz alguns anos, mas houve uma vez em que eu estava usando JSONB e, quando a carga começou a ficar pesada, escolhi algo mais adequado ao padrão de KV e migrei para o Redis; foi uma experiência bem tranquila.

 
sangheon 2022-12-13

Uma opinião interessante.

 
xguru 2022-12-13

É um título chamativo, mas achei que valia a pena trazer o tema como está para refletir um pouco.
Afinal, também é um problema introduzir componentes demais ao criar um MVP inicial.

 
jujumilk3 2022-12-13

Parece um bom conceito.

 
devo209 2022-12-20

Obrigado.