Citus Data, una società di Microsoft, ha rilasciato il database distribuito Citus 13.0, implementato come estensione di PostgreSQL 17. Citus offre scalabilità orizzontale di PostgreSQL in un cluster su hardware standard e consente di distribuire i dati su nodi tramite sharding, con configurazione per la suddivisione a livello di colonne e schema di archiviazione. Per le applicazioni, il cluster Citus appare come un singolo grande server PostgreSQL che unisce le risorse dei nodi che lo compongono. Il codice è scritto in C e distribuito sotto licenza AGPLv3.
Lo sharding consente di organizzare l'archiviazione di un volume di dati molto grande, il cui dimensione totale supera di gran lunga i supporti locali di ciascun nodo del cluster. Tabelle separate possono essere replicate su tutti i nodi per velocizzare le operazioni di fusione e il lavoro con le chiavi esterne. Per risparmiare spazio su disco, i dati distribuiti su nodi diversi possono essere memorizzati in forma compressa.
Le richieste distribuite possono essere inviate a qualsiasi nodo del cluster, ma la gestione e la modifica dello schema dei dati devono essere effettuate solo attraverso il nodo che coordina il funzionamento del cluster. Le richieste provenienti dai clienti sono distribuite ai nodi necessari e, se coprono più nodi, il loro elaborazione viene parallelizzata. Il cluster può essere ampliato man mano che le dimensioni dei dati memorizzati aumentano, aggiungendo nodi aggiuntivi e avviando un riequilibrio.
Tra i casi d'uso tipici di Citus si trovano l'esecuzione di query analitiche e l'elaborazione di grandi volumi di dati sotto forma di serie temporali (ad esempio, log o interrogazioni sullo stato dei sensori). Citus è anche adatto per modernizzare l'infrastruttura esistente basata su un singolo server PostgreSQL, le cui prestazioni e archiviazione non sono più sufficienti a causa dell'aumento del carico o del volume dei dati in arrivo. Utilizzando gli strumenti di Patroni, è possibile creare configurazioni ad alta disponibilità con nodi di backup replicati, in grado di subentrare ai nodi principali in caso di guasto.
Modifiche nella release Citus 13.0:
- Passaggio all'utilizzo della versione PostgreSQL 17.
- Possibilità di utilizzare nella query distribuita la funzione JSON_TABLE() per convertire i dati dal formato JSON a una rappresentazione relazionale, con cui poter lavorare come con le normali tabelle PostgreSQL.
- Supporto per la sintassi «MERGE … WHEN NOT MATCHED BY SOURCE».
- Possibilità di definire il metodo di accesso per le tabelle partizionate distribuite tramite l'espressione «CREATE TABLE … USING», nonché di 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 con l'aggiunta di nuovi nodi al cluster.
- Aggiunte opzioni «MEMORY» e «SERIALIZE» al comando «EXPLAIN», per definire la dimensione della memoria utilizzata e il tempo impiegato per trasformare i dati per la trasmissione in rete.
Fonte: opennet.ru
