8 points par GN⁺ 2024-12-09 | 1 commentaires | Partager sur WhatsApp

Objectif et inspiration

  • L’objectif de ce dépôt est de montrer comment utiliser Postgres pour tout.
  • Inspiré par un article de Amazing CTO et un gist GitHub de @cpursley.

Pourquoi maintenir cette liste ?

  • Chaque semaine, de nouveaux outils ou usages basés sur Postgres apparaissent, il faut donc un endroit pour les recenser.
  • Si vous avez d’autres exemples, vous pouvez soumettre une PR.

Table des matières

  • Articles de blog et articles
  • Tâches cron
  • Files de messages
  • Analytique
  • SIG et cartographie
  • Journaux d’audit
  • Contrôle d’accès et autorisation
  • Recherche
    • Texte intégral
    • Vecteurs
  • Séries temporelles
  • Orienté colonnes
  • NoSQL
  • Données graphe
  • Données externes
  • Langages de requête alternatifs
  • HTTP
  • API
  • Événements, réplication, CDC
  • Mise en cache
  • Tests unitaires
  • HTML et applications
  • Graphiques et visualisation
  • Migrations
  • Réglage des performances
  • Mise à l’échelle et stockage
  • Tableaux de bord et UI
  • Visualisation des données
  • Gestion des paquets
  • Serveur de langage
  • Divers
  • Bonus : nombre d’éléments incluant Supabase

Articles de blog et articles

  • Simplifier en déplaçant le code dans des fonctions de base de données
  • Utiliser Postgres pour tout
  • PostgreSQL est la meilleure base de données au monde
  • Postgres est en train de dominer le monde des bases de données
  • Discussion Hacker News

Tâches cron

  • citusdata/pg_cron
  • cybertec-postgresql/pg_timetable

Files de messages

  • Article sur le choix des technologies de file de messages avec Postgres
  • tembo-io/pgmq
  • SKIP LOCKED
  • riverqueue/river
  • sequinstream/sequin: outil de CDC pour Postgres, permettant de diffuser facilement les lignes et changements Postgres vers des plateformes de streaming et des files comme Kafka et SQS.
  • janbjorge/pgqueuer: bibliothèque Python pour une mise en file de tâches efficace avec PostgreSQL

Analytique

  • pg_analytics: transforme Postgres en base OLAP rapide
  • pg_duckdb: extension Postgres officielle pour DuckDB

SIG et cartographie

  • postgis/postgis

Journaux d’audit

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

Contrôle d’accès et autorisation

  • arkhipov/acl
  • Documentation pgcrypto
  • michelp/pgjwt
  • Guide de sécurité de la base de données sur supabase.com

Recherche

Texte intégral

  • Collection de liens utiles sur la recherche en texte intégral dans Postgres
  • paradedb/paradedb
  • Comparaison entre la recherche en texte intégral de Postgres et d’autres technologies de recherche

Vecteurs

  • pgvector/pgvector
  • tensorchord/VectorChord: extension PostgreSQL pour la recherche de similarité vectorielle haute performance et scalable
  • timescale/pgai: extension PostgreSQL permettant de développer des applications RAG, de recherche sémantique et d’autres applications IA à l’intérieur de Postgres
  • timescale/pgvectorscale: implémentation d’un index vectoriel DiskANN qui complète pgvector

Séries temporelles

  • timescale/timescaledb
  • tembo-io/pg_timeseries
  • Introduction à pg_timeseries : extension open source de séries temporelles pour PostgreSQL

Orienté colonnes

  • hydradatabase/hydra
  • citusdata/cstore_fdw

NoSQL

  • Documentation PostgreSQL sur le stockage et l’indexation des données JSON
  • robconery/dox
  • ferretdb.com
  • Comment stocker et indexer efficacement JSONB dans PostgreSQL

Données graphe

  • age.apache.org

Données externes

  • supabase/wrappers

Langages de requête alternatifs

  • 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

Événements, réplication, CDC

  • Le pattern Notifier pour les applications utilisant Postgres
  • Documentation SQL NOTIFY
  • cpursley/walex
  • PeerDB-io/peerdb
  • debezium/debezium
  • 2ndQuadrant/pglogical

