Компания Citus Data, принадлежаща на Microsoft, публикува разпределена СУБД Citus 13.0, реализирана под формата на разширение към PostgreSQL 17. Citus осигурява хоризонтално мащабиране на PostgreSQL в клъстер, базиран на стандартно оборудване и позволява разпределяне на данни по възли чрез шардинг (sharding) с настройка на разпределението на ниво колони и схема на съхранение. За приложенията, клъстерът Citus изглежда като един голям PostgreSQL сървър, обединяващ ресурсите на образуващите го възли. Кодът е написан на C и се разпространява под лиценз AGPLv3.
Шардингът позволява организиране на съхранение на много голям обем данни, чийто общ размер значително надвишава локалните носители на всеки от възлите в клъстера. Отделни таблици могат да бъдат принудително реплицирани на всички възли, за да се ускори изпълнението на операции по сливане и работа с външни ключове. За икономия на дисково пространство, разпределените по различни възли данни могат да се съхраняват в компресиран вид.
Разпределените заявки могат да бъдат изпращани на който и да е от възлите на клъстера, но управлението и промяната на схемата на данните трябва да се извършват само през узел, който координира работата на клъстера. Заявките от клиентите се разпределят по необходимите възли и, ако обхващат няколко възла, тяхната обработка се разпаралелизира. Клъстерът може да бъде разширен с растежа на размера на съхраняваните данни, като се добавят допълнителни възли и инициира ребалансировка.
Като типични примери за използване на Citus се отбелязват изпълнението на аналитични заявки и обработката на големи масиви от данни под формата на времеви ред (например, логове или анкети на състоянието на сензорите). Citus също е подходящ за модернизация на съществуващата инфраструктура на база един единствен сървър PostgreSQL, чиято производителност и носители вече не стигат заради увеличението на натоварването или обема на постъпващите данни. С помощта на инструмента Patroni могат да бъдат създадени отказоустойчиви конфигурации с реплицирани резервни възли, способни в случай на повреда да заемат мястото на основните възли.
Промени в версия Citus 13.0:
- Придвижване към използване на клон PostgreSQL 17.
- Възможност за използване в разпределени заявки на функцията JSON_TABLE() за преобразуване на данни от JSON формат в релационно представяне, с което може да се работи като с обикновени таблици на PostgreSQL.
- Подкрепа за синтаксиса „MERGE … WHEN NOT MATCHED BY SOURCE“.
- Възможност за определяне на метода на достъп за разпределени секционирани таблици чрез израза „CREATE TABLE … USING“, а също и промяна на метода на достъп чрез „ALTER TABLE … SET ACCESS METHOD“.
- Добавена е подкрепа за указване на автоматично генерирани колони за идентификация в разпределени секционирани таблици.
- Разрешено е прилагането на ограничения-изключения в разпределени секционирани таблици.
- Решени са проблемите със синхронизацията на ролите между възлите.
- Подобрено е разпределението на данни за шардинг при добавяне на нови възли в кластера.
- В командата „EXPLAIN“ са добавени опциите „MEMORY“ и „SERIALIZE“, с които може да се определи размерът на използваната памет и времето, прекарано за преобразуване на данни за предаване по мрежата.
Източник: opennet.ru
