Вот скажите мне, хабравчане, в чём сила? Разве в деньгах? Вот и финдиректор говорит, что в деньгах. А я вот думаю, что сила в данных: у кого данные, тот и сильней!

Техгиганты, вроде Google (Alphabet), Meta (признана экстремистской в России) и Яндекса, получают огромную прибыль с монетизации пользовательских данных; менее очевидные Spotify, OZON и т.п. тоже неплохо зарабатывают на данных и рекламе. Банки каждую секунду проводят сотни тысяч транзакций, небольшие интернет-магазины собирают кучу телеметрии, а социальные сети крутят бесконечные алгоритмические фиды, чтобы вы смотрели свою персональную ленту с котиками и мемами.

Каждый клик, каждое движение мышкой, каждый свайп или тап по экрану — это запись в базе данных. И да, серверы давно умеют с этим всем работать.

И вот есть у бизнеса база данных, зачем тогда изобретать ложку для супа отдельные подходы для работы с данными в ней? Выбираешь что-то оптимальное/лучшее — и радуешься жизни.

А вот зачем

Для транзакций в реальном времени нужна одна система — OLTP (Online Transaction Processing), а для аналитики другая — OLAP (Online Analytical Processing). OLTP похож на Соника — он всегда в движении, стремительно мчится вперёд, реагирует на каждое препятствие и собирает колечки. А OLTP — отрабатывает каждую транзакцию быстро и предсказуемо. OLAP же напоминает Кирби — он втягивает в себя всё, что попадётся — горы предметов, врагов, целые миры. А OLAP поглощает массивы данных — миллионы и миллиарды строк, чтобы потом переварить их и превратить в осмысленный отчёт.

И раз сценарии настолько разные, то логично, что и архитектура серверов, СХД и даже СУБД для них тоже разные.

Вот тут-то мы и переходим к сабжу. Из этого лонгрида вы узнаете про OLAP, OLTP, а также про оборудование для них.

OLAP и OLTP — что это и зачем

Для начала чуть углубимся в технологии. Итак, у OLAP и OLTP совершенно разные цели и архитектура. Поэтому вопрос для бизнеса стоит не в выборе между ними, а в том, как грамотно совмещать их в инфраструктуре.

OLAP — это инструмент для сложного анализа больших объёмов данных. С его помощью бизнес получает полноценные аналитические выводы. Представьте продуктовую розницу: аналитический отдел собирает все данные о продажах за период из разных источников — операционных баз, внешних сервисов и других систем. Всё это отправляется в специализированное хранилище (Data Warehouse), оптимизированное под многомерный анализ.

Дальше аналитики отправляют запрос: «Сколько сливочного масла и хлеба продано в июне 2024 года по всем магазинам Центрального округа и как изменилась динамика в июне 2025-го, а также как зависимость между этими продуктами?». Такой запрос требует агрегировать миллионы строк, отфильтровать данные по регионам, категориям и датам, а потом ещё вычислить зависимости, изменения и построить прогноз. Выполняться он может долго (в пределах разумного) — и это нормально, ведь на результате будут принимать бизнес-решения и строить стратегию развития.

В OLAP важнее полнота и точность анализа, чем мгновенный отклик, поэтому стратегическая аналитика (например, годовые отчёты или долгосрочные прогнозы) может длиться 1–2 часа. Другой вопрос, когда оперативная аналитика для ежедневных решений (например, изменение цен) длится часами — это уже из-за нерелевантной инфраструктуры.

Ремарка! Аналитики чаще всего работают через BI-системы (Business Intelligence, не путать с BIM), вроде Power BI, Tableau, Qlik, Looker, Apache Superset (довольно популярен при импортозамещении) и т.п., где интерфейс позволяет строить визуальные запросы, дашборды и отчёты без глубокого знания SQL.

В основе OLAP лежат многомерные массивы (кубы), которые позволяют смотреть на данные под разными углами — по времени, регионам, товарам, клиентам и десяткам других параметров. Это идеальный инструмент для стратегической аналитики. В отличие, например, от CRM: там главная задача — оперативное управление клиентами и транзакциями, а не сложные выборки из терабайтной истории продаж.

Классические инструменты: ClickHouse (особенно популярен в России), Greenplum, Hadoop/Spark, Amazon Redshift. Они заточены под массовую обработку и параллелизм.

OLTP — наоборот, технология, заточенная под скорость обработки единичных операций. На кассе в супермаркете каждая транзакция (пробили товар, приняли оплату, сохранили запись) должна происходить моментально. Любая задержка — очередь растёт и/или люди уходят. Покупатель не станет ждать по 3 минуты на каждый товар, чтобы пробить масло и хлеб. OLTP-системы оптимизированы именно под такие быстрые, частые операции в реальном времени. Но использовать их для стратегической аналитики почти бессмысленно — сложные запросы на огромных базах данных они просто не потянут.

Типичные СУБД: PostgreSQL, MySQL/InnoDB, Oracle Database, Microsoft SQL Server.

