# Основы драйвера базы данных Драйвер Glarus BI: - **Предоставляет Glarus BI основную информацию о базе данных**, такую как возможности базы данных, свойства подключения и т.д. - **Предоставляет Glarus BI информацию о схеме базы данных** — таблицах (или эквивалентных элементах), полях в этих таблицах, связях внешних ключей (для баз данных, поддерживающих внешние ключи). - Эта функциональность используется процессом _sync_ Glarus BI и хранится в базе данных приложения. - сохранённая информация используется в визуальном конструкторе запросов и других местах, чтобы показать пользователям, какие таблицы/столбцы/и т. д. доступны. - **Компилирует язык запросов MBQL в прямые запросы.** - Запросы MBQL генерируются визуальным конструктором запросов. - Glarus BI **процессор запросов** преобразует запросы MBQL в прямые запросы. - **Выполняет прямые запросы и возвращает результаты**. ## Напишите свой драйвер как модуль и упакуйте его как плагин Драйверы Glarus BI организованы в модули и упакованы в виде подключаемых плагинов. Модули — это исходный код; плагины — это файлы JAR, созданные из этого исходного кода. Плагин Glarus BI — это файл JAR, который содержит скомпилированные файлы классов и [манифест плагина](plugins.md), в котором перечислены сведения о драйвере. В большинстве случаев плагины поддерживают ленивую загрузку, что означает, что Glarus BI не будет инициализировать драйверы, пока не подключится к базе данных, которая будет использовать драйвер. Чтобы Glarus BI могла использовать ваш драйвер, всё что вам нужно сделать — поместить созданный вами JAR-файл драйвера в каталог `/plugin`, который вы найдёте в том же каталоге, где вы запускаете свой glarusBI.jar. Он может выглядеть, например, следующим образом: ```sh /Users/cam/metabase/glarusBI.jar /Users/cam/metabase/plugins/my-plugin.jar ``` Вы можете изменить каталог плагина, установив [переменную окружения][env-var] `MB_PLUGINS_DIR`. ## Пример каталога модуля Давайте взглянем на [драйвер SQLite](https://github.com/metabase/metabase/tree/master/modules/drivers/sqlite): ```text |-- 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` [Манифест вашего драйвера](plugins.md#plugin-manifests) содержит подробную информацию о вашем драйвере. ### `src/metabase/driver/sqlite.clj` Это основной файл для вашего драйвера. Подробнее об этом мы поговорим в [реализации мультиметодов](multimethods.md). ## Дополнительная информация Узнать больше о [манифестах плагинов](plugins.md). [env-var]: ../../configuring-metabase/environment-variables.md