СУБД для enterprise-задач: особенности и области применения решений на базе Greenplum

16.12.2020
Выбирая СУБД для решения enterprise-задач, необходимо составить в голове чёткое понимание того, какие задачи должна будет решать система, и учесть ряд факторов.

Один из ключевых — возможность обрабатывать большие объемы данных. В контексте enterprise этот фактор обычно принимает более резкую форму: возможность обрабатывать любые объёмы данных. Речь идёт о горизонтальной масштабируемости системы. Когда такая потребность есть, массивно-параллельные (MPP) базы данных зачастую оказываются рентабельнее single-node СУБД. Для увеличения объёмов хранилища нет необходимости покупать очередную дорогую монстр-машину на замену старой (которую ещё надо куда-то деть) — достаточно добавить несколько более слабых.
СУБД Greenplum для Enterprise-сегмента
Второй крайне важный фактор — общая специфика использования. Тут можно выделить две основных группы – OLTP (транзакционные системы) и OLAP (аналитические системы):
  • OLTP — системы, рассчитанные на одновременную обработку большого числа относительно несложных запросов (500-600 разом и более). Например, когда необходимо вести логирование действий большого числа пользователей и затем просматривать журнал.
  • OLAP — для обработки меньшего числа сложных запросов (порядка 200-300). Подойдет, если речь идёт о проверке сложных аналитических гипотез при помощи запросов с десятком JOIN-ов, окнами и т.п.
Сейчас необходимости поддержки масштабирования и решения аналитических задач всё чаще пересекаются. Возникает потребность в аналитических распределённых OLAP-СУБД. Одна из таких баз данных — Greenplum. Это проверенная open-source технология, насчитывающая 16-летний опыт эксплуатации в крупнейших российских и зарубежных компаниях. При этом она хорошо ложится на облачный ландшафт и позволяет интегрироваться с ним намного глубже, чем другие базы данных, адаптируясь под экосистему.

Greenplum имеет “честную” MPP-архитектуру, то есть с полным отсутствием разделяемых данных (shared nothing): есть мастер-хост, на котором расположен собственно мастер (инстанс Postgres, к которому обращаются пользователи), несколько хостов, на каждом из которых располагаются сегменты (инстансы Postgres, к которым может обращаться только мастер). Отсутствие разделяемых данных позволяет обеспечить отказоустойчивость за счёт создания зеркал — как для всего мастер-хоста, так и для каждого сегмента в отдельности.

Архитектура СУБД Greenplum

Ещё одна из важных особенностей Greenplum — полная совместимость с PostgreSQL. Для подключения можно использовать драйверы для Postgres, или же, если надо воспользоваться специфичным для Greenplum функционалом, отсутствующим в “ванильном” Postgres, драйверами самого Greenplum. Это преимущество играет ключевую роль, когда есть необходимость переехать с уже существующей БД Postgres в облако.

Когда применять Greenplum

Как мы уже обсудили выше, Greenplum имеет смысл применять, когда нам нужна горизонтально масштабируемая аналитическая СУБД. Добавим немного конкретики и рассмотрим случаи, когда стоит задуматься о Greenplum:
  • Вам нужно изначально иметь хранилище объёмом не менее 1ТБ.
  • Вы ищете СУБД для подготовки операционной, управленческой, регуляторной или МСФО-отчётности.
  • Вам требуется обработка данных для программы лояльности в ритейле, next best offer, анализа чеков, логов интернет-магазинов, обработка clickstream.
  • Вы планируете проводить расширенный анализ полуструктурированных данных и их объединение с основными данными (например, обогащение данных компании из открытых источников).
  • Вас интересует скоринг клиентов, «золотая запись» о клиенте.
  • Необходимо проводить обработку данных для маркетинговых кампаний.
  • Проводится сбор и глубокая обработка данных с IoT-устройств, датчиков предприятий.
  • Вам необходим анализ данных с транспорта в системах мониторинга логистики благодаря специальному гео-расширению.
Разумеется, Greenplum в этих случаях не является единственным решением на рынке — можно использовать Vertica, Oracle или SAP Hana, имеющие аналогичную архитектуру. Однако TCO (совокупная стоимость владения) у этих систем будет значительно выше.

Ещё один “козырь” Greenplum — фреймворк PXF (Platform Extension Framework). Для его подключения необходимо установить специальный небольшой сервер на хосте с сегментами. Он с одной стороны общается с ними по проприетарному протоколу, а с другой имеет стандартизованный Java API, который позволяет подгружать плагины для параллельного обмена данными с внешними системами. “Из коробки” доступны распределённая файловая система HDFS, СУБД Apache Hive и Apache HBase и JDBC-подключения. Если надо работать с другими сервисами — довольно легко реализовать собственные плагины при помощи пары Java-классов.

Возможности виртуального хранилища на базе Arenadata DB

СУБД Greenplum гибко дополняет Hadoop. Она не просто позволяет использовать HDFS для хранения данных, а предоставляет широкие возможности по раздельному хранению партиций — можно, к примеру, одни партиции хранить на SSD (для быстрого доступа), другие, с не так активно используемыми данными, — на HDD (это дешевле), а третьи — на HDFS.

Кейсы использования Greenplum от российских компаний

За последние два года сильно выросла популярность Greenplum у ритейлеров и банков. Система помогает им быстро трансформироваться в цифровые компании, уменьшить срок time-to-market для своих продуктов и идей. Благодаря Greenplum ритейлеры и банки узнают больше о своих клиентах, лучше предсказывают их поведение, получают возможность точнее предлагать товары или банковские услуги, сокращать накладные расходы на логистику.

Система становится всё более востребованной в сферах бизнеса, где необходимо хранить и обрабатывать большие объемы данных. Среди них — логистика, IoT, производство, агропромышленность, системы безопасности, ЖКХ.

Ритейл. Первой в российском ритейле Greenplum стала использовать X5 Retail Group. Компания выбрала её, поскольку нуждалась в MPP базе данных, которая бы выдерживала большую нагрузку от пользователей. Систему должны были одновременно эксплуатировать более 2000 аналитиков, делающих порядка 800 запросов одновременно. Обычная база данных справиться с таким напором была не в состоянии.

На Greenplum команда Big Data X5 начала строить аналитический слой детальных данных с описанной моделью, бизнес-владельцами доменов, правильно привязанной Data Governance и Classic Data-Dictionary. В результате у ритейлера получился надёжный сервис, доступный любому аналитику компании. Также X5 Retail Group планирует анализировать все основные домены данных в ритейле: товары, чеки, клиентов, контрагентов.

Банки. Специалисты Тинькофф охотно делятся опытом эксплуатации Greenplum. Банк обратился к решению в тот момент, когда достиг потолка производительности SAS. Поэтому SAS-стек (ETL/ELT) был усилен Greenplum, работающей там в качестве основной СУБД КХД. В КХД решается весь спектр аналитических задач: управленческая и операционная отчетность, работа аналитиков подразделений рисков, финансового департамента, compliance. В Greenplum рассчитывается скоринг и работают маркетинговые кампании. Поверх СУБД работают различные BI-системы, суммарно несколько сотен конкурентных пользователей, SAS-стек (ETL/ELT).

Изначально Greenplum использовал только банк Тинькофф, но с консолидацией различных бизнесов в холдинг в систему вливались хранилища сторонних подразделений: страховой компании, мобильного оператора, тревел-компаний.

Arenadata DB: российское решение на базе Greenplum

Greenplum является Open Source проектом — в его доработке могут участвовать разработчики со всего мира. В 2019 году второе место в мире по числу коммитов заняла российская компания Arenadata. Наша компания опередила в том числе и китайского гиганта Alibaba Group. С 2018 года компания развивает собственную распределенную СУБД на базе Greenplum — Arenadata DB.



Arenadata DB имеет ряд преимуществ перед “ванильным” Greenplum:
  • Arenadata Cluster Manager — инструмент, значительно упрощающий установку и настройку СУБД, в том числе в закрытых ЦОДах без доступа в интернет.
  • Нативная интеграция с Arenadata Hadoop, QuickMarts (ClickHouse), Streaming (Kafka&NiFi) в рамках единой платформы Arenadata EDP и другие дополнительные возможности интеграции.
  • Система мониторинга и оповещения (Graphite и Grafana).
  • Arenadata Command Center — инструмент для работы с запросами. Он дает рекомендации по улучшению запросов и прогнозы времени работы.
  • Поддержка x86 и Power-совместимого оборудования (8, 9, OpenPower).
  • Сопровождение — доработка и развитие в соответствии с требованиями заказчика.
Отдельно стоит отметить немаловажные преимущества для заказчиков, работающих в России — это русскоязычная документация, PaaS на отечественной платформе, обучающие курсы, вебинары для пользователей и техподдержка 24/7 в Москве, Санкт-Петербурге, Ростове-на-Дону, Хабаровске и Алма-Ате.

Подробное сравнение возможностей редакций Greenplum смотрите в таблице ниже:
Функционал Greenplum Open Source ADB Community Edition ADB Enterprise Edition
Core DB + + +
ZSTD + + +
PXF Predicate Pushdown +/- + +
Коннектор ADS (Kafka) -> ADB +
Коннектор ADB -> ADQM (ClickHouse) +
Коннектор ADB Hadoop + + +
Коннектор ADB JDBC + + +
Jsonb + + +
Command Center (ADCC, running queries monitoring, resource management, etc) +
Expansion wizard + +
Offline installation + +
Monitoring & Alerting + +
Deploy and upgrade automation + +
Backup storage system +
Advanced DBA RBAC control (for ADCM, ADCC and backups) +
Education trainings + +

Arenadata DB и облако

В отличие от многих других систем, создававшихся для single node, а затем адаптированных для использования на нескольких машинах, Greenplum изначально разрабатывался как массивно-параллельная система, способная работать на нескольких сотнях серверов и расширяться вместе с линейным ростом производительности. В результате, Arenadata DB безупречно подходит для работы в enterprise-облаке:
  • Со стороны пользователя Arenadata DB выглядит как обычная база данных Postgres.
  • Возможность быстрого старта — Greenplum изначально рассчитан на установку и работу в облаке, а Arenadata Cluster Manager позволяет упростить процесс ещё сильнее.
  • Возможность быстрого переезда — полная поддержка PostgreSQL позволяет не переписывать SQL-запросы для изначально существовавших Postgres-БД, а также не требует переучивать аналитиков.
  • Мониторинг и бэкапы.
  • Обновления и best practice настройки.
  • Открытый исходный код Greenplum — проще вносить изменения.
  • Интеграция с облачным IaaS, биллингом, гипервизором и системой развёртывания в случае Greenplum может быть выполнена на очень глубоком уровне. Это положительно сказывается на гибкости, надежности и производительности.
У облачной архитектуры есть ряд проблем, которые требуют решения. Подключение к внешним системам — одно из потенциальных “бутылочных горлышек” любой подобной системы. В данном случае эта проблема решена за счёт того, что PXF поддерживает параллельный обмен данными с внешними системами. Если на той стороне будет кластерная система, то Greenplum обеспечивает взаимодействие вида “кластер-кластер”, и в итоге скорость взаимодействия между системами по мере расширения этих систем не падает, а только растёт. При этом взаимодействие будет со стороны Greenplum транзакционным. Вот пример взаимодействия с Oracle:

SQL-код взаимодействия Greenplum с Oracle

Тут создаётся так называемая внешняя таблица — это похоже на DB Link, таблица не хранит в себе данные, она лишь указывает Greenplum, куда ему идти при обращении к ней. Далее в ней следует описание стандартных данных — драйвер, URL, логин-пароль. А затем идут настройки, специфичные для Greenplum: указания о том, как “поделить” данные во внешней таблице: Greenplum будет забирать данные по ID от 1 до 1000000 интервалами по 10000 записей – он сформирует 100 параллельных запросов с WHERE-условиями на забор 10000 записей в каждом. Необходимо учитывать особенности внешних систем — если, например, таблица в Oracle не партиционирована по ID, ему придётся провести 100 полных проходов по таблице. На такое ему может не хватить производительности.

Другая проблема облачных БД — работа сложных аналитических алгоритмов, в том числе алгоритмов машинного обучения. Встают как вопросы их распределения, так и безопасности. Greenplum предоставляет два основных пути реализации подобных алгоритмов: использование скриптов на Python и работа прямо из SQL при помощи библиотеки MadLib. В первом случае распределение происходит путём написания алгоритма в отдельных функциях: одной, которая будет выполняться на каждом сегменте, мастер-функции (для объединения результатов) и финальной — для пост-обработки. Безопасность обеспечивается путём запуска Python в Docker-контейнерах (отдельный контейнер для каждого сегмента). Максимум, что может сделать пользователь — уничтожить созданный для него контейнер. В контейнеры также можно подгрузить любые необходимые модули Python. Во втором случае безопасность системы гарантируется ограничением прав доступа внутри БД, а все основные возможности машинного обучения реализованы библиотекой. Для алгоритмов машинного обучения имеет смысл использовать GPU — Greenplum поддерживает их использование.

