<keeper_map_path_prefix>.
Например:
path может быть любым другим допустимым путём в ZooKeeper.
Создание таблицы
root_path— путь в ZooKeeper, где будет хранитьсяtable_name. Этот путь не должен содержать префикс, заданный в конфиге<keeper_map_path_prefix>, поскольку префикс будет автоматически добавлен кroot_path. Также поддерживается форматauxiliary_zookeeper_cluster_name:/some/path, гдеauxiliary_zookeeper_cluster— это кластер ZooKeeper, определённый в конфиге<auxiliary_zookeepers>. По умолчанию используется кластер ZooKeeper, заданный в конфиге<zookeeper>.keys_limit— количество ключей, допустимое в table. Это мягкое ограничение, и в некоторых пограничных случаях в table может оказаться больше ключей.primary_key_name– любое имя столбца в списке столбцов.первичный ключдолжен быть указан; поддерживается только один столбец в первичном ключе. Первичный ключ будет сериализован в бинарный формат какnode nameвнутри ZooKeeper.- столбцы, кроме первичного ключа, будут сериализованы в бинарный формат в соответствующем порядке и сохранены как value результирующего узла, определённого сериализованным key.
- queries с фильтрацией по key через
equalsилиinбудут оптимизированы в lookup нескольких ключей изKeeper, в противном случае будут получены все values.
(v1, v2, v3), будет храниться по пути /keeper_map_tables/keeper_map_table/data/serialized_key в Keeper.
Кроме того, для числа ключей действует нестрогий лимит: 4.
Если несколько таблиц создаются по одному и тому же пути ZooKeeper, значения сохраняются, пока существует хотя бы 1 таблица, использующая этот путь.
В результате при создании таблицы можно использовать предложение ON CLUSTER и организовать общий доступ к данным между несколькими экземплярами ClickHouse.
Разумеется, можно и вручную выполнить CREATE TABLE с тем же путем на не связанных между собой экземплярах ClickHouse, чтобы добиться того же эффекта общего доступа к данным.
Поддерживаемые операции
Вставки
KeeperMap, если ключ отсутствует, для него создаётся новая запись.
Если ключ уже существует и параметр keeper_map_strict_mode установлен в значение true, генерируется исключение; в противном случае значение по этому ключу перезаписывается.
Пример:
Удаление
DELETE или команды TRUNCATE.
Если ключ существует и параметр keeper_map_strict_mode установлен в true, получение и удаление данных будут выполняться успешно только в том случае, если их можно выполнить атомарно.
Обновления
ALTER TABLE. Первичный ключ обновить нельзя.
Если параметр keeper_map_strict_mode имеет значение true, получение и обновление данных будут выполняться успешно только атомарно.