La société Citus Data, appartenant à Microsoft, a publié la base de données distribuée Citus 13.0, réalisée sous forme d'extension pour PostgreSQL 17. Citus permet l'évolutivité horizontale de PostgreSQL dans un cluster basé sur du matériel standard et permet de répartir les données sur les nœuds par le biais du sharding, avec la possibilité de configurer la partition au niveau des colonnes et le schéma de stockage. Pour les applications, le cluster Citus apparaît comme un grand serveur PostgreSQL unique, combinant les ressources de ses nœuds. Le code est écrit en C et est distribué sous la licence AGPLv3.
Le sharding permet d'organiser le stockage de volumes de données très importants, dont la taille totale dépasse considérablement les périphériques locaux de chaque nœud du cluster. Des tables individuelles peuvent être répliquées sur tous les nœuds pour accélérer les opérations de fusion et le traitement des clés étrangères. Pour économiser de l'espace disque, les données réparties sur différents nœuds peuvent être stockées de manière compressée.
Les requêtes distribuées peuvent être envoyées à n'importe quel nœud du cluster, mais la gestion et la modification du schéma de données doivent être effectuées uniquement par le nœud qui coordonne le fonctionnement du cluster. Les requêtes provenant des clients sont réparties sur les nœuds nécessaires et, si elles couvrent plusieurs nœuds, leur traitement est parallélisé. Le cluster peut être étendu à mesure que la taille des données stockées augmente, en ajoutant des nœuds supplémentaires et en lançant un rééquilibrage.
Comme exemples typiques d'utilisation de Citus, on note l'exécution de requêtes analytiques et le traitement de grands volumes de données sous forme de séries temporelles (par exemple, des journaux ou des sondages d'état de capteurs). Citus est également adapté à la modernisation des infrastructures existantes basées sur un seul de serveurs PostgreSQL, dont les performances et le stockage ne suffisent plus en raison de l'augmentation de la charge ou du volume des données entrantes. Avec l'outil Patroni, il est possible de créer des configurations tolérantes aux pannes avec des nœuds de secours répliqués, capables de prendre la place des nœuds principaux en cas de défaillance.
Changements dans la version Citus 13.0 :
- Passage à l'utilisation de la branche PostgreSQL 17.
- Possibilité d'utiliser dans les requêtes distribuées la fonction JSON_TABLE() pour transformer des données du format JSON en une représentation relationnelle, avec laquelle on peut travailler comme avec des tables PostgreSQL ordinaires.
- Support de la syntaxe « MERGE … WHEN NOT MATCHED BY SOURCE ».
- Possibilité de définir la méthode d'accès pour les tables partitionnées distribuées à l'aide de l'expression « CREATE TABLE … USING », ainsi que de modifier la méthode d'accès via « ALTER TABLE … SET ACCESS METHOD ».
- Ajout de la prise en charge de la spécification des colonnes d'identification générées automatiquement dans les tables partitionnées distribuées.
- L'utilisation des contraintes d'exclusion est autorisée dans les tables partitionnées distribuées.
- Les problèmes de synchronisation des rôles entre les nœuds ont été résolus.
- Amélioration de la distribution des données pour le sharding lors de l'ajout de nouveaux nœuds dans le cluster.
- Des options « MEMORY » et « SERIALIZE » ont été ajoutées à la commande « EXPLAIN », permettant de déterminer la taille de la mémoire utilisée et le temps dépensé pour transformer les données à transmettre sur le réseau.
Source : opennet.ru
