Search
Write a publication
Pull to refresh

StarRocks 3.5: Snapshot, Load Spill, партиции, MV, транзакции, безопасность

Level of difficultyHard
Reading time5 min
Views118
Original author: StarRocks

StarRocks 3.5 приносит точечные улучшения по надёжности, производительности и безопасности: кластерные Snapshot для DR в архитектуре shared-data (разделение хранения и вычислений), оптимизацию пакетной загрузки (Load Spill) для сокращения мелких файлов и пропуска Compaction, более гибкое управление жизненным циклом партиций (слияние по времени и автоматический TTL), многооператорные транзакции для ETL, ускорение запросов по озеру данных через автоматические глобальные словари, а также поддержку OAuth 2.0 и JWT.

Кластерные Snapshot для резервного копирования и восстановления (shared-data)

В 3.5 добавлена встроенная поддержка кластерных Snapshot в режимах shared-data. Это закрывает ключевой пробел в backup/DR.

Snapshot автоматически фиксирует полное состояние кластера (catalog, таблицы, пользователи, права) и сохраняется в объектном хранилище рядом с данными.

По умолчанию сохраняется только последний Snapshot — минимум накладных расходов на хранение.

Восстановление:

  • Указать новому или существующему кластеру путь к Snapshot в объектном хранилище.

  • StarRocks перегружает метаданные и переиспользует существующие файлы данных — копирование данных не требуется.

  • Восстановление занимает минуты и минимально нарушает сервис.

Итог: низкая стоимость, автоматизация, упрощённый DR для критичных нагрузок в shared-data.

Пакетная загрузка: меньше мелких файлов и стабильные запросы (Load Spill)

Проблема: из‑за лимитов памяти пакетные загрузки нередко порождали множество мелких файлов, повышали накладные расходы запросов и запускали дорогостоящий Compaction; запросы сразу после загрузки могли быть нестабильны.

Решение в 3.5 — механизм Load Spill:

  • При достижении порога памяти промежуточные данные проливаются (spilled) на диск крупными блоками.

  • Во многих случаях Compaction можно пропустить entirely, так как данные уже хорошо организованы.

  • Выгоды:

    • Стабильная производительность запросов сразу после загрузки.

    • Существенно меньше времени и ресурсов на Compaction.

    • Выше надёжность задач под конкурентной и/или высокообъёмной нагрузкой.

Примерные результаты (из публичных бенчмарков):

Data Volume & Mode

Load Spill Enabled

Ingest Time

Compaction

Query immediately after load

100GB – Single Thread

No

16.5 min

8 min

1.29 s

Yes (Local + S3)

19 min

N/A

0.15 s

Yes (S3 Only)

23 min

N/A

0.12 s

1TB – Single Thread

No

2h 15min

34 min

56.25 s

Yes (Local + S3)

2h 42min

N/A

0.72 s

100GB – 5 Parallel Loads

No

33 min

49min 30s

OOM

Yes (Local + S3)

45 min

N/A

0.52 s

Более умное управление партициями: упрощение жизненного цикла и снижение накладных расходов

StarRocks 3.5 добавляет две ключевые функции:

  • Time-based partition merge (слияние партиций по времени).

  • Partition TTL (автоматическая политика удержания партиций).

Time-based partition merge

  • Частый паттерн: по «горячим» данным запросы идут в мелкой гранулярности (например, по дням), тогда как исторические данные можно укрупнять (месяц).

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

  • Теперь можно использовать ALTER TABLE ... PARTITION BY <time_expr>, чтобы сливать мелкие партиции в более крупные в заданном диапазоне дат.

Эффекты:

  • Быстрее планирование и отсечение партиций — сканируется меньше.

  • Меньше метаданных и памяти, особенно по истории.

  • Чище и масштабируемее схема секционирования, согласованная с паттернами доступа.

Пример:

-- Слияние дневных партиций за январь–март в месячные
ALTER TABLE sales PARTITION BY date_trunc('month', dt)
WHERE dt BETWEEN '2024-01-01' AND '2024-03-31';

Partition TTL: автоматические политики просрочки

  • Опишите политику через partition_retention_condition (например, хранить последние 3 месяца).

  • StarRocks регулярно оценивает правило и удаляет старые партиции автоматически.

  • Работает со всеми типами партиций: range, list и expression-based.

  • Политику можно менять в любой момент через ALTER TABLE.

  • По‑прежнему можно вручную удалять партиции с WHERE для частных случаев.

