Citus et Postgres distribué
Utilisez Citus pour transformer Postgres en base de données distribuée, avec des tables colocalisées et des tables de référence.
Citus et Postgres distribué est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que Citus ?
Citus est une extension de PostgreSQL qui transforme un cluster de serveurs PG en base de données distribuée. Vous exécutez des SELECT/INSERT sur le coordinateur ; Citus achemine les opérations vers les partitions de travail appropriées de manière transparente.
Architecture
Deux rôles :
- Coordinateur — reçoit les requêtes, conserve les métadonnées du cluster, achemine les requêtes et agrège les résultats
- Nœuds de travail — contiennent les données des partitions et exécutent les requêtes réelles
Mise en place
Installez l'extension sur le coordinateur et les nœuds de travail, puis enregistrez les nœuds de travail :
CREATE EXTENSION citus;
-- On the coordinator, add worker nodes:
SELECT * FROM master_add_node('worker1', 5432);
SELECT * FROM master_add_node('worker2', 5432);Tables distribuées
Marquez une table comme distribuée selon une colonne :
CREATE TABLE orders (
id BIGSERIAL,
user_id BIGINT NOT NULL,
total NUMERIC(10,2),
...
);
SELECT create_distributed_table('orders', 'user_id');
-- Citus splits orders into shards by hash(user_id).Tables de référence
Petites tables répliquées sur chaque nœud de travail — JOIN local :
CREATE TABLE countries (id INT, name TEXT);
SELECT create_reference_table('countries');
-- Every worker has a full copy of countries.Colocalisation
Les tables qui utilisent la même colonne de distribution sont colocalisées : les lignes correspondant à un user_id donné résident toujours sur le même nœud de travail. Les JOIN sur user_id restent locaux :
SELECT create_distributed_table('orders', 'user_id');
SELECT create_distributed_table('events', 'user_id', colocate_with => 'orders');Requêtes pour un seul locataire
Citus achemine les requêtes filtrées par user_id vers le nœud de travail approprié — rapidement :
SELECT * FROM orders WHERE user_id = 42;
-- Goes to one worker shard, returns in milliseconds.Agrégations distribuées
Citus exécute COUNT/SUM en parallèle sur les nœuds de travail :
SELECT user_id, SUM(total) FROM orders GROUP BY user_id;
-- Each worker computes locally; coordinator concatenates.Rééquilibrage
Ajoutez un nœud de travail, puis rééquilibrez les partitions :
SELECT * FROM citus_add_node('worker3', 5432);
SELECT * FROM rebalance_table_shards('orders');
-- Citus moves some shards onto the new worker.Limitations
- Les transactions entre tables non colocalisées sont limitées
- Certaines fonctionnalités de PostgreSQL ne s'appliquent pas aux tables distribuées
- Les modifications de schéma sont propagées, mais nécessitent une coordination
Citus Cloud / Azure
Citus a été racheté par Microsoft — il fait désormais partie d'Azure Database for PostgreSQL — Hyperscale (Citus). Il reste également à code source ouvert.
Solutions alternatives
- YugabyteDB — distribué et compatible avec PG
- CockroachDB — distribué et compatible avec le protocole réseau de PostgreSQL
- Pgvector / TimescaleDB — spécialisations sur un seul nœud
Quand Citus est le meilleur choix
Pour un logiciel SaaS multi-locataire dont les requêtes de chaque locataire sont isolées. Pour les séries temporelles partitionnées par locataire et par date. Pour l'analytique avec agrégation parallèle.
Récapitulatif
Citus distribue PostgreSQL.
- Coordinateur et nœuds de travail
- Distribution selon une colonne ; colocalisation pour les JOIN locaux
- Tables de référence pour les dimensions partagées
- Cas idéal : le SaaS multi-locataire
Vérification rapide
Quel est l'avantage de « colocaliser » deux tables distribuées selon la même clé dans Citus ?
Questions Fréquemment Posées
La leçon « Citus et Postgres distribué » est-elle gratuite ?
Oui — le texte complet de « Citus et Postgres distribué » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Citus et Postgres distribué » ?
Utilisez Citus pour transformer Postgres en base de données distribuée, avec des tables colocalisées et des tables de référence. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Citus et Postgres distribué » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Stratégies de partitionnement horizontal : intervalle, hachage et annuaire
- Requêtes inter-partitions : le problème le plus complexe
- Citus et Postgres distribué
- Quand NE PAS partitionner horizontalement