数据库驱动基础

Metabase驱动程序

  • 为Metabase提供数据库的基本信息,例如数据库的功能、连接属性等。
  • 为Metabase提供数据库模式的信息 – 表(或等效项)、这些表中的字段、外键关系(对于支持外键的数据库)。
    • 此功能由Metabase 同步过程使用,并存储在应用程序数据库中。
    • 存储的信息用于视觉查询构建器和其他地方,以显示用户可用的表/列等。
  • 将我们内部的查询语言,MBQL,编译成本地查询。
    • MBQL查询由视觉查询构建器生成。
    • Metabase 查询处理器*将MBQL查询转换为本地查询。
  • 执行本地查询并返回结果。.

将您的驱动程序作为模块编写,并将其打包为插件

Metabase驱动程序组织成模块,并打包成插件。模块是源代码;插件是从该源代码构建的JAR文件。

Metabase插件是一个包含编译后的类文件和Metabase 插件清单的JAR文件,该清单列出有关驱动程序的信息。在大多数情况下,插件是懒加载的,这意味着Metabase不会初始化驱动程序,直到它连接到将使用该驱动程序的数据库。

为了使Metabase使用您的驱动程序,您只需要将您构建的驱动程序JAR文件放入/plugin目录中,该目录位于运行您的metabase.jar的同一目录中。例如:

/Users/cam/metabase/metabase.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

这是您驱动程序的核心文件。我们将在实现多方法中更多地讨论它。

接下来

我们将更多地了解插件清单

阅读其他Metabase版本的文档。

想要改进这些文档吗? 提出更改。