延伸模組和模組
PostgreSQL 中的擴充功能和模組是功能強大的工具,可讓使用者擴充資料庫系統的功能。 其範圍可以從簡單的 SQL 對象到複雜的二進位連結庫,提供核心 PostgreSQL 散發中無法使用的額外特性和功能。
擴充
若要定義延伸模組,至少需要一個 腳本檔案,其中包含 SQL 命令,以建立延伸模組所散發的物件,以及一個 控件檔案,指定擴充功能本身的一些基本屬性。
在資料庫中建立、安裝或載入延伸模組時,他們會部署一組套件組合物件,以擴充引擎的功能。 這些物件可以是函式、運算符、角色、數據類型、存取方法和其他資料庫物件類型。
卸除、卸載或卸除擴充功能時,會移除延伸模組所建立的所有物件。 這種情況的例外狀況是,當資料庫中有其他物件與延伸模組所定義的任何物件相依性時。
延伸模組所散發之物件所提供的功能實作可以寫入 SQL 或 PL/pgSQL。 但它也可以在個別的共享連結庫 (binary) 檔案中實作,這是編譯實作功能的原始程式碼(通常是以 C 或 Rust 撰寫)的結果。
在 PostgreSQL 中,延伸模組是透過CREATE EXTENSION
、 ALTER EXTENSION
DROP EXTENSION
和 COMMENT ON EXTENSION
命令來管理。
-
CREATE EXTENSION
會建立、安裝或載入擴充功能至執行命令的資料庫。 -
ALTER EXTENSION
將擴充功能更新為較新版本。 -
DROP EXTENSION
從執行命令的資料庫卸除、卸載或卸除擴充功能。 -
COMMENT ON EXTENSION
會將延伸模組的相關批註儲存為資料庫物件。
啟動伺服器時,它會定義所有後端進程可以存取的記憶體區域,以合作方式執行任何工作負載。 在 PostgreSQL 術語中,該記憶體區域稱為 共用記憶體。
某些使用共用連結庫實作功能的擴充功能,需要從這些連結庫內建的程式代碼存取該共用記憶體。 這些延伸模組還有一個需求,也就是伺服器啟動時,主引擎進程必須載入其共用連結庫檔案。 針對這些連結庫,您必須遵循載入連結庫中的指示。
模組
雖然沒有這類延伸模組,因為它們沒有 控件檔案 和 腳本檔案 來部署資料庫中配套的 SQL 物件,但 PostgreSQL 中的另一種擴充性形式是由在獨立共用連結庫檔案中實作功能所組成。
這些檔案也可以在伺服器啟動時載入記憶體中,而且可以實作通常會繞開 PostgreSQL 自然執行路徑的程式代碼,並改變引擎的預設功能。 這種行為改變通常旨在放大引擎的一些有限功能。
適用於 PostgreSQL 的 Azure 資料庫 支援下列模組:
- auto_explain
- pg_failover_slots
- pg_partman_bgw
- wal2json