Обзор 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.

ВАЖНО
  • ADB ClickHouse Connector доступен только в Enterprise-версии ADB 6 (начиная с версии 6.23.3.44).

  • Начиная с версии 6.24.3.47 в ADB 6 ClickHouse Connector поддерживает как запись, так и чтение данных из ADQM/ClickHouse. Однако, чтобы использовать foreign-таблицу в ADB для чтения, в ней необходимо определить имена столбцов, точно совпадающие с соответствующими именами в таблице ADQM/ClickHouse.

Верхнеуровневая архитектурная схема новой версии коннектора приведена ниже.

Схема выполнения запроса INSERT в ADB ClickHouse Connector
Схема выполнения запроса INSERT
Схема выполнения запроса INSERT в ADB ClickHouse Connector
Схема выполнения запроса INSERT
Схема выполнения запроса SELECT в ADB ClickHouse Connector
Схема выполнения запроса SELECT
Схема выполнения запроса SELECT в ADB ClickHouse Connector
Схема выполнения запроса SELECT
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней