8 pontos por GN⁺ 2024-12-09 | 1 comentários | Compartilhar no WhatsApp

Objetivo e inspiração

  • O objetivo deste repositório é mostrar como usar o Postgres para tudo.
  • Inspirado por um artigo da Amazing CTO e por uma gist no GitHub de @cpursley.

Por que manter esta lista?

  • Toda semana surgem novas ferramentas ou novas formas de usar o Postgres, então é preciso ter um lugar para registrar isso.
  • Se houver outros exemplos, você pode enviar um PR.

Índice

  • Posts de blog e artigos
  • Tarefas cron
  • Filas de mensagens
  • Analytics
  • GIS e mapeamento
  • Logs de auditoria
  • Controle de acesso e autorização
  • Busca
    • Texto completo
    • Vetorial
  • Séries temporais
  • Orientado a colunas
  • NoSQL
  • Dados em grafo
  • Dados externos
  • Linguagens de consulta alternativas
  • HTTP
  • API
  • Eventos, replicação, CDC
  • Cache
  • Testes unitários
  • HTML e aplicações
  • Gráficos e visualização
  • Migrações
  • Ajuste de desempenho
  • Escalabilidade e armazenamento
  • Dashboards e UI
  • Visualização de dados
  • Gerenciamento de pacotes
  • Servidor de linguagem
  • Outros
  • Bônus: número de itens que incluem Supabase

Posts de blog e artigos

  • Simplificando ao mover código para funções do banco de dados
  • Use Postgres para tudo
  • PostgreSQL é o melhor banco de dados do mundo
  • O Postgres está dominando o mundo dos bancos de dados
  • Discussão no Hacker News

Tarefas cron

  • citusdata/pg_cron
  • cybertec-postgresql/pg_timetable

Filas de mensagens

  • Artigo sobre como escolher a técnica de fila com Postgres
  • tembo-io/pgmq
  • SKIP LOCKED
  • riverqueue/river
  • sequinstream/sequin: ferramenta para CDC no Postgres, que permite transmitir facilmente linhas e alterações do Postgres para plataformas de streaming e filas como Kafka e SQS.
  • janbjorge/pgqueuer: biblioteca Python para enfileiramento eficiente de tarefas usando PostgreSQL

Analytics

  • pg_analytics: transforma o Postgres em um banco OLAP rápido
  • pg_duckdb: extensão oficial do Postgres para DuckDB

GIS e mapeamento

  • postgis/postgis

Logs de auditoria

  • arkhipov/temporal_tables
  • supabase/supa_audit
  • pgMemento/pgMemento
  • pgaudit/pgaudit

Controle de acesso e autorização

  • arkhipov/acl
  • documentação do pgcrypto
  • michelp/pgjwt
  • guia de segurança de banco de dados no supabase.com

Busca

Texto completo

  • Coletânea de links úteis sobre busca de texto completo no Postgres
  • paradedb/paradedb
  • Comparação entre a busca de texto completo do Postgres e outras tecnologias de busca

Vetorial

  • pgvector/pgvector
  • tensorchord/VectorChord: extensão do PostgreSQL para busca de similaridade vetorial escalável e de alto desempenho
  • timescale/pgai: extensão do PostgreSQL que permite desenvolver RAG, busca semântica e outras aplicações de IA dentro do Postgres
  • timescale/pgvectorscale: implementação de índice vetorial DiskANN que complementa o pgvector

Séries temporais

  • timescale/timescaledb
  • tembo-io/pg_timeseries
  • Introdução ao pg_timeseries: extensão open source de séries temporais para PostgreSQL

Orientado a colunas

  • hydradatabase/hydra
  • citusdata/cstore_fdw

NoSQL

  • documentação do PostgreSQL sobre armazenamento e indexação de dados JSON
  • robconery/dox
  • ferretdb.com
  • Como armazenar e indexar JSONB de forma eficaz no PostgreSQL

Dados em grafo

  • age.apache.org

Dados externos

  • supabase/wrappers

Linguagens de consulta alternativas

  • kaspermarstal/plprql
  • supabase.github.io/pg_graphql
  • dosco/graphjin

HTTP

  • pramsey/pgsql-http
  • supabase/pg_net

