8 Punkte von GN⁺ 2024-12-09 | 1 Kommentare | Auf WhatsApp teilen

Ziel und Inspiration

  • Das Ziel dieses Repositories ist es, zu zeigen, wie man Postgres für alles nutzt.
  • Inspiriert von einem Artikel von Amazing CTO und einem GitHub-Gist von @cpursley.

Warum diese Liste pflegen?

  • Jede Woche erscheinen neue Tools oder neue Nutzungsmöglichkeiten auf Basis von Postgres, daher braucht es einen Ort, um sie festzuhalten.
  • Wenn es weitere Beispiele gibt, kann ein PR eingereicht werden.

Inhaltsverzeichnis

  • Blogposts und Artikel
  • Cron-Jobs
  • Message Queues
  • Analytics
  • GIS und Mapping
  • Audit-Logs
  • Zugriffskontrolle und Autorisierung
  • Suche
    • Volltext
    • Vektor
  • Zeitreihen
  • Spaltenorientiert
  • NoSQL
  • Graphdaten
  • Externe Daten
  • Alternative Abfragesprachen
  • HTTP
  • API
  • Events, Replikation, CDC
  • Caching
  • Unit-Tests
  • HTML und Anwendungen
  • Grafik und Visualisierung
  • Migrationen
  • Performance-Tuning
  • Erweiterungen und Speicherung
  • Dashboards und UI
  • Datenvisualisierung
  • Paketverwaltung
  • Language Server
  • Sonstiges
  • Bonus: Anzahl der Einträge mit Supabase

Blogposts und Artikel

  • Code in Datenbankfunktionen verschieben, um zu vereinfachen
  • Postgres für alles nutzen
  • PostgreSQL ist die beste Datenbank der Welt
  • Postgres übernimmt die Datenbankwelt
  • Hacker-News-Diskussion

Cron-Jobs

  • citusdata/pg_cron
  • cybertec-postgresql/pg_timetable

Message Queues

  • Ein Artikel zur Wahl von Queue-Techniken mit Postgres
  • tembo-io/pgmq
  • SKIP LOCKED
  • riverqueue/river
  • sequinstream/sequin: Ein Tool für CDC in Postgres, mit dem sich Postgres-Zeilen und Änderungen einfach in Streaming-Plattformen und Queues wie Kafka und SQS streamen lassen.
  • janbjorge/pgqueuer: Python-Bibliothek für effizientes Job-Queueing mit PostgreSQL

Analytics

  • pg_analytics: Verwandelt Postgres in eine schnelle OLAP-Datenbank
  • pg_duckdb: Offizielle Postgres-Erweiterung für DuckDB

GIS und Mapping

  • postgis/postgis

Audit-Logs

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

Zugriffskontrolle und Autorisierung

  • arkhipov/acl
  • pgcrypto-Dokumentation
  • michelp/pgjwt
  • Leitfaden zur Datenbanksicherheit auf supabase.com

Suche

Volltext

  • Sammlung nützlicher Links zur Postgres-Volltextsuche
  • paradedb/paradedb
  • Vergleich der Postgres-Volltextsuche mit anderen Suchtechnologien

Vektor

  • pgvector/pgvector
  • tensorchord/VectorChord: PostgreSQL-Erweiterung für skalierbare, hochperformante Vektorähnlichkeitssuche
  • timescale/pgai: PostgreSQL-Erweiterung, die die Entwicklung von RAG, semantischer Suche und anderen KI-Anwendungen innerhalb von Postgres ermöglicht
  • timescale/pgvectorscale: Implementierung eines DiskANN-Vektorindex als Ergänzung zu pgvector

Zeitreihen

  • timescale/timescaledb
  • tembo-io/pg_timeseries
  • Einführung in pg_timeseries: Open-Source-Zeitreihenerweiterung für PostgreSQL

Spaltenorientiert

  • hydradatabase/hydra
  • citusdata/cstore_fdw

NoSQL

  • PostgreSQL-Dokumentation zum Speichern und Indizieren von JSON-Daten
  • robconery/dox
  • ferretdb.com
  • Wie man JSONB in PostgreSQL effizient speichert und indiziert

Graphdaten

  • age.apache.org

Externe Daten

  • supabase/wrappers

Alternative Abfragesprachen

  • 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

Events, Replikation, CDC

  • Notifier-Muster für Anwendungen, die Postgres verwenden
  • SQL-NOTIFY-Dokumentation
  • cpursley/walex
  • PeerDB-io/peerdb
  • debezium/debezium
  • 2ndQuadrant/pglogical