Есть и гибридные решения — HTAP (Hybrid Transactional/Analytical Processing), где в одной системе пытаются совмещать транзакции и аналитику (например, TiDB, YugabyteDB). Но чаще на практике компании разделяют нагрузки: одна база отвечает за быструю работу, другая — за аналитику.

Примеры: TiDB, SAP HANA, YugabyteDB. Но за удобство придётся платить сложностью инфраструктуры и более высокими требованиями к железу.

И вот тут-то у IT-архитектора, админа или любого другого ответственного возникают вопросики. Какой сервер выбрать под OLAP, а какой под OLTP? Это должны быть два разных сервера? Или лучше виртуалки? Или вообще кластер нужен? А может, связка вычислительных узлов и отдельного хранилища? А сколько тогда СХД? А если их несколько, то active-active или active-standby? И ещё сотня-другая нюансов.

И от этих нюансов зависит бизнес. К сожалению на всё ответить я не смогу (задачи-то у всех разные), но постараюсь дать вам полезные ориентиры. Ну и комментарии всегда открыты для вопросов :)

Как выбрать сервер и СХД для OLTP и OLAP

Подбор серверов для OLTP и OLAP — это разные задачи. И ошибка тут обходится дорого. Поставите медленные накопители под OLTP — получите очередь запросов и недовольных клиентов. Попробуете запустить OLAP на нерелевантном сервере — будете смотреть, как запросы обрабатываются неделями. Сэкономите на резервировании данных и компонентов… ну вы поняли.

В мире высоконагруженных баз данных производительность и надёжность в прямой зависимости от архитектуры и железа. Но прежде, чем закупать оборудование, надо решить вопросы с архитектурой. Начнём с OLTP.

Архитектура OLTP — скорость и предсказуемость

OLTP-системы — это боевая часть бизнеса. На ней работают интернет-банкинг, платёжные шлюзы и интернет-магазины. К этим системам довольно чёткие требования: десятки и сотни тысяч транзакций в секунду, строгие SLA по времени отклика (миллисекунды) и целостность данных — потеря одной записи о переводе равна потере денег.

В основе любой транзакционной системы лежат требования ACID (Atomicity, Consistency, Isolation, Durability — атомарность, согласованность, изоляция, надёжность). Проще говоря:

  • Транзакция выполняется целиком или не выполняется вовсе (Atomicity),

  • Данные остаются в согласованном состоянии (Consistency),

  • Параллельные операции не мешают друг другу (Isolation),

  • Данные не теряются даже при сбое (Durability).

IT-архитектор, глядя на такую систему, сначала думает не о железе, в первую очередь его интересует, как нормализовать данные, чтобы транзакции оставались быстрыми и согласованными; как распределить нагрузку по кластерам через шардинг (разделение данных по нескольким серверами, то есть шардам) и репликацию; как организовать отказоустойчивость, чтобы падение одной или сразу нескольких нод не сломало всю систему.

В таблице ниже я собрал основные архитектурные особенности для проектирования OLTP-систем.

Технология / подход

Как работает

Плюсы

Минусы

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

Shared-disk (SD)

Все узлы обращаются к одному общему хранилищу (SAN/NAS/RAID. Координация транзакций идёт через СУБД. Пример: Oracle RAC. Российский аналог: Tantum (от компании "Росплатформа").

+ Единая база, не нужно шардировать данные вручную.

+ Удобство администрирования (одна логическая БД).

+ Автоматический баланс запросов по узлам.

– Очень дорого.

– Требует специализированного оборудования.

– Масштабирование упирается в СХД и блокировки на уровне базы.

– Сложная поддержка.

Когда критична консистентность и отказоустойчивость, а бюджет позволяет (банковские системы, биллинг крупных операторов).

Shared-nothing (SN) / Шардирование

Каждый узел хранит только свою часть данных, транзакции обслуживаются локально. Связь между узлами только по сети. Примеры: Cassandra, CockroachDB. Российские: Yandex Database (YDB), Arenadata DB, Postgres Pro Patroni-кластеры).

+ Масштабирование почти линейное: добавляешь узлы — растёт производительность.

+ Нет единой точки отказа в виде СХД.

+ Гибкость при росте данных.

– Сложность проектирования шардирования (как делить данные?).

– Трудные глобальные транзакции и JOIN’ы.

– Нужна логика маршрутизации запросов.

Интернет-сервисы с огромным числом пользователей: соцсети, маркетплейсы, онлайн-игры.

Кластеризация и репликация

Данные копируются между нодами (синхронно или асинхронно). Используется для отказоустойчивости и/или распределения нагрузки. Примеры: PostgreSQL streaming replication, MySQL Galera Cluster, MongoDB ReplicaSet. Российский: Tarantool Data Grid для аналитических нагрузок.

+ Высокая доступность.

+ Операции чтения и поиска можно распределять по репликам.

Failover при падении узла.

