Именованные коллекции, созданные с помощью DDL, можно включить в некоторых сервисах ClickHouse Cloud. Чтобы подтвердить доступность, обратитесь в службу поддержки. Именованные коллекции, определенные в конфигурационных файлах, недоступны, поскольку пользователи не могут изменять конфигурационные файлы сервера в ClickHouse Cloud.
[NOT] OVERRIDABLE, XML-атрибутов
и/или параметра конфигурации allow_named_collection_override_by_default.
Хранение именованных коллекций в системной базе данных
Пример DDL
key_1всегда можно переопределить.key_2нельзя переопределить никогда.- Возможность переопределить
urlзависит от значенияallow_named_collection_override_by_default.
Разрешения на создание именованных коллекций с помощью DDL
Чтобы управлять именованными коллекциями с помощью DDL, пользователь должен иметь привилегиюnamed_collection_control. Ее можно назначить, добавив файл в /etc/clickhouse-server/users.d/. В этом примере пользователю default назначаются привилегии access_management и named_collection_control:
/etc/clickhouse-server/users.d/user_default.xml
named_collection_control позволяет пользователю создавать, изменять и удалять именованные коллекции, но не читать значения, которые в них уже сохранены. Для этого предусмотрена отдельная привилегия — SHOW NAMED COLLECTIONS SECRETS, включаемая настройкой show_named_collections_secrets. Пользователь может выдавать только те привилегии, которыми обладает сам, поэтому, пока show_named_collections_secrets отключена, у пользователя нет полного набора привилегий, и запрос GRANT ALL ON *.* TO another_user WITH GRANT OPTION отклоняется с сообщением (Missing permissions: SHOW NAMED COLLECTIONS SECRETS ON *).
Хранение именованных коллекций
Именованные коллекции можно хранить либо на локальном диске, либо в ZooKeeper/Keeper. По умолчанию используется локальное хранилище. Их также можно хранить в зашифрованном виде, используя те же алгоритмы, что и для шифрования диска, при этом по умолчанию используетсяaes_128_ctr.
Чтобы настроить хранилище именованных коллекций, нужно указать type. Это может быть local или keeper/zookeeper. Для зашифрованного хранилища
можно использовать local_encrypted или keeper_encrypted/zookeeper_encrypted.
Чтобы использовать ZooKeeper/Keeper, также нужно указать path (путь в ZooKeeper/Keeper, где будут храниться именованные коллекции) в
разделе named_collections_storage файла конфигурации. В следующем примере используются шифрование и ZooKeeper/Keeper:
update_timeout_ms по умолчанию имеет значение 5000.
Проверить активный тип хранилища можно с помощью system.server_settings и getServerSetting:
SYSTEM RELOAD CONFIG не изменяет активное backend-соединение.
Хранение именованных коллекций в конфигурационных файлах
Пример XML
/etc/clickhouse-server/config.d/named_collections.xml
key_1всегда можно переопределить.key_2нельзя переопределить никогда.urlможно переопределить или не переопределять — в зависимости от значенияallow_named_collection_override_by_default.
Изменение именованных коллекций
Именованные коллекции, созданные с помощью DDL-запросов, можно изменять или удалять средствами DDL. Именованными коллекциями, созданными с помощью XML-файлов, можно управлять, редактируя или удаляя соответствующие XML-файлы.Изменить именованную DDL-коллекцию
Измените или добавьте ключиkey1 и key3 в коллекции collection2
(это не изменит значение флага overridable для этих ключей):
key1 и разрешите всегда его переопределять:
key2 из коллекции collection2:
key1, а также удалите ключ key3 в коллекции collection2:
overridable, необходимо
удалить ключ и добавить его заново.
Удалите именованную коллекцию DDL collection2:
Именованные коллекции для доступа к S3
Описание параметров см. в разделе табличной функции S3.Пример DDL
Пример XML
Примеры использования именованной коллекции в функции s3() и таблице S3
В обоих приведённых ниже примерах используется одна и та же именованная коллекцияs3_mydata:
Функция s3()
Таблица S3
Именованные коллекции для доступа к базе данных MySQL
Описание параметров см. на странице mysql.Пример DDL
Пример XML
Примеры для функции mysql(), таблицы MySQL, базы данных MySQL и именованной коллекции словарь
В следующих четырёх примерах используется одна и та же именованная коллекцияmymysql:
Функция mysql()
В именованной коллекции параметр
table не указан, поэтому он задаётся при вызове функции как table = 'test'.Таблица MySQL
DDL переопределяет параметр connection_pool_size в именованной коллекции.
База данных MySQL
Словарь MySQL
Именованные коллекции для доступа к базе данных PostgreSQL
Описание параметров см. в postgresql. Также доступны следующие псевдонимы:usernameдляuserdbдляdatabase.
postgresql_connection_pool_size и другие настройки postgresql_*) также можно хранить в коллекции или передавать в виде переопределений key = value. Они применяются к движку таблицы PostgreSQL, табличной функции postgresql и движку базы данных PostgreSQL; явная секция SETTINGS для таблицы имеет приоритет над значениями из коллекции.
Параметр addresses_expr используется в коллекции вместо host:port. Этот параметр необязателен, поскольку есть и другие необязательные параметры: host, hostname, port. Приоритет показан в следующем псевдокоде:
Пример использования именованных коллекций с функцией postgresql
Пример использования именованных коллекций с базой данных на движке PostgreSQL
PostgreSQL копирует данные из именованной коллекции при создании таблицы. Изменения в коллекции не влияют на уже существующие таблицы.
Пример использования именованных коллекций с базой данных на движке PostgreSQL
Пример использования именованных коллекций со словарём на основе источника POSTGRESQL
Именованные коллекции для доступа к удалённой базе данных ClickHouse
Описание параметров приведено в remote. Пример конфигурации:secure не нужен для подключения, так как используется remoteSecure, но его можно использовать для словарей.
Пример использования именованных коллекций в функциях remote/remoteSecure
Пример использования именованных коллекций со словарём на основе ClickHouse
Именованные коллекции для доступа к Kafka
Описание параметров приведено в разделе Kafka.Пример DDL
Пример XML
Аутентификация OAUTHBEARER/OIDC
ПараметрыOAUTHBEARER относятся к расширенным настройкам librdkafka, поэтому их необходимо размещать внутри <kafka> в каждой именованной коллекции. Ключи верхнего уровня kafka_* задают настройки движка таблицы Kafka. Перед передачей в librdkafka ClickHouse заменяет символы подчёркивания в именах вложенных XML-элементов на точки.
В следующем примере настраиваются учётные данные клиента OAuth для пространства имен Azure Event Hubs:
/etc/clickhouse-server/config.d/named_collections.xml
ENGINE = Kafka(eventhub_one) используется именованная коллекция, ClickHouse не объединяет её с глобальной конфигурацией сервера <kafka>. Если адрес брокера или область действия (scope) OAuth различаются, создайте отдельную коллекцию для каждого пространства имен Event Hubs и укажите в ней все обязательные параметры OIDC.
Атрибуты from_env в этом примере применяются к именованным коллекциям, определённым в XML, и считывают значения из окружения процесса сервера ClickHouse. Подробнее о развертывании и значениях по умолчанию см. в разделе подстановка из переменных окружения, а о защите секретов в предварительно обработанных файлах конфигурации — в разделе шифрование и скрытие конфигурации.
Пример использования именованных коллекций с таблицей Kafka
В обоих приведённых ниже примерах используется одна и та же именованная коллекцияmy_kafka_cluster:
Именованные коллекции для резервных копий
Описание параметров см. в разделе Резервное копирование и восстановление.Пример DDL
Пример XML
Именованные коллекции для доступа к таблице и словарю MongoDB
См. описание параметров в mongodb.Пример DDL
Пример XML
Таблица MongoDB
DDL переопределяет настройку options в named collection.
Словарь MongoDB
Именованная коллекция указывает
my_collection в качестве имени коллекции. В вызове функции это значение переопределяется через collection = 'my_dict', чтобы выбрать другую коллекцию.