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 применяет несколько алгоритмов сжатия в зависимости от типа данных:
Репликация данных обеспечивается на уровне патриций, где каждая партиция может иметь заданное количество реплик на разных узлах кластера. Это обеспечивает отказоустойчивость и повышает доступность данных.
Система поддерживает многоуровневую структуру хранения, где данные могут размещаться на разных типах носителей:
- 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
Открытые форматы хранения данных - фундамент для data lake-экосистем и универсального обмена данными. Они незаменимы, когда приоритетом является совместимость и гибкость. Однако при задачах, требующих низкой латентности, высокой производительности и обработки данных в реальном времени, преимущество получает внутренний формат хранения StarRocks.
Благодаря глубокой интеграции с векторизованным движком, умному сжатию и оптимизации на уровне процессора, StarRocks обеспечивает в 3-10 раз более высокую скорость аналитических запросов, чем системы, использующие открытые форматы вроде Parquet или ORC.