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