Настройка SQL Backend

SQL Backend представляет из себя отдельную настройку на ViQube, за счет которой запросы выполняются либо на данных ViQube (In-memory), либо в сторонней базе (далее SQL-СУБД).

Данная статья описывает как произвести настройку SQL Backend на ViQube, что позволит ретранслировать запросы в SQL-СУБД, например ClickHouse. Полный перечень поддерживаемых СУБД приведен в Поддерживаемые СУБД.

Основные этапы настройки SQL Backend

На момент настройки в SQL-СУБД уже должны быть таблицы, наполненные данными.

Основные этапы настройки SQL Backend:

  1. Создание в ViQube таблиц, идентичных в используемой SQL-СУБД
  2. Подготовка и применение структуры маппинга с помощью API

Создание таблиц, идентичных SQL-СУБД

В ViQube необходимо создать такие же таблицы, как и в используемой SQL-СУБД

  1. ViQube берет запрос и транслирует в SQL, запрос выполняется и возвращаются данные. Эти данные попадают в таблицу с результатом. Поэтому в ViQube должна быть точно такая же структура таблицы с точно такими же типами полей, чтобы можно было вывести результирующую таблицу.
  2. Наименования таблицы и столбцов могут отличаться, но типы данных должны быть одинаковыми. Это необходимо для корректного маппинга при трансляции запросов в SQL-СУБД.
  3. Если в таблице в SQL-СУБД есть дополнительные столбцы, которых нет в таблице в ViQube и их использовать не планируется, то такое расхождение а таблицах допустимо. ViQube просто будет их игнорировать, если не указывать их в настройках SQL Backend.

Создать таблицы можно с помощью стандартного механизма Загрузчиков. Например, загрузив только первые 10 строк. В дальнейшем при подключении этой таблицы к SQL-СУБД данные из ViQube будут игнорироваться. Описание создания таблиц с помощью загрузчиков приводится в разделе: Загрузка данных и создание многомерной модели данных.


Настройка SQL Backend

Работа с SQL Backend на ViQube происходит с помощью запросов по API. 

Проверка текущих настроек - GET

  1. Чтобы просмотреть текущие настройки SQL Backend необходимо отправить GET-запрос:

    curl --location --request GET 'http://192.168.4.101/viqube/sqlbackend' \
    --header 'X-API-VERSION: 3.8' \
    --header 'Authorization: 'Bearer <token>'

    IP адрес, HTTP/HTTPS и <Bearer token> необходимо заменить на свои. Как получить <Bearer token> описано в разделе Получение токена аутентификации. 
    X-API-VERSION 3.8 актуальна для 2.27, и может быть другой для вашей версии платформы.
    На время тестирования авторизацию на ViQube можно отключить, в таком случае заголовок Authorization не нужен.

  2. В ответе получаем следующие настройки SQL Backend (по умолчанию):

    {
      "enabled": false,
      "jdbcOptions": {
        "connection": ""
      },
      "sqlMapping": {}
    }

Применение новых настроек - PUT

  1. Чтобы применить новые настройки SQL Backend необходимо отправить PUT-запрос с подготовленными настройками. Подробное описание структуры настроек приведено в разделе "Структура настроек SQL Backend".
  2. В случае успешного применения настроек будет возвращено "200".
  3. После успешного применения настроек все таблицы, которые были настроены на SQL-СУБД при запросах будут обращаться напрямую в SQL-СУБД, а не ViQube.

Структура настроек SQL Backend

Настройки SQL Backend состоят из:

  • строки подключения, параметров подключения
  • описания соответствия таблиц и колонок в ViQube и SQL-СУБД
ПараметрОписание
enabledВключен или выключен SQL Backend
jdbcOptionsНастройки и опции подключения к SQL-СУБД

connectionСтрока подключения для JDBC драйвера. Адрес в строке необходимо указать такой, чтобы он был доступен изнутри контейнера viqube-master

isResetUpdateTime

"true" - сбрасывать кэш при каждом запросе.

"false" - ответы кэшируются (может быть использован для ускорения работы дашбордов)


socket_timeout Таймаут для выполнения запросов в SQL-СУБД 
sqlMapping Перечисляются все таблицы, запросы для которых нужно транслировать в SQL-СУБД

Ключ Имя таблицы в ViQube (In-memory)

sqlTable

Имя таблицы в SQL-СУБД. Если имена совпадают можно не писать это поле, или указать ““.

Если таблица не указана, то запросы с участием этой таблицы не будут транслироваться в  SQL-СУБД


columns

Перечисляются все поля (столбцы) таблиц, запросы для которых нужно транслировать в SQL.

Если имя столбца в таблице в ViQube (In-memory) и в таблице в SQL-СУБД совпадают и это не столбец с типом "Дата" или "ДатаВремя", то указывать его в секции не нужно

Если имя столбца в таблице в ViQube (In-memory) и в таблице в SQL-СУБД НЕ совпадают и это НЕ столбец с типом "Дата" или "ДатаВремя",то указывать нужно:

"name_in_viqube": {"OFF": "name_in_sql"}

Для всех полей с типом "Дата" или "ДатаВремя" нужно задавать правила замещения колонок, так как в ViQube (In-memory) есть свои особенности в работе с датой.

Если в базе данных используется схема, то необходимо обрамлять в кавычки название схемы и название таблицы. Например:

"sqlTable": "\"scheme\".\"table\""

Строка типа "sqlTable":"scheme.table" работать не будет.


Шаблоны для настроек поддерживаемых СУБД приведены в разделе: Примеры структур настроек для СУБД.

Отключение SQL Backend

Чтобы выключить режим SQL Backend на некоторых таблицах достаточно отправить обновленный PUT-запрос, в котором НЕ будет этих таблиц.

  1. Чтобы полностью выключить режим SQL Backend необходимо отправить PUT-запрос:

    {
        "enabled": false,
        "jdbcOptions": {
            "connection": ""
        },
        "sqlMapping": {}
    }
  2. В случае успешного применения настроек будет возвращено "200".
  3. Теперь при запросе настроек с помощью GET-запроса, будут возвращены исходные настройки:

    {
      "enabled": false,
      "jdbcOptions": {
        "connection": ""
      },
      "sqlMapping": {}
    }

Пример настройки

Пример настройки SQL Backend на ClikHouse: