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