擴展 MySQL 8.4  /  MySQL 外掛程式 API  /  外掛程式 API 特性

4.2 外掛程式 API 特性

伺服器外掛程式 API 具有以下特性:

  • 所有外掛程式都有一些共通之處。

    每個外掛程式都有一個名稱,可以在 SQL 陳述式中引用它,以及其他中繼資料,例如作者和說明,以提供其他資訊。這些資訊可以在 INFORMATION_SCHEMA.PLUGINS 表格中檢視,或使用 SHOW PLUGINS 陳述式。

  • 外掛程式框架是可擴展的,可以容納不同類型的外掛程式。

    雖然外掛程式 API 的某些方面對於所有類型的外掛程式都是通用的,但 API 也允許類型特定的介面元素,以便可以建立不同類型的外掛程式。具有一個用途的外掛程式可以具有最適合其自身需求的介面,而不是其他某種外掛程式類型的需求。

    存在多種類型外掛程式的介面,例如儲存引擎、全文剖析器和 INFORMATION_SCHEMA 表格。還可以新增其他介面。

  • 外掛程式可以向使用者公開資訊。

    外掛程式可以實作透過 SHOW VARIABLESSHOW STATUS 陳述式可用的系統和狀態變數。

  • 外掛程式 API 包含版本資訊。

    外掛程式 API 中包含的版本資訊使得外掛程式庫及其包含的每個外掛程式,能夠針對用於建置該程式庫的 API 版本進行自我識別。如果 API 隨著時間推移而變更,版本號碼也會變更,但伺服器可以檢查給定的外掛程式庫的版本資訊,以判斷它是否支援該程式庫中的外掛程式。

    有兩種版本號碼。第一個是通用外掛程式框架本身的 版本。每個外掛程式庫都包含此類版本號碼。第二種版本適用於個別外掛程式。每種特定類型的外掛程式都有一個用於其介面的版本,因此程式庫中的每個外掛程式都有一個類型特定的版本號碼。例如,包含全文剖析器外掛程式的程式庫具有通用外掛程式 API 版本號碼,而該外掛程式具有特定於全文外掛程式介面的版本號碼。

  • 外掛程式 API 實作安全性限制。

    必須將外掛程式庫安裝在特定的專用目錄中,該目錄的位置由伺服器控制,並且無法在執行階段變更。此外,該程式庫必須包含特定的符號,將其識別為外掛程式庫。如果某個程式並非建置為外掛程式,則伺服器不會將其載入為外掛程式。

  • 外掛程式可以存取伺服器服務。

    服務介面公開外掛程式可以使用一般函數呼叫存取的伺服器功能。如需詳細資訊,請參閱MySQL 外掛程式服務

在某些方面,伺服器外掛程式 API 類似於它所取代的舊式可載入函數 API,但外掛程式 API 比舊式介面具有一些優點。例如,可載入的函數沒有版本資訊。此外,較新的外掛程式介面消除了舊式可載入函數介面的安全性問題。用於撰寫非外掛程式的可載入函數的舊式介面允許從系統動態連結器搜尋的任何目錄載入程式庫,並且識別可載入函數程式庫的符號相對而言不夠明確。

用戶端外掛程式 API 具有類似的架構特性,但用戶端外掛程式無法像伺服器外掛程式那樣直接存取伺服器。