Опубликована распределённая СУБД Citus 13.0

Компания Citus Data, принадлежащая Microsoft, опубликовала распределённую СУБД Citus 13.0, реализованную в форме расширения к PostgreSQL 17. Citus обеспечивает горизонтальное масштабирование PostgreSQL в кластере на базе типового оборудования и позволяет разносить данные по узлам при помощи шардинга (sharding) с настройкой разделения на уровне столбцов и схемы хранения. Для приложений кластер Citus выглядит как один большой сервер PostgreSQL, объединяющий ресурсы образующих его узлов. Код написан на языке Си и распространяется под лицензией AGPLv3.

Шардинг позволяет организовать хранение очень большого объёма данных, суммарный размер которых существенно превышает локальные накопители каждого из узлов кластера, а реплицирование на несколько узлов обеспечивает отказоустойчивость и позволяет сохранить работоспособность при выходе из строя отдельных узлов. Поступающие от клиентов запросы распараллеливаются по имеющимся серверам для обеспечения предсказуемого времени выполнения запроса к большим массивам данных, пополняемым в режиме реального времени.

Изменения в выпуске 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”, при помощи которых можно определить размер использованной памяти и время, потраченное на преобразование данных для передачи по сети.
Release. Ссылка here.