数据库驱动程序基础知识
Metabase 驱动程序
- 为 Metabase 提供数据库的基本信息,例如数据库的功能、连接属性等。
- 为 Metabase 提供关于数据库模式的信息 – 表(或等效项)、这些表中的字段、外键关系(对于支持外键的数据库)。
- 此功能由 Metabase同步进程使用,并存储在应用程序数据库中。
- 存储的信息在可视化查询构建器和其他位置使用,以向用户显示可用的表/列/等。
- 将我们的内部查询语言 MBQL 编译为原生查询。
- MBQL 查询由可视化查询构建器生成。
- Metabase 查询处理器* 将 MBQL 查询转换为原生查询
- 执行原生查询并返回结果.
将您的驱动程序编写为模块,并将其打包为插件
Metabase 驱动程序被组织成模块并打包为插件。模块是源代码;插件是从该源代码构建的 JAR。
Metabase 插件是一个 JAR 文件,其中包含编译后的类文件和一个 Metabase 插件清单,其中列出了关于驱动程序的详细信息。在大多数情况下,插件是延迟加载的,这意味着 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 版本的文档。