Citus Data, appartenente a Microsoft, ha rilasciato il sistema di gestione di database distribuito Citus 13.0, implementato come estensione di PostgreSQL 17. Citus offre scalabilità orizzontale per PostgreSQL in un cluster basato su hardware standard e consente di distribuire i dati tra i nodi mediante sharding (sharding) con configurazione di divisione a livello di colonne e schema di archiviazione. Per le applicazioni, il cluster Citus appare come un unico grande server PostgreSQL che combina le risorse dei nodi che lo compongono. Il codice è scritto in C e viene distribuito sotto licenza AGPLv3.
Lo sharding consente di organizzare l'archiviazione di enormi volumi di dati, il cui dimensionamento totale supera di gran lunga le unità locali di ciascun nodo del cluster. Tabelle separate possono essere forzate a replicarsi su tutti i nodi per velocizzare le operazioni di fusione e lavorare con le chiavi esterne. Per risparmiare spazio su disco, i dati distribuiti su diversi nodi possono essere archiviati in forma compressa.
Le query distribuite possono essere inviate a qualsiasi nodo del cluster, ma la gestione e la modifica dello schema dei dati devono essere eseguite solo tramite il nodo che coordina il funzionamento del cluster. Le richieste provenienti dai clienti vengono distribuite ai nodi necessari e, se coprono più nodi, la loro elaborazione viene parallelizzata. Il cluster può essere espanso man mano che cresce la dimensione dei dati memorizzati, aggiungendo nodi aggiuntivi e avviando un bilanciamento.
Tra i casi d'uso tipici di Citus si evidenziano l'esecuzione di query analitiche e l'elaborazione di grandi insiemi di dati in forma di serie temporali (ad esempio, log o polling dello stato dei sensori). Citus è anche adatto per la modernizzazione delle infrastrutture esistenti basate su un singolo server PostgreSQL, la cui performance e capacità di archiviazione non sono più sufficienti a causa dell'aumento del carico o del volume dei dati in arrivo. Con l'ausilio dello strumento Patroni, è possibile creare configurazioni ad alta disponibilità con nodi secondari replicati, capaci di subentrare in caso di guasto dei nodi principali.
Modifiche nella release Citus 13.0:
- Transizione all'uso della branch PostgreSQL 17.
- La possibilità di utilizzare nella query distribuite la funzione JSON_TABLE() per trasformare i dati dal formato JSON a una rappresentazione relazionale, con cui è possibile lavorare come con normali tabelle PostgreSQL.
- Supporto per la sintassi «MERGE … WHEN NOT MATCHED BY SOURCE».
- Possibilità di definire il metodo di accesso per tabelle partizionate distribuite utilizzando l'espressione «CREATE TABLE … USING», così come modificare il metodo di accesso tramite «ALTER TABLE … SET ACCESS METHOD».
- Aggiunto supporto per la specifica di colonne di identificazione generate automaticamente nelle tabelle partizionate distribuite.
- Consentito l'uso di vincoli di esclusione nelle tabelle partizionate distribuite.
- Risolti problemi di sincronizzazione dei ruoli tra i nodi.
- Migliorata la distribuzione dei dati per lo sharding all'aggiunta di nuovi nodi nel cluster.
- Nella comando «EXPLAIN» sono state aggiunte le opzioni «MEMORY» e «SERIALIZE», grazie alle quali è possibile determinare la dimensione della memoria utilizzata e il tempo impiegato per la trasformazione dei dati per la trasmissione in rete.
Fonte: opennet.ru
