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: шифрование клиентских соединений для соответствия требованиям безопасности и комплаенса.
Ссылки
ссылка на оригинал статьи https://habr.com/ru/articles/935216/
Добавить комментарий