Caching

  • Blog von martinheinz.dev
  • readysettech/readyset

Unit-Tests

  • theory/pgtap
  • peterldowns/pgtestdb

HTML und Anwendungen

  • SQLpage
  • Omnigres
  • pg_render
  • plmustache

Grafik und Visualisierung

  • pgSVG

Migrationen

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

Performance-Tuning

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

Erweiterungen und Speicherung

  • Wie Cloudflare mit 15 PostgreSQL-Clustern 55 Millionen Anfragen pro Sekunde verarbeitet hat
  • supabase/supavisor
  • pg-sharding/spqr
  • orioledb.com: PostgreSQL-Erweiterung, die die Vorteile von Festplatten- und In-Memory-Engines kombiniert

Dashboards und UI

  • Baserow
  • NocoDB
  • AppSmith

Datenvisualisierung

  • Evidence
  • Metabase

Paketverwaltung

  • pgxman/pgxman
  • supabase/dbdev

Language Server

  • supabase/postgres_lsp

Sonstiges

  • Sehr umfassende Liste von Postgres-Tools
  • Liste von PostgreSQL-Funktionen, die in Aurora DSQL nicht unterstützt werden

Bonus: Anzahl der Einträge mit Supabase

  • 11

1 Kommentare

 
GN⁺ 2024-12-09
Hacker-News-Kommentare
  • Man sollte Postgres nicht für alles verwenden; wenn man auf mehr als 100 Ingenieure skaliert, braucht es technische Führung, die logische und physische Grenzen setzt, sodass jede Einheit ihr eigenes Postgres hat
    • Viele CTOs übernehmen diesen schwierigen Teil nicht
  • Es ist lästig, dass Postgres-Indizes kein Skip unterstützen und Strings kein Null-Byte (\u0000) enthalten können
    • Postgres ist großartig, hat aber ein paar seltsame Schwächen
  • Es ist besser, keine aus der Datenbank generierten APIs für Personen außerhalb des Teams offenzulegen
    • Das schränkt Änderungen an der Art ein, wie Daten gespeichert werden
    • Zu diesem Thema wurde früher schon geschrieben, und die Meinung hat sich nicht wesentlich geändert
  • PGQueuer ist eine leichtgewichtige Job-Queue für Python, basiert auf PostgreSQL und nutzt SKIP LOCKED für eine effiziente und sichere Job-Verarbeitung
    • Wenn man Postgres bereits nutzt und Hintergrundjobs ohne zusätzliche Infrastruktur auf native Python-Art verwalten möchte, ist PGQueuer einen Blick wert
  • Beim Vergleich von MariaDB/MySQL mit PostgreSQL wurde festgestellt, dass es viele Erweiterungen gibt, etwa für JSON, Temporal Tables, Spalten und Vector Stores
    • LISTEN/NOTIFY fehlt noch, aber erstaunlicherweise wird aufgeholt, obwohl es in vielen Legacy-Apps gar nicht verwendet wird
  • Open-Source-BM25-Suche wird in PL/pgSQL angeboten und ist nützlich, wenn keine Rust-Erweiterungen verwendet werden können
    • Bietet hybride Suche mit pgvector und Reciprocal Rank Fusion
  • Es freut mich zu sehen, dass der Artikel von "Amazing CTO" als Inspirationsquelle erwähnt wurde
  • Es gibt viele Vorteile, mit einer einzigen API auf viele Funktionen zugreifen zu können
    • Statt in eine Message Queue zu integrieren, kann vieles einfach per INSERT erledigt werden
    • Auch Vector Search lässt sich selbstverständlich mit einer einzigen Datenbank abwickeln
    • HTML mit Postgres zu erzeugen, erscheint fragwürdig; für den Bau von Benutzeroberflächen scheint es nicht geeignet zu sein
  • Es wird nach guten Ressourcen gesucht, wie man eine Postgres-Datenbank selbst hostet
    • Man möchte Best Practices zu Backups, Optimierung usw. kennen
  • Es wurden zwei Wochen damit verbracht, Apache Age in Graph-Daten zu integrieren, nur um festzustellen, dass das Projekt alt und unübersichtlich ist
    • Mit DGraph werden bessere Ergebnisse erhofft, aber Graph-Datenbanken befinden sich in einem instabilen Zustand