Společnost Citus Data, patřící Microsoftu, publikovala distribuovanou DBMS Citus 13.0, implementovanou jako rozšíření pro PostgreSQL 17. Citus umožňuje horizontální škálování PostgreSQL v clusterech na bázi standardního hardwaru a umožňuje rozložení dat mezi uzly pomocí shardingu s nastavením dělení na úrovni sloupců a schématu ukládání. Pro aplikace vypadá cluster Citus jako jeden velký server PostgreSQL, který spojuje zdroje jeho uzlů. Kód je napsán v jazyce C a je distribuován pod licencí AGPLv3.
Sharding umožňuje organizovat ukládání velmi velkého objemu dat, jehož celková velikost výrazně přesahuje místní úložiště každého uzlu clustera. Kontrolované tabulky mohou být nuceně replikovány na všechny uzly pro urychlení provádění operací sloučení a práce s cizími klíči. Pro úsporu diskového prostoru mohou být data rozložená na různých uzlech ukládána ve zkomprimované podobě.
Distribuované dotazy mohou být odesílány na libovolný z uzlů clustera, ale správa a změna datového schématu musí probíhat pouze prostřednictvím uzlu, který koordinuje práci clustera. Příchozí požadavky od klientů jsou distribuovány po potřebných uzlech a pokud pokrývají několik uzlů, jejich zpracování je paralelizováno. Cluster lze rozšiřovat, jakmile roste objem ukládaných dat, přidáváním dalších uzlů a iniciováním rebalance.
Mezi typické příklady použití Citus patří provádění analytických dotazů a zpracování velkých objemů dat ve formě časového pásma (například logy nebo dotazy na stav snímačů). Citus je také vhodný pro modernizaci stávající infrastruktury založené na jednom serveru PostgreSQL, jehož výkon a úložiště přestaly stačit kvůli rostoucí zátěži nebo objemu přicházejících dat. S pomocí nástroje Patroni lze vytvářet odolné konfigurace s replikovanými náhradními uzly, schopnými v případě selhání zaujmout místo hlavních uzlů.
Změny ve verzi Citus 13.0:
- Přechod na použití verze PostgreSQL 17.
- Možnost použití funkce JSON_TABLE() v distribuovaných dotazech pro převod dat z formátu JSON do relačního zobrazení, se kterým lze pracovat jako s běžnými tabulkami PostgreSQL.
- Podpora syntaxe „MERGE … WHEN NOT MATCHED BY SOURCE“.
- Možnost definice metody přístupu pro distribuované dělené tabulky pomocí výrazu „CREATE TABLE … USING“, a také změna metody přístupu přes „ALTER TABLE … SET ACCESS METHOD“.
- Byla přidána podpora pro určení automaticky generovaných identifikačních sloupců v distribuovaných dělených tabulkách.
- Povoleno použití výjimečných omezení v distribuovaných dělených tabulkách.
- Vyřešeny problémy se synchronizací rolí mezi uzly.
- Zlepšeno rozložení dat pro shardování při přidání nových uzlů do clusteru.
- Do příkazu „EXPLAIN“ byly přidány možnosti „MEMORY“ a „SERIALIZE“, pomocí kterých je možné určit velikost použité paměti a čas strávený převodem dat pro přenos po síti.
Zdroj: opennet.ru
