Citus Data, som tillhör Microsoft, har publicerat den distribuerade databashanteraren Citus 13.0, implementerad som ett tillÀgg till PostgreSQL 17. Citus möjliggör horisontell skalning av PostgreSQL i en klusterbaserad lösning pÄ standardhÄrdvara och gör det möjligt att distribuera data över noder med hjÀlp av sharding, med instÀllningar för partitionering pÄ kolumnnivÄ och lagringsschema. För applikationer ser Citus-klustret ut som en stor PostgreSQL-server som sammanför resurserna frÄn sina noder. Koden Àr skriven i C och distribueras under AGPLv3-licens.
Sharding gör det möjligt att organisera lagring av mycket stora datamÀngder vars totala storlek överstiger de lokala lagringsenheterna för varje nod i klustret. Enskilda tabeller kan tvingas replikeras pÄ alla noder för att pÄskynda exekveringen av sammanslagningsoperationer och arbete med utlÀndska nycklar. För att spara diskutrymme kan data som distribueras över olika noder lagras i komprimerad form.
Distribuerade frÄgor kan skickas till vilken nod som helst i klustret, men administration och Àndringar av dataskeman bör endast göras via den nod som koordinerar klustrets arbete. FörfrÄgningar frÄn klienter distribueras till de noder som behöver det, och om de omfattar flera noder parallellbearbetas deras exekvering. Klustret kan utökas i takt med att mÀngden lagrad data vÀxer, genom att lÀgga till fler noder och initiera ombalansering.
Typiska exempel pÄ anvÀndning av Citus inkluderar exekvering av analytiska frÄgor och hantering av stora datamÀngder i form av tidsserier (till exempel loggar eller statusfrÄgor frÄn sensorer). Citus Àr ocksÄ lÀmplig för att modernisera befintlig infrastruktur baserad pÄ enstaka servern PostgreSQL, vars prestanda och lagringskapacitet har blivit otillrÀcklig pÄ grund av ökande belastning eller volym av inkommande data. Med hjÀlp av verktygen i Patroni kan man skapa felfria konfigurationer med replikatoriska reservnoder som, vid fel, kan ta platsen för huvudnoder.
Ăndringar i Citus 13.0:
- ĂvergĂ„ng till att anvĂ€nda PostgreSQL 17.
- Möjlighet att anvÀnda funktionen JSON_TABLE() i distribuerade frÄgor för att konvertera data frÄn JSON-format till ett relationellt format som kan hanteras som vanliga PostgreSQL-tabeller.
- Stöd för syntaxen "MERGE ⊠WHEN NOT MATCHED BY SOURCE".
- Möjlighet att specificera Ätkomstmetoden för distribuerade partitionerade tabeller med hjÀlp av uttrycket "CREATE TABLE ⊠USING", samt Àndra Ätkomstmetoden med "ALTER TABLE ⊠SET ACCESS METHOD".
- Stöd för att ange automatiskt genererade identifieringskolumner i distribuerade partitionerade tabeller har lagts till.
- TillÀmpning av undantagsbegrÀnsningar i distribuerade partitionerade tabeller Àr nu tillÄtet.
- Problem med synkronisering av roller mellan noder har ÄtgÀrdats.
- FörbÀttrad datadistribution för sharding vid tillÀgg av nya noder i klustret.
- "EXPLAIN"-kommandot har fÄtt alternativen "MEMORY" och "SERIALIZE", med vilka man kan bestÀmma mÀngden minne som anvÀnts och tid som lagts pÄ att omvandla data för nÀtverksöverföring.
KĂ€lla: opennet.ru
