Основы драйвера базы данных

Драйвер Glarus BI:

  • Предоставляет Glarus BI основную информацию о базе данных, такую как возможности базы данных, свойства подключения и т.д.

  • Предоставляет Glarus BI информацию о схеме базы данных — таблицах (или эквивалентных элементах), полях в этих таблицах, связях внешних ключей (для баз данных, поддерживающих внешние ключи).

    • Эта функциональность используется процессом sync Glarus BI и хранится в базе данных приложения.

    • сохранённая информация используется в визуальном конструкторе запросов и других местах, чтобы показать пользователям, какие таблицы/столбцы/и т. д. доступны.

  • Компилирует язык запросов MBQL в прямые запросы.

    • Запросы MBQL генерируются визуальным конструктором запросов.

    • Glarus BI процессор запросов преобразует запросы MBQL в прямые запросы.

  • Выполняет прямые запросы и возвращает результаты.

Напишите свой драйвер как модуль и упакуйте его как плагин

Драйверы Glarus BI организованы в модули и упакованы в виде подключаемых плагинов. Модули — это исходный код; плагины — это файлы JAR, созданные из этого исходного кода.

Плагин Glarus BI — это файл JAR, который содержит скомпилированные файлы классов и манифест плагина, в котором перечислены сведения о драйвере. В большинстве случаев плагины поддерживают ленивую загрузку, что означает, что Glarus BI не будет инициализировать драйверы, пока не подключится к базе данных, которая будет использовать драйвер.

Чтобы Glarus BI могла использовать ваш драйвер, всё что вам нужно сделать — поместить созданный вами JAR-файл драйвера в каталог /plugin, который вы найдёте в том же каталоге, где вы запускаете свой glarusBI.jar. Он может выглядеть, например, следующим образом:

/Users/cam/metabase/glarusBI.jar
/Users/cam/metabase/plugins/my-plugin.jar

Вы можете изменить каталог плагина, установив переменную окружения MB_PLUGINS_DIR.

Пример каталога модуля

Давайте взглянем на драйвер SQLite:

|-- deps.edn
|-- resources
|   `-- metabase-plugin.yaml
|-- src
|   `-- metabase
|       `-- driver
|           `-- sqlite.clj
`-- test
    `-- metabase
        |-- driver
        |   `-- sqlite_test.clj
        `-- test
            `-- data
                `-- sqlite.clj

Здесь нужно вызвать три файла:

deps.edn

Файл deps.edn определяет зависимости драйвера.

resources/metabase-plugin.yaml

Манифест вашего драйвера содержит подробную информацию о вашем драйвере.

src/metabase/driver/sqlite.clj

Это основной файл для вашего драйвера. Подробнее об этом мы поговорим в реализации мультиметодов.

Дополнительная информация

Узнать больше о манифестах плагинов.