Перейти к содержимому

Кейс · Серверы и СХД

Серверная инфраструктура для аналитического хранилища Greenplum, Москва

Поставили кластер Greenplum из 10 серверов для ритейлера 800 магазинов: недельный отчёт с 4,5 часов до 9 минут, SAS SSD вместо NVMe — экономия 1,7 млн руб., итого 15%.

0
позиций в поставке
0
дней до поставки
0%
экономия клиента
0
сумма проекта, ₽

Коротко о проекте

Что поставили

Сервер 2U мастер-узел, 2×Xeon Gold 6338, 512 ГБ DDR4, 4×NVMe 3.84 ТБ RAID-102 шт.
Сервер 2U сегментный узел, 2×Xeon Gold 6354, 256 ГБ DDR4, 12×SAS SSD 7.68 ТБ JBOD8 шт.
Коммутатор 25 GbE 48-port в стеке2 шт.
DAC-кабель 25G20 шт.
ИБП 2 кВА он-лайн с SNMP10 шт.

Федеральный ритейлер с сетью 800 магазинов по всей России накапливал транзакционные данные из торговых систем (чеки, движение товара, логистика) в реляционной PostgreSQL-базе, которая уже не справлялась с аналитическими запросами: BI-система формировала недельный отчёт по всем магазинам за 4,5 часа, а операционные аналитики ждали результатов срочных запросов по 25–40 минут. Объём данных за 5 лет работы превысил 18 ТБ, ежедневный прирост — около 60 ГБ. Архитектурное решение — мигрировать аналитическую нагрузку с PostgreSQL на Greenplum MPP-хранилище: параллельная обработка на нескольких узлах сокращает время аналитических запросов в 10–30 раз для больших объёмов данных.

Задача клиента

Поставить серверную инфраструктуру для кластера Greenplum: мастер-сервер + 8 сегментных узлов + standby-мастер. Каждый сегментный узел — 2U с большим числом CPU-ядер и быстрыми дисками для параллельного сканирования. Целевые характеристики: недельный аналитический отчёт — менее 15 минут, срочные аналитические запросы — менее 3 минут. Бюджет — 10,8 млн рублей. 25 GbE между всеми узлами кластера — требование Greenplum для interconnect трафика между сегментами.

Ограничения и требованияЧто предложили

Мастер-сервер и standby-мастер: 2×сервер 2U, 2×Xeon Gold 6338 (64 ядра суммарно), 512 ГБ DDR4 ECC, 4×NVMe 3.84 ТБ RAID-10 (координатор Greenplum не хранит данные, но активно работает с метаданными и распределяет запросы — быстрые диски важны). Восемь сегментных узлов: 2U, 2×Xeon Gold 6354 (36 ядер, высокая частота 3,0 ГГц для сканирования), 256 ГБ DDR4 ECC, 12×SAS SSD 7.68 ТБ в JBOD (Greenplum управляет данными напрямую через AO-таблицы, RAID-контроллер не нужен — производительность лучше без дополнительного уровня абстракции).

Выбор SAS SSD вместо NVMe для сегментных узлов обоснован экономически: Greenplum выполняет последовательное сканирование больших таблиц, где разница задержки NVMe vs SAS SSD (0,1 мс vs 0,3 мс) практически не влияет на throughput последовательного чтения. Ограничивающим фактором для сканирования является полоса пропускания дисков, а не задержка. SAS SSD 7.68 ТБ обеспечивает 2 200 МБ/с последовательного чтения — практически на уровне NVMe при вдвое меньшей цене за терабайт, что позволяет разместить больше ёмкости в рамках бюджета.

Interconnect-сеть: два коммутатора 25 GbE 48-port в режиме стека с LACP, все 10 серверов подключены по 2 порта 25 GbE каждый (active-active bonding). Суммарная полоса interconnect: 10 серверов × 2×25 GbE = 500 Гбит/с доступной полосы — более чем достаточно для даже самых JOIN-тяжёлых аналитических запросов. Мастер-серверы подключены дополнительно к клиентской сети 10 GbE для подключения BI-инструментов (Tableau, Apache Superset).

Хранение «холодных» данных: партиционирование таблиц Greenplum по месяцу позволяет хранить данные старше 3 лет в сжатом формате ZSTD (коэффициент сжатия 4:1 для ритейловых данных) на более дешёвых полках. Ёмкость 8 сегментных узлов × 12 × 7.68 ТБ = 736 ТБ raw обеспечивает хранение 80+ ТБ несжатых данных с возможностью хранить весь 5-летний архив.

Настройка Greenplum под ритейловый профиль нагрузки включала несколько ключевых параметров. gp_vmem_protect_limit — ограничение памяти на процесс: при 256 ГБ RAM и 32 сегментах на узел (4 primary + 4 mirror) каждый сегментный процесс получает до 4 ГБ памяти для hash-агрегаций и sort-операций. Statement_mem увеличен до 2 ГБ для BI-запросов через Resource Queue. Параметр effective_cache_size выставлен на 80% от RAM узла: Greenplum использует это значение для планировщика при выборе между seq scan и index scan — правильное значение критично для эффективных планов выполнения.

