Ликбез

Внутреннее хранение данных в StarRocks

Starrocks
StarRocks – это высокопроизводительная, распределенная, аналитическая база данных, которая использует уникальную архитектуру хранения данных, оптимизированную для высокоскоростной обработки аналитических запросов в реальном времени.
Её внутренняя архитектура хранения данных оптимизирована под задачи OLAP, Data Lakehouse и real-time analytics, обеспечивая баланс между скоростью, надёжностью и эффективным использованием ресурсов.
В основе системы лежит распределенная архитектура по принципу shared-nothing, где данные хранятся на множестве узлов кластера. Каждый узел содержит несколько механизмов хранения (storage engines), отвечающих за физическое хранение данных. Данные организованы в виде таблиц, которые могут быть разделены на партиции по различным критериям, таким как диапазон значений, хэш или список.
Основные особенности:
  • Горизонтальное масштабирование и балансировка нагрузки
  • Репликация данных на уровне партиций
  • Колоночное хранение для высокой производительности аналитических запросов
  • Независимая работа узлов без общей памяти или дисков
Ключевая особенность StarRocks — columnar storage (колоночное хранение).
Каждая колонка таблицы хранится отдельно, что позволяет считывать только нужные поля при выполнении запросов.
Преимущества колоночного формата:
  • Быстрая агрегация и фильтрация данных
  • Эффективное сжатие (до 10× уменьшения объёма)
  • Высокая производительность при аналитических запросах
  • Оптимальная работа с CPU-кэшем при векторных вычислениях
В StarRocks данные организованы в многоуровневую иерархию:
  • Таблицы — логические контейнеры данных
  • Партиции — деление таблиц по ключевым полям
  • Сегменты (Rowsets) — физические файлы на диске
  • Колонки — отдельные потоки хранения внутри сегментов
Благодаря такой структуре система может эффективно выполнять параллельную обработку данных на множестве узлов.
StarRocks работает как с собственным форматом, так и с открытыми стандартами Data Lake:
  • Нативный формат StarRocks (Columnar Storage Engine)
  • Apache Parquet
  • ORC (Optimized Row Columnar)
  • CSV
Интеграция с внешними форматами позволяет работать с данными прямо из Apache Iceberg, Delta Lake и Hudi, без необходимости копирования.
Механизмы сжатия играют важную роль в оптимизации хранения. StarRocks применяет несколько алгоритмов сжатия в зависимости от типа данных:
Алгоритм
Особенности
Применение
LZ4
Очень быстрое сжатие и декомпрессия
Общие данные, временные таблицы
ZSTD
Более высокая степень сжатия
Архивы и большие партиции
Специальные алгоритмы
Оптимизированы для числовых и текстовых типов
Колонки с метриками, категориями
Репликация данных обеспечивается на уровне патриций, где каждая партиция может иметь заданное количество реплик на разных узлах кластера. Это обеспечивает отказоустойчивость и повышает доступность данных.
Система поддерживает многоуровневую структуру хранения, где данные могут размещаться на разных типах носителей:
  • SSD для "горячих" (часто запрашиваемых) данных
  • HDD для "холодного" архива
  • Глобальная система кэширования для оптимизации производительности и ускорения доступа к данным
Метаданные в StarRocks метаданные хранятся отдельно и содержат:
  • структуру таблиц и партиций,
  • схемы хранения,
  • расположение фрагментов данных,
  • статистику для оптимизатора запросов.
Это позволяет Оптимизатору на основе затрат (Cost-Based Optimizer) выбирать наиболее эффективный план выполнения запроса и балансировать нагрузку по кластеру.
Индексация и ускорение запросов в StarRocks включают:
  • Первичные индексы (Primary Index) обеспечивает уникальность записей и быстрый поиск по ключу
  • Вторичные индексы (Secondary Index) ускоряет фильтрацию и поиск по неключевым столбцам
  • Битовые индексы (bitmap) эффективен при множественных фильтрах и агрегациях
Кроме того, система поддерживает материализованные представления и предварительную агрегацию данных, что ускоряет выполнение повторяющихся аналитических запросов
ACID-транзакции в Starrocks реализуется на уровне партиций, обеспечивая:
  • консистентность при обновлениях,
  • шифрование данных при хранении и передаче,
  • контроль доступа на уровне таблиц, колонок и пользователей,
  • журналирование операций.
Оптимизация хранения достигается за счет нескольких механизмов, в том числе:
  • Умного распределения данных по узлам кластера
  • Автоматического балансирования нагрузки
  • Динамической адаптации к изменяющимся паттернам доступа
  • Интеллектуального кэширования часто используемых данных
Масштабируемость обеспечивается возможностью добавления новых узлов в кластер и автоматического перераспределения данных для поддержания оптимальной производительности и надежности.

Собственный формат хранения StarRocks

