StarRocks – это высокопроизводительная, распределенная, аналитическая база данных, которая использует уникальную архитектуру хранения данных, оптимизированную для высокоскоростной обработки аналитических запросов в реальном времени.
Её внутренняя архитектура хранения данных оптимизирована под задачи OLAP, Data Lakehouse и real-time analytics, обеспечивая баланс между скоростью, надёжностью и эффективным использованием ресурсов.
В основе системы лежит распределенная архитектура по принципу shared-nothing, где данные хранятся на множестве узлов кластера. Каждый узел содержит несколько механизмов хранения (storage engines), отвечающих за физическое хранение данных. Данные организованы в виде таблиц, которые могут быть разделены на партиции по различным критериям, таким как диапазон значений, хэш или список.
Основные особенности:
Горизонтальное масштабирование и балансировка нагрузки
Репликация данных на уровне партиций
Колоночное хранение для высокой производительности аналитических запросов
Независимая работа узлов без общей памяти или дисков
Интеграция с внешними форматами позволяет работать с данными прямо из 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.