Мониторинг Greenplum-кластера настроен через gpmetrics и Prometheus: утилизация CPU/RAM по каждому сегментному узлу, spill-файлы на диске (признак нехватки памяти для операции), время выполнения активных запросов, очередь Resource Queue. Дашборд в Grafana позволяет DBA в реальном времени видеть распределение нагрузки по узлам кластера и выявлять «горячие» сегменты — дисбаланс данных между сегментами, который деградирует производительность запросов. Алерт при spill свыше 100 ГБ за час: признак неоптимального SQL-запроса, требующего ревью.

Стратегия партиционирования таблиц фактов: ежедневные транзакционные таблицы (чеки, строки чеков, логи движения товара) партиционированы по дате создания с диапазоном partition 1 месяц. Это позволяет Greenplum пропускать целые партиции при запросах с фильтром по дате — partition pruning снижает объём сканируемых данных с 18 ТБ до 1–2 ТБ для типичного месячного отчёта. Без партиционирования тот же запрос сканировал бы всю таблицу — разница в скорости составляет 8–12 раз для стандартных BI-запросов аналитиков ритейлера.

Интеграция Greenplum с ETL-пайплайном ритейлера выполнена через Apache Airflow: ежедневная загрузка данных из транзакционных PostgreSQL-баз магазинов в Greenplum с трансформацией (нормализация форматов, обогащение справочниками). Производительность загрузки через gpfdist (Greenplum File Distribution Server): 18 ГБ сжатых данных за 8 минут против 4 часов при загрузке через стандартный COPY в PostgreSQL. gpfdist использует параллельную загрузку из всех сегментных узлов одновременно — пропускная способность масштабируется с числом узлов кластера.

Состав поставки по подсистемамЭтапы и сроки поставкиРезультат

Greenplum-кластер принял нагрузку через 3 недели после поставки оборудования. Недельный аналитический отчёт по 800 магазинам формируется за 9 минут вместо 4,5 часов. Срочные аналитические запросы аналитиков — от 40 секунд до 2,5 минут в зависимости от сложности. Экономия к бюджету — 15%: выбор SAS SSD вместо NVMe на сегментных узлах снизил стоимость на 1,7 млн рублей без измеримой потери производительности для Greenplum-нагрузки.

Производительность превзошла ожидания заказчика: аналитики получили возможность запускать ad-hoc запросы напрямую из Tableau к Greenplum без предварительной подготовки агрегатов. До миграции любой нестандартный запрос требовал написания ETL-джобы и ожидания ночного запуска — процесс занимал 1–3 рабочих дня. Теперь аналитик получает ответ на нестандартный вопрос за 1–4 минуты.

Планирование расширения: архитектура Greenplum позволяет добавить сегментные узлы с автоматическим перераспределением данных. Через 2 года, при росте объёма данных или числа аналитиков, достаточно добавить 4 узла идентичной конфигурации — данные перераспределятся автоматически через команду gpexpand, производительность вырастет пропорционально числу узлов.

Почему выбрали нас

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

Частые вопросы

Почему SAS SSD, а не NVMe для сегментных узлов?

Greenplum выполняет последовательное сканирование, где ограничение — throughput, а не задержка. SAS SSD 2200 МБ/с ≈ NVMe при вдвое меньшей цене за ТБ.

Зачем 25 GbE interconnect для Greenplum?

Greenplum перемещает данные между сегментами при JOIN и GROUP BY. Медленная сеть нивелирует преимущества MPP — 25 GbE обязателен для производительности.

Как масштабировать кластер Greenplum?

Добавляются новые сегментные узлы, данные перераспределяются автоматически через gpexpand без остановки кластера. Производительность растёт пропорционально числу узлов.

Сколько времени занимает загрузка данных в Greenplum?

Через gpfdist (параллельный загрузчик): 18 ГБ сжатых данных за 8 минут. Стандартный COPY в PostgreSQL занял бы 4+ часа.

Нужен ли RAID-контроллер для сегментных узлов?

Нет. Greenplum управляет данными напрямую через AO-таблицы в JBOD. RAID-контроллер добавляет уровень абстракции и снижает производительность последовательного сканирования.

Посчитайте свою экономию

При подборе под задачу и спец-ценах от производителя экономия по этому кейсу — 15%. Двигайте бюджет и смотрите вашу выгоду.

Ваш бюджет на оборудование1 000 000
100 тыс ₽20 млн ₽
Ваша экономия
150 000
Итого к оплате
850 000
Подобрать решение под мою задачу

Оценка ориентировочная. Точную цену и срок подтвердит менеджер.

Нужно похожее решение?

Опишите задачу — подберём оборудование с оптовыми ценами, сроками и наличием. Регистрация не нужна.

Кейс приведён для примера, данные обезличены. Состав, цены, сроки и экономия носят справочный характер, не являются публичной офертой и не гарантируют аналогичный результат — каждый проект рассчитывается индивидуально, наличие и цены подтверждаются при оформлении заказа.