Перейти к основному содержимому

ClickHouse

Модуль 1С/OSOPI_ClickHouseКоманда CLIclickhouse#Использоватьoint/api/clickhouse

Этот раздел посвящен библиотеке для работы с ClickHouse API в 1С:Предприятие, OneScript и CLI. На данной странице описаны все действия, необходимые для полноценного начала работы

Начало работы

ClickHouse — это высокопроизводительная колоночная СУБД с открытым исходным кодом. Библиотека поддерживает работу через HTTP и gRPC протоколы.

Способы подключения

Библиотека поддерживает два основных способа подключения к ClickHouse:

  1. HTTP — стандартный протокол для работы с ClickHouse через HTTP интерфейс
  2. gRPC — высокопроизводительный протокол для работы с ClickHouse через gRPC интерфейс

Настройка HTTP соединения

Для работы через HTTP необходимо:

  1. Получить адрес подключения к ClickHouse (с указанием протокола и порта, например http://localhost:8123)
  2. Подготовить данные авторизации:
    • JWT токен (строка) — для авторизации через JWT (ClickHouse Cloud)
    • Логин и пароль (структура) — для Basic авторизации
  3. Создать настройки соединения при помощи функции ПолучитьНастройкиСоединенияHTTP
Адрес = "http://localhost:8123";

// Авторизация через Basic
Авторизация = Новый Структура;
Авторизация.Вставить("default", "password");

// Авторизация через JWT
Авторизация = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";

НастройкиСоединения = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(Адрес, Авторизация);

Настройка gRPC соединения

Для работы через gRPC необходимо:

  1. Получить адрес подключения к ClickHouse gRPC интерфейсу (например http://localhost:9100)
  2. Подготовить данные авторизации аналогично HTTP
  3. При необходимости настроить TLS при помощи функции ПолучитьНастройкиTls
  4. Создать настройки соединения при помощи функции ПолучитьНастройкиСоединенияGRPC
  5. Открыть соединение при помощи функции ОткрытьСоединениеGRPC
Адрес = "http://localhost:9100";

Авторизация = Новый Структура;
Авторизация.Вставить("default", "password");

// Настройка TLS (опционально)
НастройкиTLS = OPI_ClickHouse.ПолучитьНастройкиTls(Истина);

НастройкиСоединения = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(Адрес, Авторизация, , НастройкиTLS);
Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения);
important

При работе через gRPC рекомендуется использовать открытое соединение (объект коннектора) для выполнения множественных запросов. Это повышает производительность и снижает накладные расходы на установку соединения

Выполнение запросов

После настройки соединения можно выполнять запросы к базе данных:

ТекстЗапроса = "SELECT * FROM system.databases";
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , , "JSON");

Результат = OPI_ClickHouse.ВыполнитьЗапрос(НастройкиСоединения, Запрос);

Внешние таблицы

Для передачи данных в запрос можно использовать внешние таблицы:

// Описание структуры таблицы
Колонки = Новый Структура;
Колонки.Вставить("id", "UInt32");
Колонки.Вставить("name", "String");

// Подготовка данных
Данные = "1,Иван" + Символы.ПС + "2,Петр";

// Создание внешней таблицы
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы("users", Колонки, Данные, "CSV");

МассивТаблиц = Новый Массив;
МассивТаблиц.Добавить(ВнешняяТаблица);

Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("SELECT * FROM users", , , , "JSON", МассивТаблиц);
примечание

При использовании HTTP транспорта нельзя одновременно использовать параметры Данные и Внешние таблицы в запросе

Форматы ответа

Библиотека поддерживает различные форматы получения ответа:

  • JSON форматы (JSON, JSONCompact, JSONColumns и др.) — возвращаются как коллекция
  • Строковые форматы (CSV, TSV, Pretty и др.) — возвращаются как строка
  • Прочие форматы — возвращаются как двоичные данные
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "JSON");
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "CSV");
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "Native");