8 puntos por GN⁺ 2024-12-09 | 1 comentarios | Compartir por WhatsApp

Objetivo e inspiración

  • El objetivo de este repositorio es mostrar cómo usar Postgres para todo.
  • Inspirado en un artículo de Amazing CTO y en el gist de GitHub de @cpursley.

¿Por qué mantener esta lista?

  • Cada semana aparecen nuevas herramientas o formas de uso sobre Postgres, así que se necesita un lugar para registrarlas.
  • Si tienes otros ejemplos, puedes enviar un PR.

Índice

  • Publicaciones de blog y artículos
  • Trabajos cron
  • Colas de mensajes
  • Analítica
  • GIS y mapeo
  • Registros de auditoría
  • Control de acceso y autorización
  • Búsqueda
    • Texto completo
    • Vectores
  • Series temporales
  • Orientado a columnas
  • NoSQL
  • Datos de grafos
  • Datos externos
  • Lenguajes de consulta alternativos
  • HTTP
  • API
  • Eventos, replicación, CDC
  • Caché
  • Pruebas unitarias
  • HTML y aplicaciones
  • Gráficos y visualización
  • Migraciones
  • Ajuste de rendimiento
  • Escalado y almacenamiento
  • Dashboards e interfaces de usuario
  • Visualización de datos
  • Gestión de paquetes
  • Servidor de lenguaje
  • Otros
  • Bonus: cantidad de elementos que incluyen Supabase

Publicaciones de blog y artículos

  • Simplificar moviendo código a funciones de base de datos
  • Usar Postgres para todo
  • PostgreSQL es la mejor base de datos del mundo
  • Postgres está dominando el mundo de las bases de datos
  • Discusión en Hacker News

Trabajos cron

  • citusdata/pg_cron
  • cybertec-postgresql/pg_timetable

Colas de mensajes

  • Artículo sobre cómo elegir tecnología de colas con Postgres
  • tembo-io/pgmq
  • SKIP LOCKED
  • riverqueue/river
  • sequinstream/sequin: herramienta para CDC en Postgres, que permite transmitir fácilmente filas y cambios de Postgres a plataformas de streaming y colas como Kafka y SQS.
  • janbjorge/pgqueuer: biblioteca de Python para encolado eficiente de trabajos usando PostgreSQL

Analítica

  • pg_analytics: convierte Postgres en una base de datos OLAP rápida
  • pg_duckdb: extensión oficial de Postgres para DuckDB

GIS y mapeo

  • postgis/postgis

Registros de auditoría

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

Control de acceso y autorización

  • arkhipov/acl
  • Documentación de pgcrypto
  • michelp/pgjwt
  • Guía de seguridad de bases de datos en supabase.com

Búsqueda

Texto completo

  • Recopilación de enlaces útiles sobre búsqueda de texto completo en Postgres
  • paradedb/paradedb
  • Comparación entre la búsqueda de texto completo de Postgres y otras tecnologías de búsqueda

Vectores

  • pgvector/pgvector
  • tensorchord/VectorChord: extensión de PostgreSQL para búsqueda de similitud vectorial escalable y de alto rendimiento
  • timescale/pgai: extensión de PostgreSQL que permite desarrollar RAG, búsqueda semántica y otras aplicaciones de IA dentro de Postgres
  • timescale/pgvectorscale: implementación de índice vectorial DiskANN que complementa pgvector

Series temporales

  • timescale/timescaledb
  • tembo-io/pg_timeseries
  • Introducción a pg_timeseries: extensión de series temporales de código abierto para PostgreSQL

Orientado a columnas

  • hydradatabase/hydra
  • citusdata/cstore_fdw

NoSQL

  • Documentación de PostgreSQL sobre almacenamiento e indexación de datos JSON
  • robconery/dox
  • ferretdb.com
  • Cómo almacenar e indexar JSONB de forma efectiva en PostgreSQL

Datos de grafos

  • age.apache.org

Datos externos

  • supabase/wrappers

