Arenadata DB для разработчиков: Руководство по работе с аналитической MPP-СУБД
Arenadata DB (ADB) — это промышленная аналитическая СУБД класса MPP (Massively Parallel Processing), основанная на Greenplum. Она предназначена для высокопроизводительной обработки SQL-запросов в системах хранения, анализа и подготовки больших объёмов данных. Это руководство ориентировано на разработчиков: от DWH-инженеров и BI-специалистов до аналитиков данных и backend-программистов, интегрирующих ADB в прикладную логику.
Архитектура и концепции ADB
Модель MPP
- Распределённая архитектура: Master + Segment Hosts
- Параллельное выполнение SQL-запросов
- Прозрачное масштабирование по горизонтали
Компоненты
- master: точка входа (pg_ctl, psql)
- segments: рабочие процессы хранения и выполнения
- gpfdist: файловый сервер для внешней загрузки
- PXF: внешний протокол доступа к Hadoop, S3, Hive, Kafka и др.
- gpmon: система мониторинга и профилирования
Работа с SQL в ADB
Совместимость
- Полная поддержка PostgreSQL 9.x синтаксиса
- Расширения: gp_toolkit, MADlib, PL/Python, PL/pgSQL
DDL/DML особенности
- Таблицы:
CREATE TABLE sales (id int, amount numeric, region text) DISTRIBUTED BY (region);
-
Таблицы могут быть:
- DISTRIBUTED BY (hash partitioning)
- REPLICATED
- APPEND-ONLY (сжатые, колоночные)
- Загрузка:
COPY sales FROM '/data/sales.csv' DELIMITER ',';
- EXTERNAL TABLE + gpfdist:
CREATE EXTERNAL TABLE sales_ext (...) LOCATION ('gpfdist://host:8081/sales.csv') FORMAT 'csv';
Ускорение запросов
- Анализ плана выполнения: EXPLAIN ANALYZE
- Профилирование: gp_toolkit.gp_resqueue_status, pg_stat_statements
- Оптимизация JOIN'ов, распределения и агрегаций
Хранимые процедуры и функции
Поддерживаемые языки
- PL/pgSQL, PL/Python, PL/Java (через UDF)
- Создание:
CREATE OR REPLACE FUNCTION get_region_sales(text) RETURNS numeric AS $$ SELECT sum(amount) FROM sales WHERE region = $1; $$ LANGUAGE sql;
Параллельные функции
- Поддержка VOLATILE/STABLE/IMMUTABLE
- Ограничения: не все функции исполняются в каждом сегменте (особенно с SEQUENCE и CURSOR)
Встраивание в приложения
JDBC/ODBC
- Совместимость с PostgreSQL-драйверами
- Рекомендуется использовать балансировщик с Master Standby
Примеры подключения
import psycopg2 conn = psycopg2.connect(host='adb-master', dbname='mydb', user='adb', password='pwd')
Использование в BI-системах
- Поддержка FineBI, Superset, Tableau, Power BI
- Настройка витрин через materialized views и external tables
Data Engineering и ML
Интеграция с Python и Spark
- Использование PL/Python UDF для препроцессинга
- PXF для соединения с HDFS, Hive, Parquet, Kafka
Модели на SQL
- Поддержка MADlib — аналитической библиотеки:
SELECT madlib.linregr_train('input_table', 'output_table', 'indep_columns', 'dep_column');
- Матричные вычисления, кластеризация, классификация, PCA
DevOps и разработка под ADB
CI/CD
- Интеграция с Liquibase, Flyway через JDBC
- Авторазвёртывание схем: psql -f schema.sql
- Хранение объектов: git + миграционные скрипты
Контроль версий и rollback
- Использование схем и ролей
- Поддержка миграций на уровне SQL + Bash wrapper’ы
Тестирование
- Использование dockerized окружений: arenadata/adb
- Нагрузочное тестирование: pgbench, gpcheckperf
Безопасность и управление доступом
Роли и права
CREATE ROLE analyst LOGIN; GRANT SELECT ON ALL TABLES IN SCHEMA public TO analyst;
- Контроль доступа по схемам, объектам, функциям
- Аудит через pg_audit, gp_toolkit
Шифрование и логирование
- Поддержка TLS на уровне PostgreSQL
- Интеграция с LogSearch, Filebeat, ELK
Arenadata DB (ADB) — это промышленная аналитическая СУБД на базе Greenplum, адаптированная российской компанией Arenadata. Поддерживает масштабируемую архитектуру MPP (Massively Parallel Processing), полную совместимость с SQL и PostgreSQL, а также инструменты для высокопроизводительной обработки данных. В международной терминологии встречается как Arenadata Greenplum или ADB Greenplum.
Бизнес-применение
Для каких задач подходит Arenadata DB
- Хранилища данных (DWH) и витрины BI-отчётности
- Big Data-аналитика для маркетинга, логистики, телекомов
- Регламентная и оперативная отчётность в банках и госсекторе
- Финансовое планирование, расчёты, ABC/XYZ/XYZ-анализ
- Моделирование и прогнозирование, включая SQL + ML (через MADlib)
Примеры использования
- Агрегация продаж с миллиардами записей по SKU
- Вычисление KPI в real-time по десяткам тысяч пользователей
- Построение отчётов по API и BI-системам (FineBI, Superset, Power BI)
Преимущества и ограничения
Преимущества
- Масштабирование без переработки запросов (MPP)
- Полноценная поддержка SQL, включая оконные функции и CTE
- Интеграция с Hadoop, Kafka, S3 через PXF
- Совместимость с PostgreSQL-драйверами (psql, JDBC, ODBC)
- Российская сертификация, подходит для импортозамещения
- Управление через Arenadata Cluster Manager (ADCM)
Ограничения
- Не предназначена для транзакционных OLTP-нагрузок
- Высокие требования к инфраструктуре (RAM, диски, сеть)
- Зависимость от правильной схемы распределения таблиц (distribution key)
Архитектура и компоненты
Архитектура MPP
- Master — точка входа, координатор выполнения SQL
- Segments — рабочие узлы, исполняющие подзапросы
- Standby Master — HA-конфигурация
Вспомогательные компоненты
- PXF — внешний интерфейс к данным (S3, HDFS, Kafka, Hive, ClickHouse)
- gpfdist — файловый HTTP-сервер загрузки CSV/TSV/Parquet
- gpmon — мониторинг запросов, задержек, статистики
SQL и аналитика
SQL-поддержка
- JOIN, GROUP BY, WINDOW, CTE, CASE, UNION
- Поддержка UDF: PL/pgSQL, PL/Python, PL/Java
- Аналитические функции (rank(), lead(), lag() и др.)
Расширения
- MADlib — машинное обучение на SQL:
SELECT madlib.kmeans_train(...);
- gp_toolkit — метрики загрузки, очередей, сегментов
Поддержка BI и Python
- JDBC/ODBC-драйверы (PostgreSQL-compatible)
- Подключение к BI: Superset, FineBI, Tableau, Power BI
- Python: psycopg2, SQLAlchemy, pandas + psql
Хранение и производительность
Типы таблиц
- Heap: стандартная таблица PostgreSQL
- Append-Only: колоночные, сжатые, оптимальны для хранения логов
- External: подключаемые таблицы через PXF/gpfdist
Распределение и сегментация
CREATE TABLE sales (...) DISTRIBUTED BY (region);
- Выбор ключа влияет на производительность JOIN'ов
Примеры ускорения
- Анализ EXPLAIN ANALYZE
- Использование materialized views
- Сжатие: compresstype=zlib, orientation=column
Развёртывание и сопровождение
Установка
- Через Arenadata Cluster Manager (ADCM)
- Поддержка YUM-репозиториев и rpm-пакетов
- Поддержка Standby, PXF, gpmon и масштабирования
Мониторинг
- Prometheus Exporter + Grafana Dashboards
- ELK + Filebeat для логов
- gp_toolkit, pg_stat_activity, gpstate
Обновления
- Через ADCM: upgrade действия
- Проверка совместимости схем и внешних UDF
Заключение
Arenadata DB предоставляет разработчикам богатую SQL-функциональность, поддержку машинного обучения, масштабируемость и продвинутые средства профилирования. Сочетая совместимость с PostgreSQL и возможности MPP, она идеальна для построения аналитических витрин, больших расчётных систем и интеграции с BI/ETL/ML-инфраструктурой. Это зрелая платформа как для хранилищ, так и для сложной SQL-инженерии.