Собственный формат хранения данных StarRocks — это специализированная колоночная структура, разработанная для обеспечения максимальной скорости аналитических вычислений и эффективного использования ресурсов. В отличие от универсальных форматов, таких как Parquet или ORC, внутренний формат StarRocks глубоко интегрирован с движком выполнения запросов, что позволяет достигать высокой производительности, низкой задержки и оптимального распределения нагрузки при обработке больших объёмов данных в реальном времени.
Формат хранения StarRocks основан на колоночной архитектуре (columnar storage), где каждая колонка хранится отдельно в оптимизированной бинарной форме. Это позволяет:
  • Считывать только необходимые столбцы при выполнении запроса (column pruning).
  • Повышать эффективность кэширования данных.
  • Существенно уменьшать объем операций ввода-вывода (I/O).
Каждая таблица в StarRocks разбивается на сегменты (segments), которые состоят из блоков данных фиксированного размера. Эти блоки упакованы в микроблоки (обычно 64 КБ) и оптимизированы для векторизированного доступа. Такая структура идеально подходит для выполнения массовых аналитических операций, особенно при сканировании и агрегации больших наборов данных.
StarRocks использует векторный формат хранения, где данные структурированы так, чтобы максимально использовать SIMD-инструкции современных процессоров. Это обеспечивает параллельную обработку сотен или тысяч значений в одном цикле CPU.
В результате достигается:
  • Многократное ускорение выполнения аналитических запросов.
  • Снижение нагрузки на CPU за счёт уменьшения числа итераций.
  • Эффективное использование кэша процессора и памяти.
Благодаря тесной интеграции формата хранения с векторизованным движком, система минимизирует накладные расходы на преобразование данных при выполнении операций.
Внутренний формат StarRocks применяет адаптивные алгоритмы сжатия, выбираемые в зависимости от типа и распределения данных. Это позволяет достичь оптимального баланса между степенью сжатия и скоростью доступа.
Поддерживаются следующие методы:
  • LZ4 — для высокоскоростного сжатия и быстрой декомпрессии.
  • ZSTD — для плотного сжатия аналитических наборов данных.
  • Run-Length Encoding (RLE) — для повторяющихся значений.
  • Dictionary Encoding — для строковых и категориальных данных.
  • Frame-of-Reference Encoding — для числовых диапазонов с близкими значениями.
Алгоритмы могут комбинироваться на уровне колонок, а система автоматически подбирает оптимальный метод при загрузке или перестроении данных.
Одной из сильных сторон формата хранения StarRocks является поддержка предварительных агрегатов и частичной материализации данных.
Это означает, что часто используемые результаты агрегирующих операций (например, SUM, COUNT, AVG) могут сохраняться в оптимизированной форме, что:
  • Уменьшает время отклика запросов в десятки раз.
  • Снижает нагрузку на вычислительные узлы.
  • Повышает производительность при повторных аналитических запросах.
Благодаря такой стратегии, StarRocks особенно эффективен при работе с дашбордами, OLAP-запросами и интерактивной аналитикой.
Формат хранения поддерживает динамическое управление сегментами, позволяя:
  • Объединять мелкие сегменты в крупные (compaction) для повышения эффективности.
  • Автоматически реплицировать сегменты между узлами для отказоустойчивости.
  • Перемещать «горячие» данные на быстрые носители (SSD) и «холодные» на HDD без потери целостности.
Каждый сегмент имеет собственный индекс и статистику, включая минимальные и максимальные значения по колонкам, что позволяет ускорять фильтрацию данных без необходимости их полного сканирования.
Формат хранения StarRocks напрямую связан с оптимизатором запросов. Метаданные сегментов (такие как статистика колонок, распределение данных, карта партиций) используются для:
  • Проталкивания предикатов (predicate pushdown).
  • Оптимизации планов выполнения (cost-based optimization).
  • Минимизации чтений при выполнении выборок.
Таким образом, движок StarRocks понимает структуру и физическую организацию данных, что позволяет формировать планы запросов с минимальной стоимостью.
Собственный формат StarRocks поддерживает адаптивную оптимизацию хранения, основанную на анализе реальных паттернов доступа к данным. Система может:
  • Автоматически перестраивать сегменты под изменяющиеся запросы.
  • Изменять типы сжатия в зависимости от частоты доступа.
  • Балансировать хранение данных между узлами для предотвращения перегрузки.
Эти механизмы делают StarRocks самооптимизирующейся системой, способной поддерживать стабильную производительность при росте нагрузки и объема данных.
Собственный формат хранения StarRocks — это не просто колоночный формат, а интеллектуально интегрированная подсистема, оптимизированная под:
  • векторизированное выполнение запросов,
  • глубокое сжатие данных,
  • автоматическую оптимизацию хранения
  • и высокую параллельность обработки.
Благодаря этому StarRocks обеспечивает:
  • производительность на уровне систем in-memory аналитики,
  • низкую латентность при интерактивных запросах,
  • эффективное использование ресурсов CPU, RAM и дисков.
Эта архитектура делает StarRocks одним из лидеров в области real-time аналитики и high-performance OLAP на современных аппаратных платформах.

Открытые форматы хранения данных