– Репликация не ускоряет записи (даже может замедлять).

– Возможна задержка между мастером и репликами (лаг репликации).

– Сложности при конфликтных транзакциях (особенно в multimaster).

Когда критична доступность и нужна высокая скорость чтения.

Кэширование

Горячие данные выносятся в оперативную память. Чтение идёт из кэша, запись — в БД. Примеры: Redis, Memcached. Российские: Tarantool, Arenadata Grid (часто используют вместо Redis)

+ Снимает до 70–80% нагрузки с базы.

+ Очень быстро (данные в памяти).

+ Простая интеграция.

– Данные в кэше могут устаревать.

– Нужна стратегия инвалидации (удаление данных из кэша или присвоение недействительного статуса).

– Отдельный слой инфраструктуры.

Когда нагрузка на чтение намного выше, чем на запись (интернет-магазины, рекомендательные сервисы, API).

In-memory базы

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

Примеры: SAP HANA, VoltDB Российские: Tarantool, Postgres Pro с in-memory-расширениями.

+ Максимальная скорость транзакций.

+ Подходит для real-time аналитики + OLTP.

– Очень дорого.

– Требует много оперативной памяти.

– Сложнее администрировать.

Высокочастотный трейдинг, телеком, IoT с миллионами событий в секунду.

Микросервисная архитектура (это скорее инфраструктурные паттерны, а не чисто базы данных)

Логика разделена на независимые сервисы, общаются по API. Используются любые стеки, чаще всего — Kubernetes (K8s), OpenShift + можно Astra Linux и отечественные СУБД.

+ Масштабируемость.

+ Независимые команды разработки.

+ Гибкость технологий.

– Сложное взаимодействие.

– Рост накладных расходов.

Крупные проекты с быстрым развитием и высокими требованиями к масштабируемости.

Брокеры сообщений

Асинхронная передача сообщений между сервисами. Пример: Kafka, RabbitMQ. Российские: Red Soft Message Broker (разработка на основе Apache Kafka), Tarantool Queue, а также решения на базе NATS.

+ Разгрузка БД и сервисов.

+ Гибкость технологий.

– Сложнее отлаживать.

– Задержки обработки.

При пиковых нагрузках и высокой интеграции сервисов.

Вывод какой. Если важна простота, а нагрузка предвидится средняя, то оптимальный вариант — сочетание репликации и кэширования, например PostgreSQL или MySQL с Redis. Когда объём данных растёт, нагрузка увеличивается линейно, а строгая консистентность всей системы не критична, стоит лучше выбирать архитектуру shared-nothing с шардированием. Если же самое важное — строгая согласованность данных (и бюджет позволяет), то выбирайте shared-disk решения, вроде Oracle RAC или Tantum. Для систем с экстремально высокой скоростью обработки или realtime-аналитики я бы рассматривал in-memory базы.

Архитектура OLAP — масштаб и глубина

Если OLTP — это боевая часть бизнеса, то OLAP — штаб стратегического планирования. Здесь работают бизнес-аналитики, дата-сайентисты и менеджеры, которым нужна картина целиком. Запросы здесь идут по сотням гигабайт, а иногда и терабайтам данных, с множеством агрегаций и срезов. Важна не столько целостность каждой отдельной транзакции, сколько возможность получать достоверную аналитику пакетами. Архитектор, проектируя OLAP-систему, закладывает денормализованные схемы наподобие звезды или снежинки, чтобы запросы не вязли в бесконечных джойнах (от англ. JOIN — количество операций соединения).

Наглядное объяснение: нормализация — это как если бы родители звонили каждому учителю, чтобы узнать оценки ребёнка по отдельным предметам; денормализация — это как табель успеваемости, где все оценки уже собраны в одном месте
Наглядное объяснение: нормализация — это как если бы родители звонили каждому учителю, чтобы узнать оценки ребёнка по отдельным предметам; денормализация — это как табель успеваемости, где все оценки уже собраны в одном месте

Он выбирает колоночные базы данных (Columnar Databases) и многомерные хранилища (те самые кубы данных), которые позволяют сканировать огромные массивы быстрее. Добавляет кэширование и уровни агрегации (например, вместо пересчета продаж за месяц для каждого запроса система может хранить готовые итоги по месяцам, регионам или товарам), чтобы аналитик получал отчёты быстрее.

В таблице ниже я собрал основные архитектурные особенности для проектирования OLAP-систем.

Архитектура / подход

Как работает

Плюсы

Минусы

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

Shared-disk

Все узлы работают с одним общим хранилищем (обычно SAN/NAS).

+ Единая база, нет ручного шардирования.

+ Простота администрирования.

– Масштабирование ограничено производительностью СХД.

– Дорого.

– Узкое место на уровне блокировок и сети.

Подходит для небольших аналитических систем или когда уже есть shared-disk инфраструктура.

Shared-nothing

Каждый узел хранит и обрабатывает только свою часть данных. Общение между узлами — через сеть.

