本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
PL/Rust is a trusted Rust language extension for PostgreSQL. You can use it for stored procedures, functions, and other procedural code that's callable from SQL. The PL/Rust 語言擴充功能可在下列版本中使用:
-
RDS 適用於 PostgreSQL 16.1 和更新版本 16
-
RDS 適用於 PostgreSQL 15.2-R2 和更新的 15 版本
-
RDS 適用於 PostgreSQL 14.9 和更新版本 14
-
RDS 適用於 PostgreSQL 13.12 和更新版本 13
如需詳細資訊,請參閱開啟 PL/Rust
設定 PL/Rust
若要在資料庫執行個體上安裝 plrust 延伸模組,請將 plrust 新增至與資料庫執行個體相關聯之資料庫參數群組中的 shared_preload_libraries
參數。安裝 plrust 延伸模組後,您可以建立函數。
若要修改 shared_preload_libraries
參數,您的資料庫執行個體必須與自訂參數群組相關聯。如需建立自訂資料庫參數群組的相關資訊,請參閱 的參數組 RDS。
您可以使用 AWS Management Console 或 安裝 plrust 擴充功能 AWS CLI。
下列步驟假設您的資料庫執行個體與自訂資料庫參數群組相關聯。
在 shared_preload_libraries
參數中安裝 plrust 延伸模組
使用屬於 rds_superuser
群組 (角色) 成員的帳戶完成下列步驟。
登入 AWS Management Console ,並在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/
。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇資料庫執行個體的名稱以顯示其詳細資訊。
-
開啟資料庫執行個體的組態索引標籤,然後尋找資料庫執行個體參數群組連結。
-
選擇連結以開啟與資料庫執行個體相關聯的自訂參數。
-
在 Parameters (參數) 搜尋欄位中,輸入
shared_pre
以尋找shared_preload_libraries
參數。 -
選擇 Edit parameters (編輯參數) 以存取屬性值。
-
在值欄位中,將 plrust 新增至清單。使用逗號區隔值清單中的項目。
-
重新啟動資料庫執行個體,以便您對
shared_preload_libraries
參數的變更生效。初始重新啟動可能需要額外的時間才能完成。 -
當執行個體可用時,請驗證 plrust 是否已初始化。使用
psql
連線至資料庫執行個體,然後執行下列命令。SHOW shared_preload_libraries;
您的輸出應該類似以下內容:
shared_preload_libraries -------------------------- rdsutils,plrust (1 row)
在 shared_preload_libraries 參數中安裝 plrust 延伸模組
使用屬於 rds_superuser
群組 (角色) 成員的帳戶完成下列步驟。
-
使用 modify-db-parameter-group AWS CLI 命令將 plrust 新增至
shared_preload_libraries
參數。aws rds modify-db-parameter-group \ --db-parameter-group-name
custom-param-group-name
\ --parameters "ParameterName=shared_preload_libraries,ParameterValue=plrust,ApplyMethod=pending-reboot" \ --regionaws-region
-
使用 reboot-db-instance AWS CLI 命令重新啟動資料庫執行個體並初始化 plrust 程式庫。初始重新啟動可能需要額外的時間才能完成。
aws rds reboot-db-instance \ --db-instance-identifier
your-instance
\ --regionaws-region
-
當執行個體可用時,您可以驗證 plrust 是否已初始化。使用
psql
連線至資料庫執行個體,然後執行下列命令。SHOW shared_preload_libraries;
您的輸出應該類似以下內容:
shared_preload_libraries -------------------------- rdsutils,plrust (1 row)
使用 PL/Rust 建立函數
PL/Rust 會將函數編譯為動態程式庫、載入它,然後執行它。
以下 Rust 函數會從陣列中篩選出倍數。
postgres=> CREATE LANGUAGE plrust; CREATE EXTENSION
CREATE OR REPLACE FUNCTION filter_multiples(a BIGINT[], multiple BIGINT) RETURNS BIGINT[] IMMUTABLE STRICT LANGUAGE PLRUST AS $$ Ok(Some(a.into_iter().filter(|x| x.unwrap() % multiple != 0).collect())) $$; WITH gen_values AS ( SELECT ARRAY(SELECT * FROM generate_series(1,100)) as arr) SELECT filter_multiples(arr, 3) from gen_values;
使用套件搭配 PL/Rust
在 RDS PostgreSQL 16.3-R2 及更高版本、15.7-R2 及更高版本、14.12-R2 及更高版本 14,以及 13.15-R2 及更高版本 13 中,PL/Rust 支援其他條板箱:
-
url
-
regex
-
serde
-
serde_json
在 RDS PostgreSQL 版本 15.5-R2 和更新版本、14.10-R2 和更新版本 14,以及 13.13-R2 和更新版本 13 中,PL/Rust 支援兩個額外的條板箱:
-
croaring-rs
-
num-bigint
從 Amazon RDS for PostgreSQL 15.4、14.9 和 13.12 版開始,PL/Rust 支援下列條板箱:
-
aes
-
ctr
-
rand
這些套件僅支援預設功能。RDS 適用於 PostgreSQL 的新版本可能包含更新版本的條板箱,而且可能不再支援較舊版本的條板箱。
請遵循執行主要版本升級的最佳實務來進行測試,了解您的 PL/Rust 函數是否與新的主要版本相容。如需詳細資訊,請參閱《Amazon 使用者指南》中的將 Amazon 升級RDS到 Postgre 主要和次要版本的部落格最佳實務SQL
使用相依性
PL/Rust 限制
根據預設,資料庫使用者無法使用 PL/Rust. To provide access to PL/Rust、以具有 rds_superuser 權限的使用者身分連線,以及執行下列命令:
postgres=> GRANT USAGE ON LANGUAGE PLRUST TO
user
;