Хранилище в Managed Service for ClickHouse®
Managed Service for ClickHouse® позволяет использовать сетевые и локальные диски для организации хранилища кластеров баз данных. Сетевые диски реализованы на базе сетевых блоков — виртуальных дисков в инфраструктуре Yandex Cloud. Локальные диски физически размещаются в серверах хостов БД.
При создании кластера вы можете выбрать для хранилища следующие типы дисков:
-
Сетевые HDD-диски (
network-hdd) — самый экономичный вариант для кластеров, не требовательных к скорости записи и чтения. -
Сетевые SSD-диски (
network-ssd) — компромиссный вариант: медленнее, чем локальные SSD-диски, но, в отличие от них, обеспечивают сохранность данных при выходе из строя оборудования Yandex Cloud. -
Нереплицируемые SSD-диски (
network-ssd-nonreplicated) — сетевые диски с повышенной производительностью, реализованной за счет устранения избыточности.Объем такого хранилища можно увеличивать только с шагом 93 ГБ.
-
Сверхбыстрые сетевые SSD-диски с тремя репликами (
network-ssd-io-m3) — сетевые диски с теми же скоростными характеристиками, что и нереплицируемые. Этот тип диска обеспечивает избыточность.Объем таких дисков можно увеличивать только с шагом 93 ГБ.
-
Локальные SSD-диски (
local-ssd) — самые быстрые диски.Объем такого хранилища можно увеличивать:
- для платформы Intel Cascade Lake — только с шагом 100 ГБ;
- для платформ Intel Ice Lake и AMD Zen 4 — только с шагом 368 ГБ.
Для кластеров, хосты которых располагаются в зоне доступности
kz1-d, недоступно хранилище на локальных SSD-дисках при использовании платформы Intel Cascade Lake.
Размер блока
Примечание
До 5% дискового пространства резервируется для служебных нужд, поэтому на дисках может быть меньше доступного места, чем заявлено при создании кластера.
Подробнее о размерах и производительности разных типов дисков в документации Yandex Compute Cloud.
Гибридное хранилище
Гибридное хранилище Managed Service for ClickHouse® сочетает в себе два уровня хранения данных:
- кластерное хранилище — часто используемые данные (горячие данные) размещаются на быстрых носителях (сетевых дисках кластера);
- объектное хранилище — редко используемые данные (холодные данные) размещаются в более дешевом и медленном хранилище Yandex Object Storage.
Новые данные записываются в кластерное или объектное хранилище в соответствии с настроенными политиками. Например, для политики по умолчанию новые данные сначала записываются в кластерное хранилище. Все операции с ними происходят в соответствии с принципами работы ClickHouse®, включая разбиение на разделы (partitions) и куски данных (parts). Далее ClickHouse® отслеживает частоту доступа к данным и автоматически перемещает их в объектное хранилище. Обратное перемещение (из объектного хранилища в кластерное) автоматически не выполняется, но это можно сделать вручную с помощью команд MOVE PARTITION и MOVE PART.
В объектном хранилище используется служебный бакет с неограниченным объемом памяти. Класс такого хранилища — стандартный, изменить его нельзя. Для объектного хранилища применяются лимиты сервиса Object Storage.
Хранение холодных данных и их резервных копий в гибридном хранилище учитывается при расчете стоимости использования кластера.
Включить гибридное хранилище можно при создании или изменении кластера.
Важно
Включенное гибридное хранилище нельзя отключить.
Преимущества и недостатки гибридного хранилища
Основные преимущества использования гибридного хранилища:
- Актуальные данные обрабатываются очень быстро, благодаря хранению на быстрых сетевых дисках. Это обеспечивает низкую задержку и высокую скорость выполнения аналитических запросов.
- Редко используемые данные размещаются в более дешевом объектном хранилище, что позволяет снизить затраты на хранение.
- Автоматическое управление данными. Данные могут переноситься между уровнями хранения по определенным условиям: из-за заполненности диска, по истечении заданного срока с помощью параметра TTL или вручную.
- Более простое масштабирование. При добавлении новой реплики в кластер с гибридным хранилищем в нее копируются только часто используемые данные с сетевых дисков, а данные в объектном хранилище не дублируются. Это экономит ресурсы и ускоряет процесс масштабирования.
- Единый интерфейс для доступа к данным. ClickHouse® скрывает детали хранения от потребителей данных, позволяя выполнять как редкие запросы к холодным данным, так и частые — к горячим, через единый интерфейс.
Недостатки гибридного хранилища:
- Низкая скорость доступа к объектному хранилищу.
- Гибридное хранилище доступно только для таблиц на движке MergeTree
. Данные таблиц на других движках хранятся только в кластерном хранилище. - Если в кластере включено гибридное хранение данных, то вернуться к обычному хранению данных нельзя.
Доступные политики хранения
Распределять данные между кластерным и объектным хранилищами можно с помощью политик хранения, заданных для таблиц базы данных.
Примечание
Создавать новые политики хранения или изменять уже существующие нельзя.
В кластере Managed Service for ClickHouse® с включенным гибридным хранилищем доступны следующие политики хранения:
-
default(по умолчанию) — кластер автоматически управляет размещением данных в зависимости от:- настроек гибридного хранилища;
- настроек TTL для таблиц.
-
local— строки таблицы с такой политикой размещаются только в кластерном хранилище. Перемещение данных между хранилищами не происходит. -
object_storage— строки таблицы с такой политикой размещаются только в объектном хранилище. Перемещение данных между хранилищами не происходит.
Выбор политики хранения не оказывает влияния на операции слияния кусков данных.
Подробнее о политиках хранения и их настройках читайте в документации ClickHouse®
Операции слияния
При вставке данных в таблицы семейства MergeTree создаются новые неизменяемые куски, отсортированные по первичному ключу. Со временем их количество может вырасти, что приводит к накладным расходам при обработке запросов. Чтобы решить эту проблему, ClickHouse® периодически выполняет фоновые слияния мелких кусков данных в более крупные.
На операции слияния
- prefer_not_to_merge — включает/отключает слияние кусков данных в объектном хранилище.
max_data_part_size_bytes— устанавливает максимальный размер итогового куска данных после слияния меньших кусков в объектном хранилище. Настройку можно задать только через обращение в техническую поддержку .
Влиять на поведение операций слияния можно также с помощью доступных в кластере настроек. Найти их можно поиском по слову «merge». Примеры настроек, влияющих на операции слияния:
- Max bytes to merge at max space in pool,
- Merge max block size,
- Merge tree max bytes to use cache.
Настройки гибридного хранилища
Примечание
В регионе Казахстан доступны только платформы standard-v3 (Intel Ice Lake) и standard-v3-t4i (Intel Ice Lake with T4i). Другие типы платформ, кластеры GPU и выделенные хосты недоступны.
В кластере Managed Service for ClickHouse® с включенным гибридным хранилищем доступны следующие настройки:
-
move_factor— минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение —0, максимальное —1, по умолчанию —0.01.Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
-
data_cache_enabled— разрешить временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища:trueилиfalse. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию —true(разрешено). -
data_cache_max_size— максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища. -
prefer_not_to_merge— отключить слияние кусков данных в кластерном и объектном хранилищах:trueилиfalse. Чтобы отключить слияние, укажите значениеtrue. Чтобы оставить слияние включенным, укажите значениеfalse.После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу system.parts
, чтобы посмотреть слитые куски данных и партиции.
Задать настройки гибридного хранилища можно при создании или изменении кластера.
Подробнее о настройках гибридного хранилища читайте в документации ClickHouse®
TTL
TTL (time to live) — это механизм, который ограничивает время жизни данных. По истечении заданного интервала времени можно автоматически удалять, перемещать или агрегировать строки и столбцы таблицы. Настроить перемещение строк с истекшим сроком жизни в объектное хранилище и задать значение TTL можно при создании таблицы или позднее.
При достаточном объеме свободного места в кластерном хранилище перемещение в объектное хранилище выполняется только для тех строк таблицы, для которых истекло значение TTL. Эта операция позволяет переместить часть данных в объектное хранилище, не дожидаясь заполнения кластерного хранилища.
Указывать TTL для использования гибридного хранилища необязательно, однако это позволяет явно контролировать, какие данные будут находиться в объектном хранилище. Если не указывать TTL, то данные будут помещаться в объектное хранилище, только когда в кластерном хранилище закончится место.
Данные перемещаются между кластерным и объектным хранилищами не построчно, а кусками
Подробнее о настройке TTL читайте в документации ClickHouse®
Выбор типа дисков при создании кластера
Количество хостов, которые можно создать вместе с кластером ClickHouse®, зависит от выбранного типа дисков:
-
При использовании локальных SSD-дисков (
local-ssd) вы можете создать кластер из двух или более хостов.Хранилище на локальных SSD-дисках влияет на тарификацию кластера: он тарифицируется, даже если остановлен. Подробнее в правилах тарификации.
-
При использовании сетевых нереплицируемых SSD-дисков (
network-ssd-nonreplicated) вы можете создать кластер из трех или более хостов. -
Вы можете добавить любое количество хостов в пределах текущей квоты при использовании следующих типов дисков:
- сетевые HDD-диски (
network-hdd); - сетевые SSD-диски (
network-ssd); - сверхбыстрые сетевые SSD-диски с тремя репликами (
network-ssd-io-m3).
- сетевые HDD-диски (
Ограничения на количество хостов в кластере описаны в разделе Квоты и лимиты.
Шифрование диска
При создании или восстановлении кластера из резервной копии можно зашифровать диск хранилища пользовательским ключом KMS. Чтобы зашифровать диск уже созданного кластера, отключить шифрование или зашифровать диск другим ключом, создайте резервную копию кластера и восстановите его с новыми настройками.
Важно
Шифрование локальных дисков не поддерживается для выделенных хостов.
Для создания зашифрованного диска нужна роль kms.keys.user или выше.
Если деактивировать ключ, которым был зашифрован диск, доступ к данным будет приостановлен, пока ключ не будет снова активирован.
Внимание
Если удалить ключ, которым был зашифрован диск, или его версию, то доступ к данным будет безвозвратно потерян. Подробнее в документации Key Management Service.
Управление дисковым пространством
В Managed Service for ClickHouse® при отсутствии свободного места в хранилище выполнение запросов на вставку (INSERT), фоновых мержей и мутаций приостанавливается. После увеличения размера хранилища их выполнение возобновляется автоматически.
Для отслеживания степени заполнения хранилища настройте алерты в Yandex Monitoring.
Автоматическое увеличение размера хранилища
Чтобы избежать ситуаций, когда свободное место на диске заканчивается и запросы на вставку, фоновые мержи и мутации перестают выполняться, настройте автоматическое увеличение размера хранилища для ClickHouse® и сервиса координации: ClickHouse® Keeper или ZooKeeper. В этом случае хранилище увеличивается при достижении установленного порога срабатывания — процента от общего размера хранилища. Есть два порога:
-
Порог для планового увеличения. Такое увеличение планируется по прогнозу алгоритма, который анализирует данные за последние несколько часов и оценивает, как быстро заполняется хранилище. Если расчеты показывают, что к началу ближайшего окна обслуживания заданный порог будет превышен, то планируется увеличение. Если проверка в начале обслуживания подтверждает, что заданный порог превышен, размер хранилища увеличивается.
-
Порог для незамедлительного увеличения. При его достижении размер хранилища увеличивается немедленно.
Можно использовать один либо оба порога. Если заданы оба, порог для незамедлительного увеличения должен быть не меньше, чем для планового.
Для планового увеличения необходимо настроить расписание окна обслуживания.
При достижении порога размер хранилища увеличивается в зависимости от типа диска:
-
Для сетевых HDD- и SSD-дисков — на большее из двух значений: 20 ГБ или 20% от текущего размера диска.
-
Для нереплицируемых SSD-дисков и сверхбыстрых сетевых SSD-дисков с тремя репликами — на 93 ГБ.
-
Для локальных SSD-дисков:
- В кластере на платформе Intel Cascade Lake — на 100 ГБ.
- В кластере на платформе Intel Ice Lake или AMD Zen 4 — на 368 ГБ.
Если порог срабатывания достигнут повторно, размер хранилища будет автоматически увеличиваться, пока не достигнет заданного максимума. После этого вы можете задать новый максимальный размер хранилища.
Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем существующим шардам. При добавлении нового шарда значения настроек берутся с самого старого шарда.
Настроить автоматическое увеличение размера хранилища можно при создании или изменении кластера.
Важно
- Размер хранилища нельзя уменьшить.
- Во время изменения размера хранилища хосты кластера будут недоступны.