+ Почти линейное масштабирование.

+ Нет единой точки отказа в виде СХД.

+ Гибкость при росте данных.

– Сложность проектирования схемы шардирования.

– JOIN’ы между узлами дороги по времени.

– Балансировка нагрузки требует опыта.

Большие хранилища данных, BI-системы, отчётность по терабайтам/петабайтам данных.

MPP-системы (Massively Parallel Processing)

Развитие shared-nothing: данные нарезаются на сегменты, узлы обрабатывают их параллельно, результаты агрегируются. Примеры: Snowflake, Teradata.

Аналоги: Greenplum (форк PostgreSQL), ClickHouse, YDB.

+ Массовый параллелизм даёт высокую скорость на больших данных.

+ Отлично подходит для терабайтной и даже петабайтной аналитики.

+ Почти линейное масштабирование.

– Высокая стоимость.

– Сложность администрирования

– Требует грамотного проектирования запросов.

Когда нужны сложные аналитические запросы на очень больших данных: телеком, e-commerce, реклама.

Колоночные базы данных

Данные хранятся по колонкам, а не по строкам, что ускоряет агрегации Примеры: Vertica, Amazon Redshift. Аналоги: ClickHouse.

+ Запросы с агрегацией и фильтрацией работают быстрее.

+ Отлично сжимает данные.

+ Экономия диска.

+ Масштабируемость.

– Медленно для OLTP-нагрузки (много вставок/апдейтов).

– Сложнее администрировать, чем классические БД.

Для аналитики, где важны агрегации и сканы по большим объёмам, BI-платформы, дашборды.

Data Lake / Lakehouse

Хранилище сырых данных в любом формате (JSON, CSV, Parquet), а аналитика поверх — через движки. Примеры: Presto, Trino, Spark, Databricks. Аналоги: Yandex Data Lake, ClickHouse с Lakehouse-расширениями.

+ Гибкость — можно хранить всё подряд.

+ Масштабируется почти бесконечно.

+ Дешевле хранения в классических DW.

– Медленнее, чем MPP/колоночные базы без спец. движков.

– Нет строгой консистентности.

– Сложность в управлении метаданными.

Для хранения огромных объёмов данных на потом: обработка логов, IoT-данные, аналитика на сырых данных.

ETL/ELT-пайплайны

Данные загружаются из разных источников, очищаются и трансформируются. Примеры: Apache Airflow, DBT (Data Build Tool). Аналог: Arenadata Airflow (форк апача), Modus ETL.

+ Единый источник истины (single source of truth, SSOT).

+ Автоматизация процессов.

+ Контроль качества данных.

– Требует сложной инфраструктуры.

– Высокая стоимость поддержки.

Когда источников данных много, и нужна консолидация.

OLAP-кубы (многомерные хранилища)

Данные агрегируются в виде кубов по измерениям (время, продукт, регион). Примеры: Microsoft Analysis Services (MS SSAS), Tableau, Qlik, Power BI. Аналоги: ClickHouse, PostgreSQL, Alpha OLAP.

+ Быстрый доступ к агрегированным данным.

+ Удобство для аналитиков.

– Сложность ETL.

– Взрывной рост данных при большом числе измерений.

Системы, где важны отчёты в разрезах (финансы, ритейл, логистика).

Схема «звезда» и «снежинка»

Денормализованная модель: факты + измерения. Таблицы строятся не по строгим правилам (1NF, 2NF, 3NF), а раздуваются так, чтобы уменьшить количество соединений (JOIN’ов) при запросах.

+ Упрощает и ускоряет запросы.

+ Оптимизация для BI.

+ Хорошо ложится в кубы.

– Дублирование данных.

– Возможны ошибки при ETL.

Хранилища данных для анализа продаж, логов, метрик.

Pre-aggregation / Materialized Views

Хранение заранее подсчитанных итогов (по времени, регионам и т. д.)

+ Быстрые ответы на частые запросы.

+ Снижение нагрузки.

– Дополнительное место.

– Нужно обновлять заранее подсчитанные итоги.

Подходит, если аналитика строится вокруг однотипных отчётов.

Итак, если данных много и нужны тяжёлые аналитические запросы — лучше всего shared-nothing / MPP. Для сценариев с потоковыми данными, логами, IoT и другими big data решениями лучше подходят lakehouse или data lake. Если же система небольшая и важна простота, можно использовать и shared-disk, хотя такое встречается редко.

HTAP — третий путь

Поскольку бизнесу нужно и то, и другое, — транзакции в реальном времени и одновременно аналитика — появились гибридные системы HTAP (Hybrid Transactional/Analytical Processing).

