Learning Platform
Глоссарий Troubleshooting
Урок 10.09 · 20 мин
Продвинутый
SharedMergeTreeClickHouse CloudS3shared storage

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

ReplicatedMergeTree vs SharedMergeTree
ПараметрЗаголовок строки: параметр сравнения. ReplicatedMergeTree -- self-hosted engine. SharedMergeTree -- Cloud engine.
ReplicatedMergeTreeReplicatedMergeTree: стандартный движок для self-hosted ClickHouse. Полная копия данных на каждой реплике. Поддерживается начиная с ClickHouse 1.x.
SharedMergeTreeSharedMergeTree: cloud-native движок ClickHouse Cloud. Использует S3/GCS/Azure как единое хранилище для всех реплик. Недоступен в self-hosted.
ХранилищеКак данные физически хранятся: каждая реплика или общее хранилище.
Копия на каждой репликеПолная копия данных на каждой реплике. Реплика с 3 TB данных + 2 реплики = 9 TB дискового пространства. Репликация = копирование частей между узлами по сети.
Общее S3/GCS/Azure хранилищеЕдинственная копия данных в S3/GCS/Azure. Все реплики обращаются к одним и тем же объектам. 3 TB данных = 3 TB в S3 независимо от числа реплик.
РепликацияНакладные расходы репликации: сетевой трафик и время синхронизации при добавлении данных.
Копирование частей по сетиПри INSERT реплика-лидер записывает часть локально, затем другие реплики скачивают её по сети. При 3 репликах: 3x сетевой трафик для синхронизации данных.
Только метаданные (нет копирования)При INSERT часть записывается в S3 один раз. Другие реплики получают только уведомление о метаданных (путь к объекту в S3). Нет копирования данных между репликами.
insert_quorumНастройка insert_quorum: нужна ли для гарантии записи на несколько реплик.
Требуется явная настройкаinsert_quorum нужен явно: INSERT INTO t SETTINGS insert_quorum=2 ждёт подтверждения от 2 реплик. Без этого INSERT подтверждается после записи на одну реплику (eventual consistency).
Встроен автоматическиВсе INSERT автоматически quorum в SharedMergeTree -- часть записывается в S3 атомарно, все реплики видят её сразу через metadata sync. Настройка insert_quorum не нужна и не применяется.
Self-hostedВозможность self-hosted развёртывания: можно ли использовать вне ClickHouse Cloud.
Да -- любое развёртываниеReplicatedMergeTree работает на любом ClickHouse: self-hosted, on-prem, cloud VMs. Требует: ClickHouse Keeper (или ZooKeeper) + репликанты на отдельных машинах.
Нет -- только ClickHouse CloudSharedMergeTree доступен только в ClickHouse Cloud. Требует S3-совместимого объектного хранилища как общего backend -- не реализован в open-source версии.
МасштабированиеГоризонтальное масштабирование: как происходит добавление узлов.
Новая реплика = копирование данныхДобавление реплики = копирование всех данных на новый узел. Для таблицы 3 TB это может занять часы. Масштабирование дорого по времени и сетевому трафику.
Новый узел без копирования данныхДобавление узла = только подключение к S3 + прогрев кеша. Нет копирования данных. Новый узел начинает отвечать на запросы немедленно (с холодным кешем) или после прогрева.
NOTE

В ClickHouse Cloud все INSERT в SharedMergeTree автоматически обеспечивают гарантии quorum через единое объектное хранилище. Настройка insert_quorum не нужна и не влияет на поведение. Если в коде есть SETTINGS insert_quorum=2 для Cloud-таблиц — это лишняя настройка без эффекта.

NOTE

SharedMergeTree существует в нескольких вариантах для разных сценариев: SharedReplacingMergeTree (дедупликация с FINAL), SharedSummingMergeTree (инкрементальные агрегаты), SharedAggregatingMergeTree (AGGREGATEFunction-состояния). Выбор движка-варианта следует той же логике, что и для self-hosted (Module 02-03).


Ключевые выводы

  1. SharedMergeTree — cloud-native замена ReplicatedMergeTree: единое S3-хранилище вместо копий на каждой реплике.
  2. Автоматический quorum: все INSERT автоматически quorum — настройка insert_quorum не нужна в Cloud.
  3. Мгновенное масштабирование: новый вычислительный узел подключается без копирования данных — только прогрев кеша.
  4. Cloud only: SharedMergeTree не доступен в self-hosted ClickHouse — это эксклюзивная функция Cloud.
  5. Прозрачная замена: в Cloud ENGINE = MergeTree автоматически означает ENGINE = SharedMergeTree — код, написанный для self-hosted, работает в Cloud без изменений.
Snowflake: отдельные compute и storage Delta Lake: transaction log и ACID на object storage

Проверьте понимание

Результат: 0 из 0
Прикладной
Вопрос 1 из 3. Разработчик переносит приложение с self-hosted ClickHouse на ClickHouse Cloud. В коде есть: INSERT INTO events SETTINGS insert_quorum=2. Нужно ли сохранять эту настройку в Cloud?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 11