Для хранения информации традиционно используют базы данных. Но когда объем сведений растет, классических инструментов перестает хватать. Поэтому компании используют специальные сервисы, чтобы хранить и анализировать большие данные.
Один из таких инструментов — Greenplum, распределенная СУБД для работы с аналитикой. Рассказываем, что это такое и для каких задач ее используют.
Что такое Greenplum
Greenplum — это распределенная система управления базами данных (СУБД) для работы с Big Data и сложной аналитикой. Она основана на PostgreSQL, популярной реляционной СУБД с открытым исходным кодом, но расширяет и дополняет ее возможности.

В отличие от PostgreSQL, Greenplum относится к MPP-базам данных. Это значит, что она умеет выполнять запросы параллельно на нескольких серверах, которые работают как кластер.
Благодаря массово-параллельной архитектуре Greenplum может обрабатывать миллионы клиентских операций в день или хранить многолетнюю статистику продаж интернет-магазина. Обычные базы данных тоже умеют работать с большими таблицами, но куда медленнее. Ведь в них нет параллельной обработки, которая могла бы ускорить процесс.
Кстати, для пользователя Greenplum выглядит как обычная база данных. Аналитик пишет SQL-запрос и не думает о том, какой именно сервер считает данные или где физически хранится таблица. Эту работу Greenplum берет на себя.
Кто и для чего использует Greenplum
Существует две основных парадигмы, в которых используют базы данных: OLTP и OLAP.
- OLTP-система обрабатывает повседневные операции: оформить заказ, перевести деньги, обновить профиль пользователя. Транзакции быстрые и короткие, а данные постоянно меняются.
- OLAP-система нужна для аналитической обработки. Здесь задача другая: собрать информацию из разных источников, рассчитать показатели и найти закономерности. Запросов меньше, чем в OLTP, но каждый из них гораздо тяжелее.
СУБД Greenplum относится ко второй категории. Это значит, что ее специализация — аналитические нагрузки и корпоративные хранилища данных. Технически систему можно применять и для других задач, но именно для этих она подходит лучше всего.
На практике это значит, что чаще всего Greenplum используют:
- Как основу для корпоративных хранилищ данных (DWH). В таких системах собирается информация из CRM и ERP, а также с сайтов, приложений и из других источников. Ее используют для аналитики и принятия решений.
- Для бизнес-аналитики и предиктивной аналитики. Например, чтобы анализировать клиентские операции, строить витрины данных, рассчитывать KPI и делать многое другое.
- При работе с большими данными. В случае с Big Data один запрос может обрабатывать десятки или сотни миллионов строк — тут пригодится распределенная архитектура.
- Для создания Data Lake. Это хранилища сырых, необработанных данных. Они обычно разнородны и не приведены к единому типу, но тоже бывают важны для аналитики.
При этом Greenplum остается полноценной реляционной СУБД. Она поддерживает SQL, транзакции и многие возможности PostgreSQL. Поэтому с ней проще работать специалистам, которые привыкли к классическим базам данных.
Как устроена Greenplum и в чем ее особенности
Главная особенность Greenplum — MPP-архитектура. Выше мы рассказывали, что это значит: вычисления выполняет не один сервер, а кластер из множества узлов, которые работают одновременно.
Но массово-параллельную архитектуру тоже можно реализовать по-разному. Давайте разберем, в чем конкретно заключаются особенности Greenplum.
Принцип Shared Nothing
Greenplum построена по модели Shared Nothing. В переводе с английского — «ничего общего». Это значит, что каждый узел кластера работает независимо от других. У каждого свой процессор, оперативная память и диски.
Такой подход нужен, чтобы узлы не конкурировали друг с другом за общий ресурс. Например, чтобы не вышло ситуации, когда два сервера одновременно пытаются использовать одну и ту же ячейку памяти. Это ускоряет вычисления и снижает риск конфликтов.
Основные компоненты Greenplum
Кластер Greenplum обычно включает четыре вида узлов: Master, Segments, Standby Master и Mirror Segments.
- Master (координатор) — это главный узел системы. Как правило, в кластере только один основной Master. Он не выполняет сложные вычисления сам, но принимает SQL-запросы, распределяет задачи между сегментами и выдает итоговый результат.
- Segments (сегменты) — это рабочие узлы, где хранятся данные и выполняются вычисления. Их может быть сколько угодно, причем каждый сегмент содержит только часть таблицы с информацией. Когда приходит запрос, сегменты обрабатывают свои данные параллельно, а затем отправляют результат координатору.
- Standby Master — резервный координатор. Он постоянно синхронизируется с основным Master и берет управление на себя, если тот выходит из строя. В результате система не простаивает при сбое.
- Mirror Segments — резервные копии сегментов. Они синхронизируются с активными сегментами и помогают сохранить отказоустойчивость. Если один сегмент становится недоступен, его копия продолжит работу.
Благодаря такому подходу работать с вычислениями становится легче. Хотя информацию обрабатывает множество сегментов, специалист общается только с узлом Master — единой точкой входа в базу. А если какой-то из узлов откажет, наготове всегда есть резервная копия с той же информацией.
Соответствие принципам ACID
Может показаться, что наличие резервной копии для каждого узла — это чересчур. Получается, что компании нужно иметь вдвое больше мощностей, чем она реально использует. Но именно такая архитектура помогает Greenplum сохранять данные при сбоях.
Система полностью соответствует ACID — набору принципов, которым должны отвечать транзакции в базах данных:
- Atomicity — атомарность. Одна транзакция должна быть неделимой. Или выполняются все ее части, или не выполняется ни одна.
- Consistency — согласованность. После выполнения транзакции база должна отвечать изначальным ограничениям и правилам, которые для нее задали.
- Isolation — изолированность. Транзакции должны быть независимы друг от друга.
- Durability — надежность. Результаты транзакции должны успешно сохраняться и не теряться.
Эти принципы — своего рода правила хорошего тона для СУБД. Если система им отвечает, это значит, что данные в ней хорошо защищены даже при сбоях. То есть ее можно использовать в чувствительных сферах вроде банкинга или работы с корпоративными данными.
Типы хранения и типы данных в Greenplum
Когда кто-то говорит о типах в СУБД, это может означать две разные вещи:
- тип хранения таблицы — как данные физически лежат на диске;
- тип данных — какой тип информации хранится в колонках.
Мы разберем и то и другое. Сначала поговорим, как Greenplum умеет хранить информацию, а затем — какие типы данных могут лежать в базе.
Типы хранения
Greenplum поддерживает несколько форматов хранения. От выбора конкретного типа зависит скорость, с которой будут выполняться запросы.
Heap (строчное хранение). Это стандартный формат, унаследованный от PostgreSQL. В нем данные хранятся построчно. Лучше всего Heap подходит для информации, которая активно меняется и обновляется: при использовании этого типа в базу удобно вставлять новые строки
Append-Optimized (AO). Это формат, оптимизированный для аналитики. Его еще называют Append-Only — «только для добавления». Дело в том, что при таком типе хранения информация в основном добавляется в базу, а не перезаписывается. Зато данные в формате AO быстрее читаются и удобнее хранятся.
Обычно этот тип используют для исторических данных и при формировании корпоративных хранилищ. То есть для информации, которую могут часто добавлять, но редко обновляют или меняют: логи, статистики за прошлые периоды и так далее.
Append-Optimized Column-Oriented (AOCO). В этом формате данные хранятся по колонкам, а не по строкам. Если нужно обратиться к какому-нибудь участку информации, система читает только нужные столбцы — за счет этого запросы выполняются намного быстрее.
Для аналитических запросов обычно используют именно AOCO. Он позволяет быстрее обрабатывать большие данные и вычленять из них нужные участки. Кроме того, именно с ним возможности MCC-архитектуры раскрываются в полной мере.
Типы данных
С типами данных в Greenplum все просто. Их система наследует от PostgreSQL. Это целые и дробные числа, строки и единичные символы, дата, время и интервалы.
Система умеет работать с JSON, причем в том числе с его бинарной вариацией — JSONB. Еще Greenplum поддерживает массивы и UUID — универсальные числовые идентификаторы. А в некоторых версиях поддерживаются геометрические типы: координаты, маршруты и другие пространственные данные.
Greenplum vs ClickHouse: чем отличаются системы
Иногда Greenplum сравнивают с другой популярной системой для больших данных — ClickHouse. Это еще одна аналитическая СУБД с MPP-архитектурой, которую используют в OLAP-парадигме.
Системы действительно похожи — и по устройству, и по назначению. Но у них есть несколько ключевых различий:
- Greenplum основана на PostgreSQL, а ClickHouse использует собственный движок. Благодаря ему ClickHouse быстрее работает и эффективнее сжимает данные.
- ClickHouse в основном работает с колоночным типом хранения данных и обрабатывает их по векторам, причем считается самой быстрой колоночной СУБД. Greenplum медленнее, но поддерживает больше типов хранения.
- Greenplum полностью соблюдает принципы ACID, поэтому надежнее в работе. ClickHouse же отвечает им не в полной мере.
- ClickHouse из коробки не поддерживает шифрование, группы пользователей и уровни доступа к данным, которые есть в Greenplum.
Получается, что Greenplum — более строгая и надежная система, близкая к классическим СУБД. А ClickHouse отлично оптимизирована под быструю агрегацию событий, но в ущерб надежности.
Это не значит, что какая-то из систем лучше, а какая-то хуже. Но использовать их эффективнее для разных целей. Greenplum, скорее, подходит для долговременного хранения ценных данных, которые важно не потерять. ClickHouse же стоит использовать там, где важнее скорость. Например, для аналитики данных в реальном времени.
Greenplum — главное
- Greenplum — это система управления базами данных, предназначенная для Big Data и аналитики.
- Главная особенность Greenplum — массово-параллельная архитектура. Благодаря ей система может выполнять задачи распределенно и справляется со сложными задачами быстрее стандартных СУБД.
- В отличие от многих решений для работы с большими данными, Greenplum близка к классическим реляционным СУБД. В ней можно работать с SQL и транзакциями, она отказоустойчива и соответствует принципам ACID.
- Чаще всего Greenplum используют для создания корпоративных хранилищ: Data Warehouse или Data Lake. В них хранятся данные, которые позже обрабатывают и анализируют, ищут между ними закономерности и делают выводы.