HTAP можно рассматривать как объединение обоих подходов в одном решении. Нагрузка у него смешанная: рядом со множеством мелких операций выполняются и достаточно тяжёлые аналитические запросы. Масштабирование в HTAP зависит от конкретной реализации: где-то сильнее выражена транзакционная часть, где-то аналитическая. Инфраструктура тоже различается. Классический OLTP строится вокруг СУБД с кэшированием и репликацией, OLAP предполагает отдельное хранилище или MPP-кластер, а вот HTAP объединяет эти функции в одной системе или в связке движков. Но это всегда компромисс. Аналитика будет не такой быстрой, как в чистых MPP, а транзакции не так надёжны, как в традиционных OLTP.

HTAP — это ехидна Наклз из вселенной Соника. Умеет и быстро бегать, и мощно рыть землю, совмещая в себе быстроту Соника (OLTP) и мощь (OLAP). При этом Наклз не так быстр, как Соник, но и самым сильным его тоже не назвать.

Архитектура / подход

Как работает

Плюсы

Минусы

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

HTAP (гибрид OLTP+OLAP)

В одной системе совмещаются транзакционная и аналитическая нагрузка. Обычно реализуется через разделение хранилищ (строковое для транзакций, колоночное для аналитики) или через отдельные движки под капотом. Примеры: SAP HANA, TiDB, PostgreSQL+Timescale, SingleStore.

+ Нет необходимости строить отдельный OLAP-кластер + быстрая аналитика вместе с транзакциями.

+ Удобно для real-time дашбордов и триггеров.

+ Меньше инфраструктуры, чем у связки из отдельных OLTP и OLAP.

– Сложнее в администрировании, чем классический OLTP.

– Обычно уступает специализированным OLAP-системам по скорости тяжёлых запросов.

– Дороже лицензии (в случае SAP HANA и аналогов).

– Не все сценарии одинаково поддерживаются (некоторые движки сильнее в OLTP, другие — в OLAP).

Аналитика в реальном времени и транзакции на одном стеке: финтех (мгновенное выявление мошенничества), онлайн-игры (аналитика поведения игроков), IoT (обработка событий в реальном времени), e-commerce (рекомендации прямо здесь).

Какие выводы? Если у вас классический интернет-магазин или просто CRM в компании, достаточно связки OLTP с периодической выгрузкой данных в OLAP, и HTAP будет избыточен. Когда же требуется аналитика здесь и сейчас — например, в финансах, системах безопасности, онлайн-играх или IoT — HTAP позволяет объединить два стека в одной системе. Если же речь идёт о действительно огромных объёмах данных (петабайты), HTAP не справится, и лучше оставлять отдельные OLTP и OLAP. Главная фича HTAP в том, что он сокращает количество оборудования, но дороже и сложнее администрируется.

От архитектуры к железу: основные принципы конфигурирования

Dell PowerEdge R770
Dell PowerEdge R770

И наконец пора поговорить про железо. Во-первых, нужен баланс и конфигурация под задачу. Частая ошибка при проектировании OLTP или OLAP (да и вообще любых серверов) — вкладывать всё в одно звено (например, топовые процессоры или NVMe-хранилище). Когда упор делают на что-то одно, нередко душат систему в другом месте, создавая бутылочное горлышко (например, узкий канал, мало памяти, слабый RAID-контроллер без кэша). Конфигурация должна быть гармоничной, учитывать все комплектующие без перекосов: CPU—RAM—накопители—сеть.

Процессоры (CPU)

Для OLTP главный ориентир — высокая частота и IPC (instructions per cycle, инструкции за такт), а также минимальные задержки в цепочке CPU—память—NVMe (то есть желательна быстрая шина PCIe 5.0 и DDR5 4800+ МГц). Такое комбо позволяет очень быстро обрабатывать одиночные транзакции.

Но современным инфраструктурам часто нужно и ядер побольше — поэтому CPU лучше выбирать с балансом частоты и количества ядер/потоков. Можно подобрать что-то из Intel Xeon Scalable 4-го (Sapphire Rapids) и 5-го (Emerald Rapids) поколений, а также Xeon 6 (линейки Sierra Forest — E-core и Granite Rapids — P-core) и AMD EPYC 7003/8004/9004/9005.

Для OLTP часто хватает 1–2 сокетов на узел; жёстких требований к 2 сокетам нет — мощные EPYC тоже вывозят серьёзные нагрузки.

Смотрим на цену за ядро, пиковую частоту и — в идеале — на поддержку памяти DDR5 и PCIe 5.0 (серверная база тоже должна работать с этим), хотя при ограниченном бюджете можно выбрать DDR4 и PCIe 4.0 (или если у вас не миллионы транзакций в секунду).

Для OLAP (например, агрегация больших датасетов, сложные SQL-запросы, параллельная обработка) в приоритете количество ядер и пропускная способность памяти, так как многие движки оптимизированы для параллелизма.

Ремарка! При выборе процессора нужно смотреть не только на количество ядер, но и и на топологию NUMA (Non-Uniform Memory Access).

Чем больше в системе независимых NUMA-узлов (каждый из которых объединяет локальные ядра и память), тем выше риск возникновения межсокетных задержек. Когда ядро из одного NUMA-узла запрашивает данные, физически находящиеся в памяти другого узла, доступ к ним происходит намного медленнее — через межсокетную шину (например, Intel UPI или AMD Infinity Fabric).

