SharedMergeTree и ClickHouse Cloud
SharedMergeTree — это cloud-native замена ReplicatedMergeTree в ClickHouse Cloud. Вместо того, чтобы каждая реплика хранила полную копию данных, все реплики обращаются к единому общему объектному хранилищу (S3, GCS, Azure Blob). Данные физически не копируются между репликами — копируются только метаданные.
Этот урок носит концептуальный характер: SharedMergeTree — эксклюзивная функция ClickHouse Cloud, недоступная в self-hosted развёртываниях.
Архитектура SharedMergeTree
В традиционном self-hosted ClickHouse с ReplicatedMergeTree каждая реплика хранит полную копию всех частей:
Replica 1: [part_1] [part_2] [part_3] ... (полная копия)
Replica 2: [part_1] [part_2] [part_3] ... (полная копия)
Replica 3: [part_1] [part_2] [part_3] ... (полная копия)
В ClickHouse Cloud с SharedMergeTree все реплики работают с одним хранилищем:
S3/GCS: [part_1] [part_2] [part_3] ... (единственная копия)
| | |
Replica 1 Replica 2 Replica 3 (только метаданные + кеш)
Реплики хранят только метаданные о частях и локальный кеш. Чтение происходит непосредственно из S3. Запись создаёт новую часть в S3, после чего метаданные синхронизируются через координационный слой (ClickHouse Keeper в Cloud).
В ClickHouse Cloud:
ENGINE = MergeTreeавтоматически становитсяENGINE = SharedMergeTree- Явно указывать
SharedMergeTreeне нужно — это происходит прозрачно - Все варианты (ReplacingMergeTree, SummingMergeTree, AggregatingMergeTree) имеют аналоги: SharedReplacingMergeTree, SharedSummingMergeTree, SharedAggregatingMergeTree
Сравнение ReplicatedMergeTree и SharedMergeTree
В ClickHouse Cloud все INSERT в SharedMergeTree автоматически обеспечивают гарантии quorum через единое объектное хранилище. Настройка insert_quorum не нужна и не влияет на поведение. Если в коде есть SETTINGS insert_quorum=2 для Cloud-таблиц — это лишняя настройка без эффекта.
SharedMergeTree существует в нескольких вариантах для разных сценариев: SharedReplacingMergeTree (дедупликация с FINAL), SharedSummingMergeTree (инкрементальные агрегаты), SharedAggregatingMergeTree (AGGREGATEFunction-состояния). Выбор движка-варианта следует той же логике, что и для self-hosted (Module 02-03).
Ключевые выводы
- SharedMergeTree — cloud-native замена ReplicatedMergeTree: единое S3-хранилище вместо копий на каждой реплике.
- Автоматический quorum: все INSERT автоматически quorum — настройка
insert_quorumне нужна в Cloud. - Мгновенное масштабирование: новый вычислительный узел подключается без копирования данных — только прогрев кеша.
- Cloud only: SharedMergeTree не доступен в self-hosted ClickHouse — это эксклюзивная функция Cloud.
- Прозрачная замена: в Cloud
ENGINE = MergeTreeавтоматически означаетENGINE = SharedMergeTree— код, написанный для self-hosted, работает в Cloud без изменений.