Чтобы предоставить клиентам возможность одновременно работать и с транзакционными, и с аналитическими нагрузками, обращаясь при этом к одним и тем же данными, специалисты компании Cloud X (входит в En+ Group) реализовали связку аналитической СУБД и СУБД реального времени — так появился продукт Cloud X Stratus DB. Что важно, в нем изначально предусмотрен облачный вариант развертывания, причем на инфраструктуре ЦОДов, находящихся на значительном удалении друг от друга, например, в разных регионах. Кроме того, продукт может использоваться в качестве хранилища данных на всех стадиях жизненного цикла моделей машинного обучения. Об истории проекта и подробностях реализации решения рассказывает Владимир Пугачев, главный архитектор больших данных компании Cloud X, номинант на премию Data Award.

- Что предшествовало появлению вашего решения?

Как известно, существующие СУБД создавались для решения определенного круга задач, поэтому чтобы эффективно использовать данные, организации вынуждены создавать целые комплексы взаимосвязанных решений. Нередко, например, встречается интеграция хранилищ на базе Greenplum, Hadoop, S3, ClickHouse и т. п. Обеспечить согласованность данных в таких комплексах весьма непросто, поэтому активно развиваются решения для объединения разнородных систем хранения и обработки данных под одним «зонтиком». Яркий пример такого решения — продукт Apache Trino, призванный стать единой точкой входа для запросов аналитики больших данных.

Чтобы использовать такие продукты при создании облачных платформ данных, необходимо, чтобы они отвечали ряду дополнительных требований, одним из которых является мультиарендность. А вот тут все не так просто.

После того, как лицензия Greenplum подверглась существенной модификации, будущее этой популярной аналитической СУБД с открытым кодом оказалось весьма туманным. Компании, которые ее использовали, теперь вынуждены пытаться продолжить развитие дистрибутива своими силами, сохраняя при этом открытые лицензии.

Параллельно набирает зрелость продукт с открытым исходным кодом Citus, основанный на СУБД PostgreSQL, но развивающийся в рамках другой, более совершенной парадигмы распределенных реляционных СУБД. В 2019 году компания Microsoft приобрела компанию Citus Data, занимающуюся развитием CitusDB. Эта СУБД обеспечивает горизонтальное масштабирование PostgreSQL в кластерной конфигурации с разбиением пространства хранения на логические разделы (partitioning) и с возможностью репликации. Что важно, после завершения сделки продукт CitusDB сохранил статус open source.

В нашем проекте Cloud X Stratus DB, основанном на CitusDB, мы реализовали связку аналитической СУБД и СУБД реального времени, обеспечив при этом возможность распространения данных между кластерами.

- На устранение каких проблем или на выполнение каких задач ориентировано ваше решение?

Один из постулатов архитектурного подхода Lakehouse, который пришел на смену Data Lake, гласит, что разные типы данных должны храниться в СУБД, наиболее подходящих для работы именно с этими типами данных, при этом разнородные хранилища должны быть интегрированы и, что немаловажно для облака, они должны обеспечивать межрегиональную репликацию.

Мы видим, что клиенты все чаще используют решения на базе «тандема» PostgreSQL и ClickHouse, в котором первый поддерживает транзакционные рабочие нагрузки, а второй — аналитические. Каждая из этих СУБД изначально создавалась и затем оптимизировалась в расчете на свой тип рабочих нагрузок.

Распространенным подходом к интеграции этих СУБД является захват изменения данных (Change Data Capture, CDC). В рамках этого подхода обеспечивается непрерывное отслеживание вставок, обновлений и удалений в PostgreSQL и их репликация в ClickHouse — таким образом реализуется аналитика данных в реальном времени. Помимо этого, необходимо обеспечить и межкластерную репликацию данных — это особенно важно для облачных решений, развернутых на базе нескольких ЦОДах в разных регионах.

- Почему эта задача настолько важна?

Распределенные базы данных, которые обеспечивают высокую степень доступности и малую величину задержек с помощью репликации, должны найти фундаментальный компромисс между согласованностью чтения, доступностью, временем задержек и пропускной способностью, как определено теоремой PACELC.