В итоге сервер c де-факто менее производительным процессором, но с одной NUMA-зоной (например, односокетный AMD EPYC с монолитным дизайном), зачастую выигрывает по стабильности и производительности в приложениях, чувствительных к задержкам (например, СУБД или виртуализация), у многосокетных систем с сотнями ядер.

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

AMD EPYC по плотности ядер выигрывает, но некоторые OLAP-движки (например, Microsoft SQL Server, SAP HANA) исторически лучше оптимизированы под Intel из-за инструкций (AVX-512) и тесной интеграции (хотя для новых AMD EPYC 4 и 5 поколений уже неактуально). Ну и конечно для OLAP нужен многопроцессорный сервер — два и более CPU. Начинайте с 16-24 ядер на сокет, а для крупных систем можно смотреть на 64+ ядер на сокет(!).

Память (RAM)

Для OLTP объём памяти должен покрывать все горячие данные + буферы индексов — если возможно, — так как это резко снижает задержки I/O (даже самый быстрый NVMe-диск во много раз медленнее оперативки). У некоторых СУБД (например, PostgreSQL с правильным тюнингом) кэш работает крайне эффективно. Вы же не хотите, чтобы система постоянно подкачивала данные из медленного хранилища?

Для среднего интернет-магазина стартовый ориентир — от 64 ГБ, но лучше 128–512 ГБ на ноду (точнее можно сказать если взглянуть на вашу задачу); для серьёзных платёжных систем — это 512 ГБ–1 ТБ и выше. Если бюджет ограничен, не урезайте память под горячие данные и индексы — лучше взять не такой мощный CPU или NVMe-хранилище поменьше/помедленнее.

В OLAP акценты другие — память нужна не для того, чтобы держать все горячие данные, а для того, чтобы максимально эффективно работать с большими выборками, сортировками и джойнами. Поэтому чем больше памяти, тем лучше: 256 ГБ и выше на узел для начальных MPP-кластеров; для тяжелой аналитики — уже 1–4 ТБ на узел. OLAP часто работает с большими объёмами данных, которые частично или полностью загружаются в RAM (in-memory аналитика).

Но важен не только объём, но и пропускная способность памяти. При аналитических нагрузках именно скорость чтения и агрегации больших таблиц чаще всего становится узким местом, а не частота CPU. Поэтому многоканальная архитектура памяти критична. Например, AMD EPYC (Genoa, 9004) поддерживает до 12 каналов DDR5, что при модулях DDR5-4800 даёт 460–480 ГБ/с на сокет (ещё выше при DDR5-5200/5600). Intel Xeon Scalable четвёртого поколения (Sapphire Rapids) работают с 8 каналами DDR5-4800 (~300–350 ГБ/с), а пятое и шестое поколение ещё быстрее.

Большой L3-кэш и аккуратная NUMA-настройка тоже в плюс — если задачи бегают между CPU, часть прироста от памяти просто теряется из-за межпроцессорного взаимодействия. У стандартных EPYC 9004 — сотни мегабайт кэша L3; а у версий с 3D V-Cache — уже 1152 МБ на сокет (96 МБ на кристалл).

Хранилище (Storage)

NVMe — стандарт для OLTP и OLAP; SATA/SAS SSD постепенно уходят на периферию.

Для OLTP (например, базы данных для интернет-магазинов, платежных систем, CRM) приоритет — низкие задержки и высокая производительность на случайных операциях ввода-вывода (IOPS), так как транзакции требуют быстрого чтения/записи небольших блоков данных (4-16 КБ). Желательно организовать RAID 1/10. Про RAID 5 вообще забываем, так как пятый даёт ощутимый штраф на запись по задержкам (особенно при активных транзакциях, а при деградации вообще начинает шевелиться как снулая рыба — примерно никак). Если бюджет ограничен, лучше уж RAID 6, но при 4 дисках его полезный объём фактически равен RAID 10. Поэтому для боевых баз стандартный выбор остаётся тем же — зеркала или RAID 10.

Выбирайте NVMe (PCIe 4.0/5.0) для низких задержек и высоких IOPS. Для среднего интернет-магазина хватит 1-4 ТБ (2-4x NVMe/SATA SSD). Для платежных систем — 4-16 ТБ. И не экономьте на скорости хранилища.

Для OLAP (аналитика больших данных, data warehouse, например, ClickHouse, Snowflake) приоритет — высокая ёмкость и пропускная способность последовательного чтения/записи, так как запросы работают с большими наборами данных (гигабайты-терабайты). Задержки не так критичны, как в OLTP, но важны объём хранилища, скорость обработки больших блоков данных, скоростная шина (PCIe 5.0) и контроллеры. Для экономии можно сочетать NVMe (1-4 ТБ для горячих данных) и HDD (10-40 ТБ для холодных). HDD более чем актуальны для этого.