Mise en cache

  • Blog martinheinz.dev
  • readysettech/readyset

Tests unitaires

  • theory/pgtap
  • peterldowns/pgtestdb

HTML et applications

  • SQLpage
  • Omnigres
  • pg_render
  • plmustache

Graphiques et visualisation

  • pgSVG

Migrations

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

Réglage des performances

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

Mise à l’échelle et stockage

  • Comment Cloudflare a traité 55 millions de requêtes par seconde avec 15 clusters PostgreSQL
  • supabase/supavisor
  • pg-sharding/spqr
  • orioledb.com: extension PostgreSQL combinant les avantages des moteurs disque et mémoire

Tableaux de bord et UI

  • Baserow
  • NocoDB
  • AppSmith

Visualisation des données

  • Evidence
  • Metabase

Gestion des paquets

  • pgxman/pgxman
  • supabase/dbdev

Serveur de langage

  • supabase/postgres_lsp

Divers

  • Liste très complète d’outils Postgres
  • Liste des fonctionnalités PostgreSQL non prises en charge dans Aurora DSQL

Bonus : nombre d’éléments incluant Supabase

  • 11

1 commentaires

 
GN⁺ 2024-12-09
Avis Hacker News
  • Il ne faut pas utiliser Postgres pour tout ; lorsqu’on passe à l’échelle avec plus de 100 ingénieurs, il faut un leadership technique capable d’établir des frontières logiques et physiques afin que chaque unité dispose de son propre Postgres
    • Beaucoup de CTO ne font pas cette partie difficile
  • Il est gênant que les index Postgres ne prennent pas en charge le skip et qu’une chaîne ne puisse pas contenir le caractère nul (\u0000)
    • Postgres est excellent, mais il a quelques défauts étranges
  • Il vaut mieux ne pas exposer à des personnes extérieures à l’équipe des API générées depuis la base de données
    • Cela impose des limites lorsqu’on veut changer la manière de stocker les données
    • J’ai déjà écrit sur ce sujet auparavant, et mon avis n’a pas beaucoup changé
  • PGQueuer est une file de tâches légère pour Python, basée sur PostgreSQL, qui utilise SKIP LOCKED pour offrir un traitement des tâches efficace et sûr
    • Si vous utilisez déjà Postgres et souhaitez gérer des tâches en arrière-plan de façon native en Python, sans infrastructure supplémentaire, PGQueuer mérite d’être envisagé
  • En comparant MariaDB/MySQL et PostgreSQL, on constate l’existence de nombreuses extensions comme JSON, les tables temporelles, les colonnes et les vector stores
    • La fonction LISTEN/NOTIFY manque, mais c’est étonnant de voir à quel point ils rattrapent leur retard alors que beaucoup d’applications legacy ne l’utilisent même pas
  • Une recherche BM25 open source est proposée en PL/pgSQL, utile lorsqu’on ne peut pas utiliser une extension Rust
    • Une recherche hybride est fournie avec pgvector et Reciprocal Rank Fusion
  • Je suis heureux de voir la mention indiquant que cela a été inspiré par l’article de « Amazing CTO »
  • Il y a beaucoup d’avantages à pouvoir accéder à de nombreuses fonctions via une seule API
    • Au lieu d’intégrer une file de messages, on peut simplement traiter cela via INSERT
    • La recherche vectorielle aussi peut naturellement être gérée avec une seule base de données
    • Générer du HTML avec Postgres me laisse perplexe, et cela ne semble pas adapté à la création d’interfaces utilisateur
  • Je cherche de bonnes ressources sur la manière d’auto-héberger une base de données Postgres
    • J’aimerais connaître les meilleures pratiques pour les sauvegardes, l’optimisation, etc.
  • J’ai passé deux semaines à essayer d’intégrer Apache Age pour des données graphe, mais j’ai réalisé que le projet est ancien et confus
    • J’espère de meilleurs résultats avec DGraph, mais les bases de données graphe restent dans un état instable