- OLTP — системы, рассчитанные на одновременную обработку большого числа относительно несложных запросов (500-600 разом и более). Например, когда необходимо вести логирование действий большого числа пользователей и затем просматривать журнал.
- OLAP — для обработки меньшего числа сложных запросов (порядка 200-300). Подойдет, если речь идёт о проверке сложных аналитических гипотез при помощи запросов с десятком JOIN-ов, окнами и т.п.
Greenplum имеет “честную” MPP-архитектуру, то есть с полным отсутствием разделяемых данных (shared nothing): есть мастер-хост, на котором расположен собственно мастер (инстанс Postgres, к которому обращаются пользователи), несколько хостов, на каждом из которых располагаются сегменты (инстансы Postgres, к которым может обращаться только мастер). Отсутствие разделяемых данных позволяет обеспечить отказоустойчивость за счёт создания зеркал — как для всего мастер-хоста, так и для каждого сегмента в отдельности.
Ещё одна из важных особенностей Greenplum — полная совместимость с PostgreSQL. Для подключения можно использовать драйверы для Postgres, или же, если надо воспользоваться специфичным для Greenplum функционалом, отсутствующим в “ванильном” Postgres, драйверами самого Greenplum. Это преимущество играет ключевую роль, когда есть необходимость переехать с уже существующей БД Postgres в облако.
Когда применять Greenplum
Как мы уже обсудили выше, Greenplum имеет смысл применять, когда нам нужна горизонтально масштабируемая аналитическая СУБД. Добавим немного конкретики и рассмотрим случаи, когда стоит задуматься о Greenplum:- Вам нужно изначально иметь хранилище объёмом не менее 1ТБ.
- Вы ищете СУБД для подготовки операционной, управленческой, регуляторной или МСФО-отчётности.
- Вам требуется обработка данных для программы лояльности в ритейле, next best offer, анализа чеков, логов интернет-магазинов, обработка clickstream.
- Вы планируете проводить расширенный анализ полуструктурированных данных и их объединение с основными данными (например, обогащение данных компании из открытых источников).
- Вас интересует скоринг клиентов, «золотая запись» о клиенте.
- Необходимо проводить обработку данных для маркетинговых кампаний.
- Проводится сбор и глубокая обработка данных с IoT-устройств, датчиков предприятий.
- Вам необходим анализ данных с транспорта в системах мониторинга логистики благодаря специальному гео-расширению.
Ещё один “козырь” Greenplum — фреймворк PXF (Platform Extension Framework). Для его подключения необходимо установить специальный небольшой сервер на хосте с сегментами. Он с одной стороны общается с ними по проприетарному протоколу, а с другой имеет стандартизованный Java API, который позволяет подгружать плагины для параллельного обмена данными с внешними системами. “Из коробки” доступны распределённая файловая система HDFS, СУБД Apache Hive и Apache HBase и JDBC-подключения. Если надо работать с другими сервисами — довольно легко реализовать собственные плагины при помощи пары Java-классов.
СУБД 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).
- Сопровождение — доработка и развитие в соответствии с требованиями заказчика.
Подробное сравнение возможностей редакций 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 может быть выполнена на очень глубоком уровне. Это положительно сказывается на гибкости, надежности и производительности.
Тут создаётся так называемая внешняя таблица — это похоже на 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: возможность автоматического сохранения ключевых данных для запросов: план запроса, потребление ресурсов, время, количество строк — по сегментам или узлам.
- Дисковые квоты: позволяет ограничивать доступный отдельным пользователям и схемам объём дискового хранилища.
- 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.
Вместо заключения
Проверка гипотез — единственный источник знаний, который станет ключевым фактором в установке корректного курса перехода на оптимальную СУБД. Чем быстрее идёт этот процесс, тем меньше будет затрачено времени на принятие решений. Ускорить проверку гипотез можно за счёт двух факторов:- возможности параллелизма проверок;
- минимизации накладных расходов на проверку.
Ещё один способ минимизировать затраты на тестирование гипотез — использование Open Source проектов. Особенно для облачных разработок, варианты с открытым исходным кодом предлагают малорискованный способ попробовать проверенные инструменты, влиять и вносить свой вклад в развитие используемых продуктов, быстро адаптировать решения под свою специфику.
Ну и последний из советов — при внедрении нового хранилища данных и замене устаревших и legacy-систем, желательно учитывать в требованиях к новой системе возможность работы в Multi-cloud среде, а также стоит позаботится об интеграции с используемыми вами On-premise решениями.