В экосистеме современных аналитических платформ широко применяются открытые форматы хранения данных, обеспечивающие переносимость, совместимость и гибкость при работе с большими объёмами информации. К наиболее распространённым относятся Parquet, ORC и Iceberg — каждый из них решает свои задачи и обладает уникальными преимуществами.
Эти форматы лежат в основе data lake и lakehouse-архитектур, обеспечивая эффективную работу с данными в распределённых системах, интеграцию с Apache Spark, Trino, Presto, Hive, Flink и другими аналитическими движками.
Parquet — один из самых популярных форматов для хранения аналитических данных. Он использует колоночную структуру хранения (columnar layout), что делает его особенно эффективным для выполнения OLAP-запросов и массового сканирования.
Ключевые особенности:
  • Колоночное хранение позволяет считывать только нужные колонки при запросах, что экономит I/O и повышает скорость.
  • Сжатие на уровне столбцов — поддержка алгоритмов Snappy, GZIP, LZO, ZSTD.
  • Метаданные на уровне файлов и блоков — ускоряют фильтрацию и выборку данных.
  • Поддержка вложенных структур — удобно для сложных схем (JSON, массивы, структуры).
  • Совместимость — Parquet читается и записывается большинством аналитических движков.
Преимущества Parquet:
  • Высокая степень сжатия и экономия места.
  • Хорошая производительность при аналитических нагрузках.
  • Поддержка эволюции схемы (добавление новых колонок).
  • Оптимален для холодных и архивных данных в хранилищах типа S3, HDFS, MinIO.
Недостатки:
  • Ограниченная эффективность для потоковых вставок и частых обновлений.
  • Высокая латентность при запросах реального времени (из-за файловой природы).
ORC (Optimized Row Columnar) был создан для повышения эффективности работы Hive и Spark с большими таблицами. Как и Parquet, ORC — колоночный формат, но он дополнительно оптимизирован для высокого сжатия, индексации и предвыборки данных.
Ключевые особенности:
  • Данные хранятся в stripes (полосах), каждая из которых содержит метаданные, индексы и статистику.
  • Поддерживаются индексы на уровне колонок, что ускоряет фильтрацию строк.
  • Использует продвинутые алгоритмы сжатия (ZLIB, Snappy, LZ4).
  • Содержит встроенные lightweight-индексы и статистику (min/max, count, nulls).
Преимущества ORC:
  • Отличная компрессия — сжатие до 10–15× по сравнению с CSV.
  • Эффективная фильтрация благодаря встроенным индексам.
  • Поддержка pushdown-предикатов в Spark, Hive, Trino.
  • Хорошо подходит для больших аналитических наборов данных.
Недостатки:
  • Менее универсален, чем Parquet (хуже поддержка в некоторых инструментах).
  • Менее гибок при изменении схемы таблицы.
Iceberg — это не просто формат хранения, а табличный слой поверх открытых форматов (Parquet, ORC, Avro), обеспечивающий ACID-транзакции, снимки версий данных и управление эволюцией таблиц.
Ключевые особенности:
  • Поддержка транзакций и версионирования (time-travel queries).
  • Метаданные о каждом файле, партиции и фрагменте.
  • Оптимизация для массовых операций append/update/delete.
  • Интеграция с Spark, Trino, Flink, Presto и StarRocks (через внешние таблицы).
Преимущества Iceberg:
  • Гарантированная согласованность данных.
  • Простое управление эволюцией схем.
  • Возможность отката к предыдущим состояниям таблицы.
  • Хорошая масштабируемость в Lakehouse-архитектурах.
Недостатки:
  • Более высокая сложность администрирования.
  • Меньшая производительность при интерактивных запросах по сравнению с внутренним форматом StarRocks.

Сравнение открытых форматов и внутреннего формата StarRocks

Критерий
Открытые форматы
Собственный формат StarRocks
Тип хранения
Файловое (на уровне S3, HDFS, Lakehouse)
Встроенное колоночное хранилище
Поддержка векторизации
Частичная / отсутствует
Полная интеграция
Производительность
Средняя (I/O-зависимая)
Максимальная, оптимизирована под CPU
Вставка и обновление данных
Неэффективны (batch-oriented)
Реальное время (streaming + batch)
Метаданные и индексация
Файловые метаданные
Сегментные индексы и статистика колонок
ACID-поддержка
Iceberg обеспечивает
Встроенная транзакционная модель
Подходит для real-time analytics
Нет / ограниченно
Да
Интеграция с движками
Внешняя
Нативная, без overhead
Открытые форматы хранения данных - фундамент для data lake-экосистем и универсального обмена данными. Они незаменимы, когда приоритетом является совместимость и гибкость. Однако при задачах, требующих низкой латентности, высокой производительности и обработки данных в реальном времени, преимущество получает внутренний формат хранения StarRocks.
Благодаря глубокой интеграции с векторизованным движком, умному сжатию и оптимизации на уровне процессора, StarRocks обеспечивает в 3-10 раз более высокую скорость аналитических запросов, чем системы, использующие открытые форматы вроде Parquet или ORC.