ClickHouse
Этот раздел посвящен библиотеке для работы с ClickHouse API в 1С:Предприятие, OneScript и CLI. На данной странице описаны все действия, необходимые для полноценного начала работы
Начало работы
ClickHouse — это высокопроизводительная колоночная СУБД с открытым исходным кодом. Библиотека поддерживает работу через HTTP и gRPC протоколы.
Способы подключения
Библиотека поддерживает два основных способа подключения к ClickHouse:
- HTTP — стандартный протокол для работы с ClickHouse через HTTP интерфейс
- gRPC — высокопроизводительный протокол для работы с ClickHouse через gRPC интерфейс
Настройка HTTP соединения
Для работы через HTTP необходимо:
- Получить адрес подключения к ClickHouse (с указанием протокола и порта, например
http://localhost:8123) - Подготовить данные авторизации:
- JWT токен (строка) — для авторизации через JWT (ClickHouse Cloud)
- Логин и пароль (структура) — для Basic авторизации
- Создать настройки соединения при помощи функции
ПолучитьНастройкиСоединенияHTTP
Адрес = "http://localhost:8123";
// Авторизация через Basic
Авторизация = Новый Структура;
Авторизация.Вставить("default", "password");
// Авторизация через JWT
Авторизация = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
НастройкиСоединения = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(Адрес, Авторизация);
Настройка gRPC соединения
Для работы через gRPC необходимо:
- Получить адрес подключения к ClickHouse gRPC интерфейсу (например
http://localhost:9100) - Подготовить данные авторизации анал огично HTTP
- При необходимости настроить TLS при помощи функции
ПолучитьНастройкиTls - Создать настройки соединения при помощи функции
ПолучитьНастройкиСоединенияGRPC - Открыть соединение при помощи функции
ОткрытьСоединениеGRPC
Адрес = "http://localhost:9100";
Авторизация = Новый Структура;
Авторизация.Вставить("default", "password");
// Настройка TLS (опционально)
НастройкиTLS = OPI_ClickHouse.ПолучитьНастройкиTls(Истина);
НастройкиСоединения = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(Адрес, Авторизация, , НастройкиTLS);
Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения);
При работе через 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");