28.2.2 插件 API 特性

服务器插件 API 具有以下 Feature:

  • 所有插件都有一些共同点。

每个插件都有一个可以在 SQL 语句中引用的名称,以及其他元数据(例如提供其他信息的作者和描述)。可以在INFORMATION_SCHEMA.PLUGINStable 中或使用SHOW PLUGINS语句检查此信息。

  • 插件框架是可扩展的,以适应不同类型的插件。

尽管插件 API 的某些方面对于所有类型的插件都是通用的,但 API 还允许使用特定于类型的界面元素,以便可以创建不同类型的插件。具有一个目的的插件可以具有最适合其自身需求的接口,而不适合某些其他插件类型的需求。

存在几种类型的插件的接口,例如存储引擎,全文解析器和INFORMATION_SCHEMAtable。其他可以添加。

  • 插件可以向用户公开信息。

插件可以实现通过SHOW VARIABLESSHOW STATUS语句可用的系统和状态变量。

  • 插件 API 包含版本信息。

插件 API 中包含的版本信息使插件库及其包含的每个插件能够相对于用于构建库的 API 版本进行自我识别。如果 API 随时间变化,版本号也会改变,但是服务器可以检查给定插件库的版本信息,以确定它是否支持该库中的插件。

有两种类型的版本号。第一个是通用插件框架本身的版本。每个插件库都包含这种版本号。第二种类型的版本适用于单个插件。每种特定类型的插件都有其接口的版本,因此库中的每个插件都具有特定类型的版本号。例如,包含全文语法分析器插件的库具有通用插件 API 版本号,并且插件具有特定于全文插件接口的版本号。

  • 插件 API 实施了安全性限制。

插件库必须安装在特定的专用目录中,该位置的位置由服务器控制,并且无法在运行时更改。而且,该库必须包含将其标识为插件库的特定符号。如果服务器不是作为插件构建的,则服务器不会将其作为插件加载。

  • 插件可以访问服务器服务。

服务接口公开了服务器功能,插件可以使用普通功能调用来访问这些服务器功能。有关详细信息,请参见第 28.3 节“用于插件的 MySQL 服务”

在某些方面,服务器插件 API 与其替代的较旧的用户定义函数(UDF)API 相似,但是与较旧的界面相比,该插件 API 具有多个优点。例如,UDF 没有版本信息。同样,更新的插件界面消除了旧的 UDF 界面的安全性问题。较早的用于编写非插件 UDF 的接口允许从系统的动态链接器搜索的任何目录中加载库,并且标识 UDF 库的符号相对而言是非特定的。

Client 端插件 API 具有相似的体系结构 Feature,但是 Client 端插件无法像服务器插件那样直接访问服务器。