Начальный MPP-кластер требует 8-32 ТБ на узел (2x 1.92 ТБ NVMe + 4x 4 ТБ HDD), нагрузки посерьёзнее — 32-100 ТБ. Используйте RAID 6 или ZFS (или аналоги). В продакшене для больших кусков аналитики часто используют ZFS с кэшем на NVMe, чтобы не жертвовать скоростью при хранении больших массивов. Для shared-disk/SAN берите быстрые NVMe СХД с поддержкой NVMe-oF и высокоскоростными FC/NVMe-RDMA (да, стоимость будет космической, но для хайэнд сегмента это эффективно, особенно если нужен единый массив для кластера из десятков нод). Но в большинстве случаев проще и дешевле держать локальное хранилище + репликацию.

Сеть (Network)

Сеть — ключевой элемент любых высоконагруженных систем, связывающий серверы, хранилища и клиентов. Сразу отмечу, что один коммутатор со схемой звезды — это тупик для кластера. Нужна leaf-spine архитектура с низкой задержкой линков.

Leaf-spine архитектура — это сетевая топология для дата-центров, где leaf-коммутаторы держат серверы, а магистральные коммутаторы (spine) связывают leaf между собой. Это даёт высокую пропускную способность (10–100 Гбит/с и выше), низкие задержки и масштабируемость за счёт полного соединения всех leaf с каждым spine. Эта архитектура идеальна для OLTP и OLAP, так как минимизирует конкуренцию за канал и ускоряет обмен данными.

Для OLTP (интернет-магазины, финансы) важны низкие задержки и стабильность, чтобы приложение быстро отвечало пользователю. Медленная или перегруженная сеть тормозит даже быструю базу данных. Для старта хватит 10 Гбит/с для связи между серверами, кэшами и бэкендами. Многие интернет-магазины и CRM до сих пор живут на этой скорости и не страдают. В крупных же проектах (финансы, телеком) с упором на минимальный пинг лучше использовать 25/40/100/200/400 Гбит/с. Отказоустойчивость обязательна: настройте LACP (Link Aggregation Control Protocol), используйте два независимых коммутатора и сетевых канала, чтобы избежать простоев. В продакшене даже полчаса простоя сети может стоить дороже, чем апгрейд IT-инфраструктуры до дублированной схемы.

Для OLAP (аналитика, MPP-кластеры) важна высокая пропускная способность сети, так как узлы обмениваются большими объёмами данных при распределенных запросах. Медленная сеть сводит на нет мощность процессоров и памяти. Минимально — 40–100 Гбит/с на узел. На 10 Гбит/c можно разве что демо поднять, но не реальную аналитику. Технологии, вроде RoCE (RDMA over Converged Ethernet), ускоряют передачу данных, обходя процессор, что критично для in-memory аналитики, где скорость сети должна быть близка к скорости RAM.

Но есть одно но. RoCE требует очень аккуратной настройки lossless Ethernet (PFC, ECN). Иногда проще поставить InfiniBand. Берите свитчи с низкими задержками и стройте leaf-spine.

Ещё важно сказать про SmartNIC/DPU и ускорители — первые берут на себя фильтрацию трафика, шифрование, NVMe-oF/RDMA, разгружая CPU и стабилизируя задержки.

Если в проекте есть GPU/FPGA под AI/аналитику — заранее планируйте PCIe-слоты, линии и охлаждение. Несколько таких карт могут быстро превратить стойку в печку.

Конкретные серверы, которые можно выбрать

Начну с самых бюджетных вариантов на Xeon Scalable 2-го поколения. В целом процессоры верхнего сегмента из этой линейки всё ещё неплохо справляются с задачами для среднего бизнеса, но при этом восстановленные серверы стоят недорого.

Dell PowerEdge T440 и HPE ProLiant DL360 Gen10
Dell PowerEdge T440 и HPE ProLiant DL360 Gen10

Я бы рассматривал для самого начального уровня двухсокетные серверы Dell PowerEdge T440 (Tower) и HPE ProLiant DL360 Gen10 (1U Rack). Либо можно посмотреть на ассортимент Supermicro/Lenovo, выйдет немного дешевле. Если же бюджет позволяет, то лучше выбрать серверы поновее — R450 (Rack) и DL360 Gen10 Plus, там уже и шина PCIe 4.0, и Scalable 3.

Если же смотреть на что-то современное, то у Dell в линейке PowerEdge сейчас актуальны 16-е и 17-е поколения: PowerEdge R760 (16-е поколение) как универсальная платформа для тяжёлых по вычислениям и хранению задач, и R770 (17-е поколение) как более свежая платформа с упором на память, поддержку Intel Xeon 6/AMD EPYC 5 и расширенные NVMe-возможности.

Dell PowerEdge R770
Dell PowerEdge R770

Эти серверы удобны и для OLTP (в конфигурации с быстрыми NVMe и большом обёмом памяти), и для узлов OLAP при увеличении количества ядер и хранилища.

