服务器插件 API 具有以下特性
-
所有插件都有一些共同点。
每个插件都有一个名称,可以在 SQL 语句中引用,以及其他元数据,如作者和描述,提供其他信息。 可以在
INFORMATION_SCHEMA.PLUGINS
表中或使用SHOW PLUGINS
语句查看此信息。 -
插件框架是可扩展的,以适应不同类型的插件。
尽管插件 API 的某些方面对于所有类型的插件都是通用的,但 API 也允许特定于类型的接口元素,以便可以创建不同类型的插件。 具有一个用途的插件可以具有最适合其自身需求的接口,而不是其他某些插件类型的需求。
存在几种类型的插件的接口,例如存储引擎、全文解析器和
INFORMATION_SCHEMA
表。 可以添加其他类型。 -
插件可以向用户公开信息。
插件可以实现系统和状态变量,可以通过
SHOW VARIABLES
和SHOW STATUS
语句获得这些变量。 -
插件 API 包含版本信息。
插件 API 中包含的版本信息使插件库及其包含的每个插件能够根据用于构建库的 API 版本进行自我识别。 如果 API 随着时间的推移而发生变化,版本号也会发生变化,但服务器可以检查给定插件库的版本信息,以确定它是否支持库中的插件。
版本号有两种类型。 第一个是通用插件框架本身的版本。 每个插件库都包含这种类型的版本号。 第二种类型的版本适用于单个插件。 每种特定类型的插件都有其接口的版本,因此库中的每个插件都有一个特定于类型的版本号。 例如,包含全文解析器插件的库具有通用插件 API 版本号,并且该插件具有特定于全文插件接口的版本号。
-
插件 API 实现安全限制。
插件库必须安装在特定的专用目录中,该目录的位置由服务器控制,并且不能在运行时更改。 此外,库必须包含将其标识为插件库的特定符号。 如果未将某些内容构建为插件,则服务器不会将其加载为插件。
-
插件可以访问服务器服务。
服务接口公开了服务器功能,插件可以使用普通函数调用访问这些功能。 有关详细信息,请参阅 MySQL 插件服务。
在某些方面,服务器插件 API 类似于它所取代的较旧的可加载函数 API,但插件 API 与较旧的接口相比具有几个优势。 例如,可加载函数没有版本信息。 此外,较新的插件接口消除了较旧的可加载函数接口的安全问题。 用于编写非插件可加载函数的较旧接口允许从系统动态链接器搜索的任何目录加载库,并且标识可加载函数库的符号相对非特定。
客户端插件 API 具有类似的架构特征,但客户端插件不能像服务器插件那样直接访问服务器。