Примеры:

-- Задать политику удержания при создании
CREATE TABLE t1 (
    dt date,
    region string,
    num int
)
DUPLICATE KEY(dt)
PARTITION BY (dt, region)
PROPERTIES (
    "partition_retention_condition" = "dt >= CURRENT_DATE() - INTERVAL 3 MONTH",
    "replication_num" = "1"
);

-- Изменить политику удержания
ALTER TABLE t1 SET ('partition_retention_condition' = 'dt >= CURRENT_DATE() - INTERVAL 1 MONTH');

-- Удалить партиции по условию
ALTER TABLE t1 DROP PARTITIONS WHERE dt < CURRENT_DATE() - INTERVAL 3 MONTH;

Более гибкие Materialized Views (MV)

Задача: ускорять запросы без избыточного роста и «застаивания» MV, особенно при работе с партиционированными таблицами и внешними каталогами.

Что нового:

  • Multi-column partitioning: MV могут наследовать несколько партиционных колонок (например, date, region) от базовой таблицы — лучшее соответствие внутренним и Lakehouse (Iceberg/Hive) таблицам, более эффективные refresh и partition pruning.

  • Partition TTL для MV: используйте тот же механизм TTL, чтобы автоматически удалять старые партиции при обновлении.

  • Выгоды:

    • Фокус на «горячих» данных (например, последние 7 дней).

    • Дешевле и чаще сбор статистики — дополнительный рост производительности.

    • Меньше хранилища и быстрее обновление.

Термины: MV (materialized view), Lakehouse, Iceberg, Hive.

Многооператорные транзакции для INSERT (Beta)

До 3.5 перенос многошаговых ETL был сложен: при сбое шага не было отката промежуточных записей.

Что добавлено:

  • Поддержка multi-statement transaction (Beta) — группируйте несколько операций INSERT в один атомарный блок с использованием стандартного синтаксиса BEGIN; ... COMMIT; / ROLLBACK;.

  • Выгоды:

    • Все операторы успевают вместе или не применяется ни один — no partial writes.

    • Откаты чистые и быстрые — без ручной очистки.

  • Ограничение текущей версии: поддерживаются только INSERT (основа для более полной транзакционности в будущих релизах).

Ускорение аналитики по озеру данных с автоматическими глобальными словарями

Контекст: запросы к внешним таблицам Iceberg/Hive часто сканируют широкие Parquet/ORC‑файлы с низкокардинальными строковыми колонками (country, category, gender), где строковые сравнения дороже числовых.

Новое в 3.5:

  • Автоматические global dictionaries для внешних Parquet и ORC таблиц — ранее такие ускорения были только для внутренних таблиц.

  • Почему это важно:

    • Меньше CPU и памяти при сканировании повторяющихся строк.

    • Быстрее фильтры, join и group by за счёт замены строк на целые числа.

    • Работает «из коробки», без ручной настройки и тюнинга.

Query

Scenario

OFF (ms)

ON (ms)

Speedup

q01

Count distinct on 1 low-cardinality column (<50)

623

177

3.52×

q12

Group by 1 low-cardinality column (<50)

647

180

3.59×

q36

Group by 2 low-cardinality + 1 high-cardinality int (200–256)

16179

6687

2.42×

q40

Group by 2 low-cardinality + 1 date column (<50)

1196

533

2.24×

q41

Group by 2 low-cardinality + 1 tinyint column (<50)

1038

407

2.55×

q46

Group by 7 low-cardinality columns + function (<50)

5654

2813

2.01×

q58

Decode before order by

470

178

2.64×

Результаты:

  • На наборе Iceberg 100GB средний выигрыш производительности в сценариях с низкокардинальными колонками — около 2.6×.

Термины: Parquet, ORC, Iceberg, Hive, global dictionary.

Безопасность уровня предприятия и аутентификация

  • OAuth 2.0 и JWT support: аутентификация через стандартных провайдеров идентичности — удобно для интеграции с IAM и токен‑базовыми потоками.

  • Security Integration с LDAP и групповым доступом: StarRocks может подтягивать пользователей и группы из внешних источников (LDAP, ОС или файлы), обеспечивая согласованное ролевое управление доступом.

  • SSL для протокола MySQL: шифрование клиентских соединений для соответствия требованиям безопасности и комплаенса.


Ссылки

Tags:
Hubs:
+1
Comments0

Articles