stamatios
← Voltar ao feed
Elefante em forma de canivete suíço com várias ferramentas abertas, PostgreSQL substituindo múltiplos sistemas.
Dev & Engenharia

PostgreSQL para tudo: um banco substituindo vários sistemas

resumo de ~3 min

Tese central

O texto defende que o PostgreSQL pode substituir uma série de sistemas especializados em muitos projetos, simplificando a arquitetura e reduzindo a quantidade de serviços que uma equipe precisa instalar, sincronizar e manter. A tese não é que ele seja a resposta para tudo, mas que vale perguntar, diante de cada nova exigência, se o próprio banco já consegue atendê-la antes de adotar outra tecnologia.

A defesa se apoia em três características: estabilidade, facilidade de instalação e escalabilidade, e capacidade de exercer funções que vão além de um banco relacional. O autor usa sua experiência desde 2003, incluindo um projeto de pesquisa e aplicações profissionais, para argumentar que a longevidade do PostgreSQL, sua comunidade ativa e a incorporação contínua de recursos modernos oferecem uma base confiável. Entre esses recursos estão armazenamento de documentos JSON, particionamento e expressões de tabela comuns.

Funções que podem ser concentradas no PostgreSQL

Para busca textual, o PostgreSQL permite tornar textos pesquisáveis sem um sistema separado, evitando a sincronização entre o banco e ferramentas como Solr ou Elastic. O texto cita Contentful e Instacart como exemplos de empresas que construíram recursos de busca sobre PostgreSQL.

O suporte a JSON permite armazenar e consultar documentos, com índices GIN para acelerar essas operações, o que pode atender a casos tradicionalmente associados ao MongoDB. Como sistema de filas, comandos SQL como SELECT ... FOR UPDATE e SELECT ... SKIP LOCKED permitem usar tabelas com consumidores e diferentes modelos de leitura. A recomendação é começar com PostgreSQL e migrar para Kafka, RabbitMQ ou SQS apenas quando o desempenho deixar de ser suficiente.

Para grandes volumes de séries temporais, a extensão Timescale pode oferecer recursos semelhantes aos de sistemas especializados, mantendo a equipe no ecossistema PostgreSQL. Em fluxos de IA, pgvector transforma o banco em uma base vetorial para indexação e recuperação de dados; o pgai, segundo o texto, acrescenta recursos para indexar dados, chamar modelos de linguagem e recuperar informações por similaridade.

O PostgreSQL também pode funcionar como cache não persistente por meio de tabelas UNLOGGED, com um gatilho para imitar a expiração automática do Redis. Em um caso relatado pelo autor, o banco superou o sistema de arquivos na leitura e gravação de muitos pequenos blocos binários, usando dados armazenados em uma coluna de objetos binários e Flatbuffers.

Limites e conclusão

Consultas recursivas permitem lidar com dados hierárquicos, embora sejam difíceis de ler e manter; o tipo LTREE é apresentado como alternativa mais simples para estruturas como hierarquias de tags. O banco também pode gerar respostas JSON diretamente de consultas, potencialmente substituindo parte do middleware de serviços que apenas acessam dados e devolvem JSON, embora o autor reconheça que essa abordagem tem prós e contras. O exemplo de Tetris em SQL é tratado como curiosidade, não como recomendação prática.

A lista não é exaustiva, e o texto reconhece que tecnologias especializadas continuam sendo alternativas quando o PostgreSQL não oferece desempenho suficiente ou quando suas limitações pesam mais. Ainda assim, a conclusão é que concentrar funções em uma plataforma extensível pode reduzir complexidade, manutenção e necessidade de sincronização.