Настройка ADB ClickHouse Connector
Для отправки данных из ADB в ClickHouse через ADB ClickHouse Connector необходимо предварительно создать следующие объекты на стороне кластера ADB:
-
Server — инкапсулирует информацию о соединении с внешним источником данных.
-
User mapping — обеспечивает аутентификацию во внешнем источнике данных посредством сопоставления пользователей.
-
Foreign table — таблица ADB, определяющая структуру внешних данных. Foreign-таблица не хранит данные в ADB, но к ней можно обращаться с помощью запросов как к обычной таблице.
Примеры использования перечисленных объектов для отправки данных из ADB в ADQM приведены в статье Примеры использования ADB ClickHouse Connector.
ВАЖНО
|
Server
Для создания сервера предназначена команда CREATE SERVER
, базовый синтаксис которой приведен ниже:
CREATE SERVER <server_name> [ TYPE '<server_type>' ] [ VERSION '<server_version>' ]
FOREIGN DATA WRAPPER <fdw_name>
[ OPTIONS ( [ <option> '<value>' [, ... ]] ) ]
где:
-
<server_name>
— имя сервера в ADB. Должно быть уникальным в рамках текущей базы данных ADB. -
<server_type>
— необязательный параметр, определяющий тип сервера. -
<server_version>
— необязательный параметр, определяющий версию сервера. -
<fdw_name>
— имя обертки внешних данных (foreign data wrapper). Необходимо указатьtkh_fdw
— foreign data wrapper, который создается автоматически после установки коннектора (см. шаг 8 в статье Установка ADB ClickHouse Connector). -
<option>
— параметры сервера, определяющие детали подключения к внешнему источнику данных. Список возможных опций для ADB ClickHouse Connector приведен в таблице Опции сервера ниже. Обратите внимание, что эти опции могут быть определены как на уровне сервера, так и на уровне foreign-таблицы. При этом опции, отмеченные как обязательные, должны быть указаны на одном из уровней. -
<value>
— значения соответствующих параметров<option>
.
ПРИМЕЧАНИЕ
|
Имя | Тип | Описание | Default | Обязательность |
---|---|---|---|---|
database |
TEXT |
Имя базы данных в ClickHouse, в которой расположена целевая таблица. Должно соответствовать регулярному выражению |
— |
Да |
hosts |
TEXT |
Список хостов в ClickHouse, на которых расположена целевая таблица. Поскольку кластер ClickHouse не имеет единой точки входа (Master-ноды) и запросы могут отправляться к любому из хостов в кластере, для снижения нагрузки отправка батчей данных со стороны коннектора на хосты осуществляется согласно выбранной стратегии Правила валидации параметра |
— |
Да |
lines_batch_size |
INT |
Максимальное количество строк в батче данных, отправляемых в ClickHouse со стороны коннектора. Для ввода допускаются целые положительные числа |
100000 |
Нет |
bytes_batch_size_mb |
INT |
Максимальный размер батча данных, отправляемых в ClickHouse со стороны коннектора (в МБ). При одновременном указании с параметром Для ввода допускаются целые положительные числа |
— |
Нет |
send_compressed |
BOOL |
Флаг, указывающий на необходимость компрессии данных на стороне коннектора перед отправкой в ClickHouse. Возможные значения:
|
false |
Нет |
send_delay |
INT |
Задержка между запросами со стороны коннектора к ClickHouse (в миллисекундах). Для ввода допускаются целые положительные числа |
300 |
Нет |
insert_distributed_sync |
BOOL |
Включает или отключает режим синхронного добавления данных в распределенные (distributed) таблицы. Возможные значения:
|
true |
Нет |
distribution_type |
TEXT |
Определяет стратегию распределения нагрузки между хостами ClickHouse (см. Возможные значения:
|
random |
Нет |
use_staging |
BOOL |
Флаг, указывающий на необходимость создания коннектором staging-таблиц на стороне ClickHouse перед выполнением вставки данных в целевую таблицу. Используется для эмуляции транзакций, которые отсутствуют в ClickHouse. Staging-таблицы поддерживаются только для следующих семейств движков в ClickHouse: MergeTree (в том числе их Replicated*-аналоги) и Distributed. Для остальных движков будет возвращаться ошибка при создании staging-окружения, так как не для всех типов движков можно реализовать подключение партиций в ClickHouse. Возможные значения:
|
— |
Да |
staging_table_name_format |
TEXT |
Определяет формат наименования staging-таблиц (см. |
— |
Да, если |
clickhouse_properties |
TEXT |
Перечень кастомных опций ClickHouse в формате |
— |
Нет |
fdw_startup_cost |
DOUBLE |
Оценка стоимости получения первой строки от источника данных. Для ввода допускаются дробные положительные числа. Опция может быть использована только в запросах |
1000.0 |
Нет |
fdw_tuple_cost |
DOUBLE |
Оценка стоимости получения одной строки от источника данных. Для ввода допускаются дробные положительные числа. Опция может быть использована только в запросах |
0.01 |
Нет |
fdw_tuples_count |
DOUBLE |
Оценка количества всех строк в источнике данных. Без учета селективности запроса, условий Для ввода допускаются дробные положительные числа >= Опция может быть использована только в запросах |
100000.0 |
Нет |
User mapping
Для создания сопоставления пользователей предназначена команда CREATE USER MAPPING
, базовый синтаксис которой приведен ниже:
CREATE USER MAPPING FOR { <username> | USER | CURRENT_USER | PUBLIC }
SERVER <server_name>
[ OPTIONS ( <option> '<value>' [, ... ] ) ]
где:
-
<username>
— имя пользователя в базе данных ADB. Наряду с явным указанием пользователя, допускается ввод следующих констант:-
USER
илиCURRENT_USER
— текущий пользователь, установивший соединение с ADB. -
PUBLIC
— все существующие и будущие пользователи ADB.
-
-
<server_name>
— имя сервера. -
<option>
— параметры сопоставления пользователей. Как правило, включают имя пользователя и пароль для подключения к внешнему источнику данных. Список возможных опций для ADB ClickHouse Connector приведен в таблице Опции сопоставления пользователей ниже. -
<value>
— значения соответствующих параметров<option>
.
ПРИМЕЧАНИЕ
|
Имя | Тип | Описание | Default | Обязательность |
---|---|---|---|---|
clickhouse_username |
TEXT |
Имя пользователя в ClickHouse |
— |
Да |
clickhouse_password |
TEXT |
Пароль пользователя в ClickHouse. В случае отсутствия пароля (например, в тестовом окружении) указывается пустая строка |
— |
Да |
Foreign table
Для создания foreign-таблицы предназначена команда CREATE FOREIGN TABLE
, базовый синтаксис которой приведен ниже:
CREATE FOREIGN TABLE [ IF NOT EXISTS ] <table_name> ( [
<column_name> <data_type> [ COLLATE <collation> ] [ <column_constraint> [ ... ] ]
[, ... ]
] )
SERVER <server_name>
[ OPTIONS ( <option> '<value>' [, ... ] ) ]
где:
-
<table_name>
— имя foreign-таблицы в ADB. -
<column_name>
— имя столбца. -
<data_type>
— тип данных столбца. -
<collation>
— используемая для столбца сортировка (collation). -
<column_constraint>
— ограничение (constraint), определенное на уровне столбца. Имя ограничения<constraint_name>
указывается опционально. Синтаксис:[ CONSTRAINT <constraint_name> ] { NOT NULL | NULL | DEFAULT <default_expr> }
Возможные ограничения:
-
NOT NULL
— указывает, что столбец не может содержать null-значений. -
NULL
— указывает, что столбец может содержать null-значения. Это ограничение используется по умолчанию (если не указаноNOT NULL
). -
DEFAULT
— определяет для столбца значение по умолчанию<default_expr>
.
-
-
<server_name>
— имя сервера. -
<option>
— параметры foreign-таблицы. Для ADB ClickHouse Connector все опции, определенные на уровне сервера , могут быть переопределены на уровне foreign-таблиц (частично или полностью). При одновременном указании какой-либо опции для сервера и таблицы табличный уровень имеет больший приоритет. Дополнительно на уровне foreign table объявляются еще две опции, приведенные в таблице Опции foreign-таблицы ниже. -
<value>
— значения соответствующих параметров<option>
.
ПРИМЕЧАНИЕ
|
Имя | Тип | Описание | Default | Обязательность |
---|---|---|---|---|
resource |
TEXT |
Имя таблицы на стороне ClickHouse. Если вам необходимо реализовать собственную стратегию распределения данных по хостам (шардирование), необходимо использовать вставку через распределенную (distributed) таблицу ClickHouse с настроенным ключом шардирования, указав ее имя в опции Значение опции должно соответствовать регулярному выражению |
— |
Да |
cluster |
TEXT |
Имя кластера в ClickHouse. Для получения дополнительной информации можно обратиться к статье Типовой кластер в документации ADQM. При указании опции Опция Максимальная длина имени кластера — 128 символов |
— |
Нет |