Spoločnosť Citus Data, ktorá patrí Microsoftu, zverejnila distribuovanú databázu Citus 13.0, implementovanú ako rozšírenie pre PostgreSQL 17. Citus zabezpečuje horizontálne škálovanie PostgreSQL v clustre na základe štandardného hardvéru a umožňuje rozloženie dát po uzloch prostredníctvom shardovania s nastavením delenia na úrovni stĺpcov a schémy ukladania. Pre aplikácie vyzerá klaster Citus ako jeden veľký server PostgreSQL, ktorý spája zdroje jeho uzlov. Kód je napísaný v jazyku C a je distribuovaný pod licenciou AGPLv3.
Shardovanie umožňuje organizovať ukladanie veľmi veľkých objemov dát, ktorých celková veľkosť výrazne presahuje lokálne úložiská každého z uzlov klastra. Samostatné tabuľky môžu byť nútene replikované na všetky uzly na urýchlenie vykonávania operácií zlúčenia a práce s externými kľúčmi. Pre úsporu diskového priestoru môžu byť distribuované dáta uložené v komprimovanej forme.
Distribuované dotazy môžu byť zasielané na ktorýkoľvek z uzlov klastra, ale správa a zmeny schémy údajov by sa mali vykonávať iba prostredníctvom uzla, ktorý koordinuje prácu klastra. Požiadavky od klientov sú rozdeľované na potrebné uzly a ak pokrývajú niekoľko uzlov, ich spracovanie je paralelizované. Klaster je možné rozšíriť v závislosti od rastu objemu uložených dát pridaním ďalších uzlov a iniciovaním rebalance.
Ako typické príklady použitia Citus sa uvádza vykonávanie analytických dotazov a spracovanie veľkých objemov dát vo forme časového radu (napríklad logy alebo dotaz na stav senzorov). Citus je tiež vhodný na modernizáciu existujúcej infraštruktúry založenej na jednotlivom servera PostgreSQL, ktorého výkon a úložiská prestali postačovať z dôvodu zvyšovania zaťaženia alebo objemu prichádzajúcich dát. S pomocou nástroja Patroni je možné vytvárať vysoko dostupné konfigurácie s replikovanými záložnými uzlami, schopnými v prípade zlyhania zaberé miesto hlavných uzlov.
Zmeny v vydaní Citus 13.0:
- Prechod na používanie vetvy PostgreSQL 17.
- Možnosť použitia v distribuovaných požiadavkách funkcie JSON_TABLE() na transformáciu údajov z formátu JSON do relačného zobrazenia, s ktorým je možné pracovať ako s bežnými tabuľkami PostgreSQL.
- Podpora syntaxe „MERGE … WHEN NOT MATCHED BY SOURCE“.
- Možnosť určiť metódu prístupu pre distribuované rozdelené tabuľky pomocou výrazu „CREATE TABLE … USING“, ako aj zmeny metódy prístupu cez „ALTER TABLE … SET ACCESS METHOD“.
- Pridaná podpora pre určovanie v distribuovaných rozdelených tabuľkách automaticky generovaných stĺpcov identifikácie.
- Povolené použitie obmedzení-exklúzií v distribuovaných rozdelených tabuľkách.
- Riešené problémy so synchronizáciou rolí medzi uzlami.
- Zlepšené rozdeľovanie údajov pre shardovanie pri pridávaní nových uzlov do klastre.
- Do príkazu „EXPLAIN“ boli pridané možnosti „MEMORY“ a „SERIALIZE“, pomocou ktorých je možné určiť veľkosť použitej pamäte a čas strávený na transformácii údajov na prenos cez sieť.
Zdroj: opennet.ru