API

  • PostgREST/postgrest
  • hasura/graphql-engine
  • postgraphile.org
  • supabase.github.io/pg_graphql

Eventos, replicação, CDC

  • Padrão Notifier para aplicações que usam Postgres
  • documentação do SQL NOTIFY
  • cpursley/walex
  • PeerDB-io/peerdb
  • debezium/debezium
  • 2ndQuadrant/pglogical

Cache

  • blog martinheinz.dev
  • readysettech/readyset

Testes unitários

  • theory/pgtap
  • peterldowns/pgtestdb

HTML e aplicações

  • SQLpage
  • Omnigres
  • pg_render
  • plmustache

Gráficos e visualização

  • pgSVG

Migrações

  • purcell/postgresql-migrations
  • bytebase.com
  • xataio/pgroll
  • stripe/pg-schema-diff

Ajuste de desempenho

  • Supabase Index Advisor
  • Dexter
  • HypoPG
  • pg_hint_plan
  • PGHero

Escalabilidade e armazenamento

  • Como a Cloudflare processou 55 milhões de requisições por segundo com 15 clusters PostgreSQL
  • supabase/supavisor
  • pg-sharding/spqr
  • orioledb.com: extensão do PostgreSQL que combina as vantagens dos motores em disco e em memória

Dashboards e UI

  • Baserow
  • NocoDB
  • AppSmith

Visualização de dados

  • Evidence
  • Metabase

Gerenciamento de pacotes

  • pgxman/pgxman
  • supabase/dbdev

Servidor de linguagem

  • supabase/postgres_lsp

Outros

  • Lista muito abrangente de ferramentas para Postgres
  • Lista de recursos do PostgreSQL não suportados no Aurora DSQL

Bônus: número de itens que incluem Supabase

  • 11

1 comentários

 
GN⁺ 2024-12-09
Opiniões do Hacker News
  • Não use Postgres para tudo; ao escalar para mais de 100 engenheiros, é necessária liderança técnica para definir fronteiras lógicas e físicas para que cada unidade tenha seu próprio Postgres
    • Muitos CTOs não fazem essa parte difícil
  • É inconveniente que os índices do Postgres não ofereçam suporte a skip e que strings não possam conter o caractere nulo (\u0000)
    • O Postgres é excelente, mas tem algumas falhas estranhas
  • É melhor não expor para pessoas de fora da equipe APIs geradas a partir do banco de dados
    • Isso cria restrições para mudar a forma como os dados são armazenados
    • Já escrevi antes sobre esse tema, e minha opinião não mudou muito
  • PGQueuer é uma fila de tarefas leve para Python, baseada em PostgreSQL, que usa SKIP LOCKED para oferecer processamento de tarefas eficiente e seguro
    • Se você já usa Postgres e quer gerenciar tarefas em segundo plano de forma nativa em Python, sem infraestrutura adicional, vale considerar o PGQueuer
  • Ao comparar MariaDB/MySQL com PostgreSQL, descobri que há muitos recursos de extensão, como JSON, tabelas temporais, colunas e armazenamento vetorial
    • O recurso LISTEN/NOTIFY ainda deixa a desejar, mas está alcançando de forma surpreendente muitos apps legados, mesmo sem ser usado neles
  • Há uma busca BM25 open source oferecida em PL/pgSQL, útil quando não é possível usar extensões em Rust
    • Oferece busca híbrida com pgvector e Reciprocal Rank Fusion
  • Fiquei feliz ao ver a menção de que houve inspiração em um artigo do "Amazing CTO"
  • Há muitas vantagens em acessar muitos recursos por meio de uma única API
    • Em vez de integrar com uma fila de mensagens, é possível resolver de forma simples com INSERT
    • A busca vetorial naturalmente também pode ser tratada em um único banco de dados
    • Gerar HTML usando Postgres é questionável, e não parece adequado para criar interfaces de usuário
  • Estou procurando bons materiais sobre como fazer self-host de um banco de dados Postgres
    • Quero saber quais são as melhores práticas para backup, otimização etc.
  • Passei duas semanas tentando integrar o Apache Age a dados em grafo, mas percebi que o projeto é antigo e confuso
    • Tenho esperança de obter resultados melhores com o DGraph, mas os bancos de dados em grafo estão em um estado instável