Функционал Greenplum 6

Осенью 2019 года вышел очередной major релиз СУБД. В разработке участвовало несколько компаний, в том числе и Arenadata. В новой версии продукта появились следующие важные фичи:
  • Реплицированные таблицы: таблицы, в полном объёме дублирующиеся на всех сегментах. Любой JOIN с такой таблицей в правой части всегда проводится локально, так как нет необходимости в перераспределении данных по сегментам кластера.
  • Алгоритм компрессии Zstandard (ZSTD): имеет по сравнению с используемым по умолчанию алгоритмом Zlib как более высокие коэффициенты сжатия, так и меньшее время компрессии и декомпрессии. Это обновление ранее было доступно только пользователям решений Arenadata, теперь — всем желающим.
  • Новый механизм горизонтального расширения кластеров: теперь расширение происходит гораздо быстрее и не требует перезапуска системы.
  • Безопасность на уровне столбцов — теперь можно выдавать права на отдельные колонки точно так же, как на другие объекты, например, таблицы.
  • JSONB: оптимальное бинарное хранение объектов типа JSON.
  • Auto Explain: возможность автоматического сохранения ключевых данных для запросов: план запроса, потребление ресурсов, время, количество строк — по сегментам или узлам.
  • Дисковые квоты: позволяет ограничивать доступный отдельным пользователям и схемам объём дискового хранилища.
Это те возможности, которые доступны для всех пользователей Greenplum. Некоторые новые фичи есть только в Arenadata DB 6:
  • Tkhemali Connector: позволяет перенести данные из Greenplum в ClickHouse.
  • Kafka Connector: позволяет перенести данные из Greenplum в Kafka.
  • Система управления и мониторинга Arenadata Cluster Manager (ADCM): позволяет в реальном времени видеть прогресс выполнения текущих запросов, их план, этапы выполнения, распределение по кластеру и другие метрики, а также просматривать исторические данные.
  • Arenadata Second Storage: позволяет создавать потабличные бекапы и Disaster recovery.

Arenadata DB в облаке Mail.ru

Arenadata DB также доступна как PaaS (platform as a service) — например, в MCS (Mail.ru Cloud Solutions). При этом MCS берёт на себя вопросы IT-инфраструктуры, хостинга и администрации СУБД. Настройки машин также проводятся MCS на основе выбираемых клиентом характеристик.

В облаке доступна интеграция с другими расположенными в нём системами — Mail.ru Cloud Big Data (Hadoop, Spark, Airflow, Clickhouse и др.), все они настраиваются из единого интерфейса. Также доступно решение для миграции данных в Arenadata DB при помощи Live Platform Migration.

Arenadata DB в облаке Mail.ru

Вместо заключения

Проверка гипотез — единственный источник знаний, который станет ключевым фактором в установке корректного курса перехода на оптимальную СУБД. Чем быстрее идёт этот процесс, тем меньше будет затрачено времени на принятие решений. Ускорить проверку гипотез можно за счёт двух факторов:
  • возможности параллелизма проверок;
  • минимизации накладных расходов на проверку.
Оба этих фактора зависят от возможностей по организации «песочниц». Для быстрого создания тестовых сред, в которых можно проверять гипотезы, проводить разнообразные вычисления, при этом минимизируя расходы на оборудование, отлично подходят PaaS решения, например от Mail.Ru Cloud Solutions.

Ещё один способ минимизировать затраты на тестирование гипотез — использование Open Source проектов. Особенно для облачных разработок, варианты с открытым исходным кодом предлагают малорискованный способ попробовать проверенные инструменты, влиять и вносить свой вклад в развитие используемых продуктов, быстро адаптировать решения под свою специфику.

Ну и последний из советов — при внедрении нового хранилища данных и замене устаревших и legacy-систем, желательно учитывать в требованиях к новой системе возможность работы в Multi-cloud среде, а также стоит позаботится об интеграции с используемыми вами On-premise решениями.

Читайте также

все новости
ошибка! проверьте правильно ли вы заполнили поле Email

Этот сайт использует cookie-файлы и другие технологии, чтобы помочь вам в навигации, а также предоставить лучший пользовательский опыт, анализировать использование наших продуктов и услуг, повысить качество рекламных и маркетинговых активностей.