Когда в ClickHouse выполняется распределенный DDL-запрос (ON CLUSTER
), он сохраняется в распределенной очереди задач в Keeper (аналог ZooKeeper). В конфигурации задается путь для этой очереди (например, /clickhouse/task_queue/ddl
), и каждый новый DDL-запрос на весь кластер добавляется как новый узел (znode) в этом разделе. Узел создается с флагом persistent sequential – то есть получает уникальное имя вида query-<число>
по возрастанию github.com. Таким образом, в Keeper хранится упорядоченный список задач.
Данные каждого узла (задачи) содержат сериализованную информацию о DDL-запросе. В коде это структура DDLLogEntry
, которая при сохранении превращается в текстовые строки. В узле сохраняются поля: версия формата записи, сам текст SQL-запроса, список це