将MySQL 8.0/MySQL插件API/插件API特性

4.2插件API特性

服务器插件API有以下特征:

  • 所有的插件都有几个共同点。

    每个插件都有一个可以在SQL语句中引用的名称,以及其他元数据,如作者和提供其他信息的描述。这些信息可以在INFORMATION_SCHEMA。插件表格或使用显示插件声明。

  • 插件框架是可扩展的,可以容纳不同种类的插件。

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

    有几种类型的插件的接口,例如存储引擎、全文解析器和INFORMATION_SCHEMA表。还可以添加其他内容。

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

    插件可以实现系统变量和状态变量显示变量显示状态语句。

  • 插件API包含版本信息。

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

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

  • 插件API实现了安全限制。

    插件库必须安装在服务器控制的特定的专用目录中,并且不能在运行时更改。同样,库必须包含特定的符号来标识它是一个插件库。如果它不是作为插件构建的,服务器就不会作为插件加载东西。

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

    服务接口公开了插件可以使用普通函数调用访问的服务器功能。有关详细信息,请参见MySQL插件服务

在某些方面,服务器插件API类似于它所取代的老的用户定义函数(UDF) API,但是插件API比老接口有几个优势。例如,udf没有版本控制信息。另外,新的插件接口消除了旧的UDF接口的安全问题。编写非插件UDF的旧接口允许从系统动态链接器搜索的任何目录中加载库,标识UDF库的符号相对不特定。

客户端插件API具有类似的架构特征,但是客户端插件不像服务器插件那样直接访问服务器。