Simplesmente use Postgres em todo lugar
(amazingcto.com)- 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
TEXTem formato JSON em tabelasUNLOGGEDno 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_croncomo 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
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.
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.
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
jsonbdo 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.Como tudo fica concentrado em uma coisa só, todos os pontos de risco também acabam concentrados em um único lugar..!
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.
Parece perfeito para quem gosta de fazer tudo com uma coisa só.
Eu usei
postgrespor 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
vacuumroda errado, você experimenta o inferno...Oh, tem vários truques aí.
Mas, no caso da primeira combinação de
UNLOGGEDcom stored procedures, acho que seria bem mais limpo simplesmente usar Redis mesmo hahaJá 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.
Uma opinião interessante.
É 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.
Parece um bom conceito.
Obrigado.