À propos du projet
Citus est une extension PostgreSQL qui transforme une base de données Postgres unique en une base distribuée, vous permettant de monter en charge sur plusieurs nœuds tout en continuant à utiliser les outils et extensions PostgreSQL standards.
Capacités principales décrites dans le README :
- Tables distribuées : les tables sont partitionnées sur un cluster de nœuds PostgreSQL, combinant les capacités de CPU, mémoire, stockage et E/S. La fonction create_distributed_table partitionne une table localement ou sur les nœuds workers.
- Tables de référence : répliquées sur tous les nœuds pour prendre en charge les jointures et les clés étrangères qui n'incluent pas la colonne de distribution, et pour améliorer les performances de lecture.
- Moteur de requêtes distribuées : route et parallélise les opérations SELECT, DML et autres sur le cluster. Les requêtes filtrées sur la colonne de distribution sont routées vers un seul worker ; les autres requêtes sont parallélisées sur les shards.
- Stockage columnar : une méthode d'accès aux tables USING columnar qui compresse les données, accélère les scans et prend en charge des projections rapides, utilisable sur des tables régulières ou distribuées. Les mises à jour, suppressions et clés étrangères ne sont pas prises en charge sur les tables columnar ; le chargement par lots via COPY ou INSERT..SELECT est recommandé.
- Requêtes depuis n'importe quel nœud : les requêtes distribuées peuvent être émises depuis n'importe quel nœud du cluster, tandis que les modifications de schéma et l'administration du cluster passent toujours par le coordinateur.
- Partitionnement basé sur les schémas (depuis Citus 12.0) : un modèle de base de données partagée avec schémas séparés où chaque schéma agit comme un shard logique, utile pour les applications multi-tenant et les microservices sans modification des requêtes.
- create_distributed_table_concurrently : convertit une table existante en table distribuée sans bloquer les lectures et écritures.
- Co-localisation : les tables distribuées partageant une colonne de distribution peuvent être co-localisées pour permettre des jointures distribuées efficaces, des clés étrangères, INSERT..SELECT, des procédures stockées et des transactions distribuées.
Les options de déploiement incluent un service managé sur Azure (Elastic Clusters dans Azure Database for PostgreSQL Flexible Server), une image Docker (citusdata/citus), et des paquets locaux pour Ubuntu/Debian et Red Hat. Les clusters multi-nœuds sont construits en ajoutant des nœuds workers et en rééquilibrant les shards. La haute disponibilité est prise en charge via Patroni 3.0, qui bénéficie d'un support Citus de premier ordre.
Le README positionne Citus pour les applications qui dépassent les capacités d'un seul nœud PostgreSQL et pour les charges de travail nécessitant les fonctionnalités de PostgreSQL à grande échelle, telles que le SaaS multi-tenant, les tableaux de bord d'analytique temps réel, les séries temporelles et les données IoT. La documentation, les guides de cas d'usage et un article SIGMOD '21 sont référencés pour plus de détails.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.