Названные коллекции
Названные коллекции предоставляют способ хранения коллекций пар ключ-значение, которые можно использовать для настройки интеграции с внешними источниками. Вы можете использовать названные коллекции с справочниками, таблицами, таблицами функций и облачным хранилищем объектов.
Названные коллекции могут настраиваться с помощью DDL или в конфигурационных файлах и применяются при запуске ClickHouse. Они упрощают создание объектов и скрытие учетных данных от пользователей без административного доступа.
Ключи в названии коллекции должны совпадать с именами параметров соответствующей функции, движка таблицы, базы данных и т. д. В примерах ниже для каждого типа есть ссылка на список параметров.
Параметры, заданные в названии коллекции, могут быть переопределены в SQL, как показано в примерах ниже. Эта возможность может быть ограничена с помощью ключевых слов [NOT] OVERRIDABLE
и XML-атрибутов и/или параметра конфигурации allow_named_collection_override_by_default
.
Если переопределение разрешено, пользователи без административного доступа могут попытаться выяснить учетные данные, которые вы пытаетесь скрыть. Если вы используете названные коллекции с этой целью, следует отключить allow_named_collection_override_by_default
(который включен по умолчанию).
Хранение названных коллекций в системной базе данных
Пример DDL
В приведенном выше примере:
key_1
всегда может быть переопределен.key_2
никогда не может быть переопределен.url
может быть переопределен или нет в зависимости от значенияallow_named_collection_override_by_default
.
Права на создание названных коллекций с помощью DDL
Чтобы управлять названными коллекциями с помощью DDL, пользователь должен иметь привилегию named_control_collection
. Это можно назначить, добавив файл в /etc/clickhouse-server/users.d/
. В примере пользователю default
присваиваются привилегии access_management
и named_collection_control
:
В приведенном выше примере значение password_sha256_hex
является шестнадцатеричным представлением хеша SHA256 пароля. Эта конфигурация для пользователя default
имеет атрибут replace=true
, так как в стандартной конфигурации установлен незашифрованный password
, и невозможно установить как незашифрованный, так и sha256 hex пароли для пользователя.
Хранение названных коллекций
Названные коллекции могут храниться либо на локальном диске, либо в 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
.
Хранение названных коллекций в конфигурационных файлах
Пример 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 Table Function.
Пример DDL
Пример XML
Функция s3() и Примеры таблицы S3 с именованной коллекцией
Оба следующих примера используют одну и ту же названную коллекцию s3_mydata
:
Функция s3()
Первый аргумент функции s3()
выше - это имя коллекции, s3_mydata
. Без названных коллекций идентификатор ключа доступа, секрет, формат и URL должны были бы передаваться в каждом вызове функции s3()
.
Таблица S3
Названные коллекции для доступа к базе данных MySQL
Описание параметров см. в mysql.
Пример DDL
Пример XML
Примеры функции mysql(), таблицы MySQL, базы данных MySQL и названной коллекции справочников
Четыре следующих примера используют одну и ту же названную коллекцию mymysql
:
Функция mysql()
Названная коллекция не указывает параметр table
, поэтому он указывается в вызове функции как table = 'test'
.
Таблица MySQL
DDL переопределяет настройку названной коллекции для connection_pool_size.
База данных MySQL
Справочник MySQL
Названные коллекции для доступа к базе данных PostgreSQL
Описание параметров см. в postgresql. В дополнение есть следующие псевдонимы:
username
дляuser
db
дляdatabase
.
Параметр addresses_expr
используется в коллекции вместо host:port
. Параметр является необязательным, потому что есть другие необязательные: host
, hostname
, port
. Следующий псевдокод объясняет приоритет:
Пример создания:
Пример конфигурации:
Пример использования названных коллекций с функцией postgresql
Пример использования названных коллекций с базой данных с движком PostgreSQL
PostgreSQL копирует данные из названной коллекции при создании таблицы. Изменение в коллекции не влияет на существующие таблицы.
Пример использования названных коллекций с базой данных с движком PostgreSQL
Пример использования названных коллекций со справочником с источником POSTGRESQL
Названные коллекции для доступа к удаленной базе данных ClickHouse
Описание параметров см. в remote.
Пример конфигурации:
secure
не требуется для подключения из-за remoteSecure
, но его можно использовать для справочников.
Пример использования названных коллекций с функциями remote
/remoteSecure
Пример использования названных коллекций со справочником с источником ClickHouse
Названные коллекции для доступа к Kafka
Описание параметров см. в Kafka.
Пример DDL
Пример XML
Пример использования названных коллекций с таблицей Kafka
Оба следующих примера используют одну и ту же названную коллекцию my_kafka_cluster
:
Названные коллекции для резервного копирования
Для описания параметров см. Резервное копирование и восстановление.