Обзор ADB ClickHouse Connector
В отличие от предыдущей версии коннектора Tkhemali 1.X, основанной на механизме внешних (external) таблиц, ADB ClickHouse Connector реализован на базе foreign data wrapper и foreign-таблиц. Благодаря этому новая версия коннектора к ADQM/ClickHouse обладает следующими функциональными возможностями:
-
Более удобная и безопасная схема управления учетными данными. Если в предыдущей версии коннектора учетные данные пользователей необходимо было прописывать в параметре
LOCATION
на уровне каждой внешней таблицы либо в файле в явном виде, в ADB ClickHouse Connector логин и пароль пользователя хранятся в отдельном объекте базы данных ADB — user mapping. Сопоставление пользователей достаточно описать один раз для одного кластера ClickHouse, с которым планируется соединение. При необходимости данные можно изменять с помощью командыALTER USER MAPPING
. -
Многоуровневые настройки соединения. Общие настройки, которые будут одинаковы для всех или большинства целевых таблиц ClickHouse (стратегия распределения нагрузки, необходимость использования staging-слоя, ограничения для батчей данных и так далее) можно указать на уровне объекта server, а частные настройки (имя конкретной таблицы) — на уровне foreign table. В предыдущей версии коннектора абсолютно все настройки требовалось указывать на уровне external table.
-
Обновленный механизм распределения нагрузки по хостам. В новой версии коннектора список хостов ClickHouse, через которые будет производиться загрузка данных из ADB, указывается в опции
hosts
. Отдельная опцияdistribution_type
отвечает за выбор стратегии распределения нагрузки между выбранными хостами. Поддерживаются два типа распределения: случайное и с использованием алгоритма round-robin. Второй способ предпочтительнее в плане равномерности нагрузки. Наряду с этим, при записи в распределенные (distributed) таблицы возможно указать имя кластера ClickHouse в опцииcluster
на стороне foreign-таблицы — в этом случае перечислять явно все хосты не нужно, достаточно указать одну точку входа, а полный список хостов будет получен автоматически из метаданных кластера. В предыдущей версии коннектора было также возможно получать список хостов для distributed-таблиц, однако нагрузка на хосты кластера ClickHouse могла быть неравномерной. -
Гибкое управление кастомными настройками. Кастомные настройки подключения и выполнения запросов к ClickHouse теперь можно объявить в опции
clickhouse_properties
в следующем формате:<custom_option>=<value>;[…]
. Для изменения настроек достаточно выполнить командуALTER SERVER
илиALTER FOREIGN TABLE
. В предыдущей версии коннектора кастомные настройки для ClickHouse хранились в XML-файле, который необходимо было копировать на все сегмент-хосты ADB. -
Больший контроль над освобождением ресурсов. Foreign data wrapper поддерживает транзакции "из коробки", позволяя подписываться на хуки управления транзакциями. Благодаря этому новая версия коннектора обеспечивает больший контроль над ходом выполнения запросов и освобождением ресурсов, что особенно актуально для транзакционной загрузки данных с использованием staging-таблиц. В предыдущей версии коннектора при определенных обстоятельствах staging-слой мог не удаляться и было необходимо удалять его вручную.
-
Упрощение синтаксиса запросов. Исключена необходимость использования функции
txn
для включения транзакционного режима (использования staging-слоя). В новой версии коннектора для передачи данных из ADB в ClickHouse достаточно выполнить обычный запросINSERT
к соответствующей foreign-таблице. За создание staging-таблиц теперь отвечает отдельный флагuse_staging
. Наряду с этим, в предыдущей версии коннектора было необходимо указывать полное имя таблицы staging при создании external-таблицы. В ADB ClickHouse Connector требуется заполнить только имя целевой таблицы в ClickHouse — в опцииresource
при создании foreign-таблицы. Имена staging-таблиц формируются автоматически на основе шаблона, указанного в опцииstaging_table_name_format
.
ВАЖНО
|
Верхнеуровневая архитектурная схема новой версии коннектора приведена ниже.