数据库驱动基础
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版本的文档。