Предоставить клиенту возможность регулировать уровень согласованности между сильным и окончательным — очень непростая задача. Да, модель строгой согласованности является золотым стандартом организации данных. Но она увеличивает задержки в операциях записи, поскольку данные должны реплицироваться и фиксироваться на больших расстояниях. Кроме того, сильная согласованность может страдать от снижения доступности (например, во время сбоев), поскольку данные в подобных случаях не могут реплицироваться и фиксироваться в каждом из регионов.

- Каковы ключевые преимущества вашего решения?

Использование в Cloud X Stratus DB одноранговой связки Citus-ClickHouse позволяет решить практически полный спектр корпоративных задач в информационных системах, ориентированных как на потоковый, так и на пакетный характер работы с данными.

- На каких технологиях и платформах оно реализовано?

СУБД Cloud X Stratus DB представляет собой комплекс взаимосвязанных, предварительно настроенных компонентов с открытым исходным кодом: Citus (на основе Postgres), ClickHouse и Kafka. В решении используется мультиарендная связка продуктов Citus и ClickHouse, обладающих возможностью встроенной интеграции. При этом Citus используется для хранения данных, основанных на реляционных моделях, а ClickHouse — для хранения в первую очередь данных временных рядов (событий, связанных с аудитом, биллингом и т. п.), а также в качестве хранилища для экспортных витрин. С помощью инструментов CDC и сервисов переноса данных (Data Transfer Service, DTS) производится репликация на другой региональный инстанс Cloud X Stratus DB в режиме близком к реальному времени.

Cloud X Stratus DB уже используется в платформе данных облачного решения Cloud X, причем на всем спектре задач функционирования облачной инфраструктуры.

- Какие данные могут использоваться в вашем решении?

Cloud X Stratus DB сочетает в себе возможности хранения и обработки транзакционных данных, выступая в роли реляционной СУБД, и кроме того, обладает возможностью колоночного хранения данных, применяемого для аналитики реального времени.

Продукт также может использоваться в качестве хранилища данных на всех стадиях жизненного цикла моделей машинного обучения. Следует учесть, что тот же ClickHouse является естественным источником данных для моделей машинного обучения (например, трафика кликов) и хорошо подходит на роль механизма трансформации данных: вместо их потоковой передачи из существующей базы данных в вычислительные фреймворки, такие как Spark, данные можно хранить в Stratus DB, при этом любая работа, связанная с исследованием данных или их преобразованием, выполняется в источнике.

- Какую функциональность или особенность решения вы считаете наиболее интересной?

Одна из «фишек» нашего решения — это сервисы CDC и DTS для связки Citus-ClickHouse: с их помощью достигается определенного уровня согласованность кластеров в разных регионах.

- Каков портрет типичного заказчика вашего решения?

Проект нацелен в первую очередь на создание облачных платформ данных, в частности, тех, что развернуты на достаточно удаленных друг от друга серверных площадках — например, расположенных в разных регионах. Вместе с тем, ничто не мешает применять наше решение в качестве платформы данных организаций различного уровня. Cloud X Startus DB охватывает возможности корпоративного хранилища данных (КХД), аналитической СУБД реального времени и, как я уже сказал, позволяет работать как транзакционными, так и аналитическими видами нагрузок.

- Каковы успехи решения на рынке?

В настоящее время СУБД Cloud X Stratus DB развернута на площадке для опытно-промышленной эксплуатации внутренних компонентов облака, в котором смоделировано несколько регионов с несколькими зонами доступности в каждом. Сейчас система содержит несколько десятков терабайт данных.

Благодаря использованию Kubernetes эта СУБД обладает всеми преимуществами самого известного оркестратора контейнеров и может быть оперативно развернута в любом ЦОДе. Кроме того, осуществляется межрегиональная репликация данных с использованием нескольких уровней их согласованности.

- В чем вы видите значимость вашего продукта для рынка?

Благодаря нашему решению клиенты получат уже настроенную облачную распределенную экосистему, тогда как другие поставщики могут предложить лишь разрозненные КХД и другие СУБД для решения отдельных специализированных задач.

- В каком направлении планируете развивать решение?

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