PostgreSQL 中的擴充功能和模組是功能強大的工具,可讓使用者擴充資料庫系統的功能。 其範圍可以從簡單的 SQL 對象到複雜的二進位連結庫,提供核心 PostgreSQL 散發中無法使用的額外特性和功能。
擴充
若要定義延伸模組,至少需要一個 腳本檔案 ,其中包含 SQL 命令來建立延伸模組散發的物件,以及一個指定延伸模組本身一些基本屬性的 控制檔 。
在資料庫中建立、安裝或載入延伸模組時,他們會部署一組套件組合物件,以擴充引擎的功能。 這些物件可以是函式、運算符、角色、數據類型、存取方法和其他資料庫物件類型。
從資料庫卸除、解除安裝或卸載延伸模組時,會移除延伸模組所建立的所有物件。 這種情況的例外狀況是,當資料庫中有其他物件與延伸模組所定義的任何物件相依性時。
延伸模組所散發之物件所提供的功能實作可以寫入 SQL 或 PL/pgSQL。 但它也可以在個別的共享連結庫 (binary) 檔案中實作,這是編譯實作功能的原始程式碼(通常是以 C 或 Rust 撰寫)的結果。
在 PostgreSQL 中,延伸模組是透過CREATE EXTENSION、 ALTER EXTENSIONDROP 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