Lenguajes de consulta alternativos

  • 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, replicación, CDC

  • Patrón Notifier para aplicaciones que usan Postgres
  • Documentación de SQL NOTIFY
  • cpursley/walex
  • PeerDB-io/peerdb
  • debezium/debezium
  • 2ndQuadrant/pglogical

Caché

  • Blog de martinheinz.dev
  • readysettech/readyset

Pruebas unitarias

  • theory/pgtap
  • peterldowns/pgtestdb

HTML y aplicaciones

  • SQLpage
  • Omnigres
  • pg_render
  • plmustache

Gráficos y visualización

  • pgSVG

Migraciones

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

Ajuste de rendimiento

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

Escalado y almacenamiento

  • Cómo Cloudflare manejó 55 millones de solicitudes por segundo con 15 clústeres de PostgreSQL
  • supabase/supavisor
  • pg-sharding/spqr
  • orioledb.com: extensión de PostgreSQL que combina las ventajas de los motores en disco y en memoria

Dashboards e interfaces de usuario

  • Baserow
  • NocoDB
  • AppSmith

Visualización de datos

  • Evidence
  • Metabase

Gestión de paquetes

  • pgxman/pgxman
  • supabase/dbdev

Servidor de lenguaje

  • supabase/postgres_lsp

Otros

  • Lista muy completa de herramientas de Postgres
  • Lista de funciones de PostgreSQL no compatibles en Aurora DSQL

Bonus: cantidad de elementos que incluyen Supabase

  • 11

1 comentarios

 
GN⁺ 2024-12-09
Opiniones de Hacker News
  • No uses Postgres para todo; al escalar a más de 100 ingenieros, se necesita liderazgo técnico para establecer límites lógicos y físicos de modo que cada unidad tenga su propio Postgres
    • Muchos CTO no hacen esta parte difícil
  • Es incómodo que los índices de Postgres no soporten skip y que las cadenas no puedan incluir el carácter nulo (\u0000)
    • Postgres es excelente, pero tiene algunas rarezas
  • Es mejor no exponer a personas fuera del equipo APIs generadas desde la base de datos
    • Eso limita la capacidad de cambiar la forma en que se almacenan los datos
    • Ya había escrito antes sobre este tema y mi opinión no ha cambiado mucho
  • PGQueuer es una cola de trabajos ligera para Python, basada en PostgreSQL, que usa SKIP LOCKED para ofrecer un procesamiento de tareas eficiente y seguro
    • Si ya usas Postgres y quieres gestionar trabajos en segundo plano de forma nativa en Python sin infraestructura adicional, vale la pena considerar PGQueuer
  • Al comparar MariaDB/MySQL con PostgreSQL, se encontró que existen muchas extensiones como JSON, tablas temporales, columnas y almacenes vectoriales
    • La funcionalidad LISTEN/NOTIFY se queda corta, pero sorprendentemente se está poniendo al día, aunque no se use en muchas apps legacy
  • Ofrece búsqueda BM25 de código abierto en PL/pgSQL, útil cuando no se pueden usar extensiones en Rust
    • Ofrece búsqueda híbrida con pgvector y Reciprocal Rank Fusion
  • Me alegró ver la mención de que estaba inspirado en el artículo de "Amazing CTO"
  • Hay muchas ventajas en poder acceder a muchas funciones con una sola API
    • En lugar de integrarlo con una cola de mensajes, se puede resolver de forma simple con INSERT
    • La búsqueda vectorial, por supuesto, también se puede manejar con una sola base de datos
    • Generar HTML con Postgres es cuestionable; no parece adecuado para construir interfaces de usuario
  • Estoy buscando buenos recursos sobre cómo alojar por cuenta propia una base de datos Postgres
    • Quiero conocer las mejores prácticas para backups, optimización, etc.
  • Pasé dos semanas integrando Apache Age para datos de grafos, pero me di cuenta de que el proyecto es antiguo y confuso
    • Espero mejores resultados con DGraph, pero las bases de datos de grafos están en un estado inestable