Ещё варианты серверов под специфические задачи:

  • Dell PowerEdge XE8712
    Сервер для AI/HPC с NVIDIA GB200 (Grace CPU + GPU) — для сверхтяжёлых аналитических и AI-задач, где важна GPU-обработка.

  • Dell PowerEdge XE9780 / XE9785 (или постарше —XE9680)
    2U/4U сервера с NVIDIA GB300 Blackwell GPU.

Dell PowerEdge XE9780
Dell PowerEdge XE9780

У HPE последние поколения ProLiant — Gen11 и Gen12. Главной моделью для большинства задач остаётся ProLiant DL380 Gen11 — гибкий двухсокетный сервер, который прекрасно масштабируется по памяти и накопителям. Gen12 нацелен на более плотные AI/GPU-конфигурации и поддержку новых процессоров.

HPE ProLiant DL380a Gen12
HPE ProLiant DL380a Gen12

Либо можно посмотреть на DL325 и DL345 — они поддерживают 5-е поколение AMD EPYC, до 6 ТБ RAM — вдвое больше, чем предыдущие поколения, — и AI-управление через Compute Ops Management. Отлично подходят под OLAP, in-memory аналитику и большие данные. Для задач, где важна плотная GPU-сборка, у HPE есть модификации DL380a Gen12 (мощный 4U-сервер, поддерживает до 8 GPU RTX PRO 6000 Blackwell — идеально для AI-нагрузок и аналитики).

Вместо выводов

Лонгрид вышел большим, но всё затронуть не получилось. Если останутся вопросы — велком в комментарии. Если на что-то ответить не хватит и моих компетенций, то уверен, что на Хабре найдутся знатоки :)

Комментарии (0)


  1. Sergo_Ul
    25.09.2025 13:53

    Спасибо за познавательную статью! На работе пока взаимодействую с olap, как пользователь готовых кубов и было очень интересно посмотреть на привычный инструмент с другой стороны!)


  1. vlad4kr7
    25.09.2025 13:53

    В OLAP важнее полнота и точность анализа, чем мгновенный отклик,

    OLTP — наоборот, технология, заточенная под скорость обработки единичных операций. 

    если кратко (в статье этого вообще нет):

    OLTP - главное надежность данных (транзакции): "или сохранили все, или ничего, и пробуй снова". Сложные запросы - можно и часами крутить.

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

    по факту перпендикулярно написанному в статье


    1. HaxeZ
      25.09.2025 13:53

      Вот согласен. В начале статьи будто бы ошибки копипасты терминов.

      Для OLTP хотел бы добавить, что транзакции очень желательно бы делать быстрыми, ну или делать вид, что они быстрые, все же обычно количество транзакций в OLTP - огромно. Ваша фраза про время сложных запросов правдива, но обычно это чейн транзакций со сложными механизмами фолбэков, при том то, что является непосредственной первичной целью транзакции (условный платеж) должно быть выполнено в любом случае, а то, что от него может зависеть, но не является критически важным для целостности данных - может и подождать, от того и получается, что сложные вещи действительно могут выполняться долго, но критичная их часть должна дать результат как можно скорее.

      Так же не совсем понимаю, почему в качестве OLTP баз в примере не полные по ACID (MySQL и MSSQL по моей памяти не покрывают ACID), но тут быть может мне не хватает знаний и/или квалификации.

      Вообще статья у меня резонирует, поскольку на текущем месте работы, имея Postgress и картофельные серверы, с одной стороны от меня требует быстрых транзакций и строгой консистентности данных, а с другой есть аналитика, которой нужен быстрый OLAP, при том максимально свежий, накидываем на это жесткую денормализацию таблиц под аналитику и условно-четырехмерную структуру куба, визуализирующий OLAP и получаемый головную боль, поскольку аналитические OLAP таблицы полностью зависимы от данных по транзакции и соотвественно, должны быть пересчитаны, в один момент с первичными данными по транзакции (что конечно же не делается).


    1. Barseadar Автор
      25.09.2025 13:53

      Насчёт надёжности и "или сохранили все, или ничего, и пробуй снова" — это прямым текстом есть в статье, выделил подчёркиванием.

      OLTP-системы — это боевая часть бизнеса. На ней работают интернет-банкинг, платёжные шлюзы и интернет-магазины. К этим системам довольно чёткие требования: десятки и сотни тысяч транзакций в секунду, строгие SLA по времени отклика (миллисекунды) и целостность данных — потеря одной записи о переводе равна потере денег.

      В основе любой транзакционной системы лежат требования ACID (Atomicity, Consistency, Isolation, Durability — атомарность, согласованность, изоляция, надёжность). Проще говоря:

      • Транзакция выполняется целиком или не выполняется вовсе (Atomicity),

      • Данные остаются в согласованном состоянии (Consistency),

      • Параллельные операции не мешают друг другу (Isolation),

      • Данные не теряются даже при сбое (Durability).