Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan PL/Rust untuk menulis fungsi PostgreSQL dalam bahasa Rust
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/Rustekstensi bahasa tersedia dalam versi berikut:
-
RDS untuk PostgreSQL 17.1 dan versi 17 yang lebih tinggi
-
RDS untuk PostgreSQL 16.1 dan versi 16 yang lebih tinggi
-
RDS for PostgreSQL 15.2-R2 dan versi 15 yang lebih tinggi
-
RDS for PostgreSQL 14.9 dan versi 14 yang lebih tinggi
-
RDS for PostgreSQL 13.12 dan versi 13 yang lebih tinggi
Untuk informasi lebih lanjut, lihat PL/Rust
Menyiapkan PL/Rust
Untuk menginstal ekstensi plrust pada instans DB Anda, tambahkan plrust ke parameter shared_preload_libraries
dalam grup parameter DB yang terkait dengan instans DB Anda. Dengan ekstensi plrust yang terinstal, Anda dapat membuat fungsi.
Untuk mengubah parameter shared_preload_libraries
, instans DB Anda harus berkaitan dengan grup parameter kustom. Untuk informasi tentang cara membuat grup parameter DB kustom, lihat Grup parameter untuk RDS.
Anda dapat menginstal ekstensi plrust menggunakan AWS Management Console atau. AWS CLI
Langkah-langkah berikut mengasumsikan bahwa instans Anda dikaitkan dengan grup parameter DB kustom.
Instal ekstensi plrust di parameter shared_preload_libraries
Lakukan langkah-langkah berikut menggunakan akun yang merupakan anggota grup rds_superuser
(peran).
Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/
. -
Di panel navigasi, pilih Basis Data.
-
Pilih nama instans DB Anda untuk menampilkan detailnya.
-
Buka tab Konfigurasi untuk instans DB Anda dan temukan tautan grup parameter instans DB.
-
Pilih tautan untuk membuka parameter kustom yang terkait dengan instans DB.
-
Di bidang pencarian Parameter, ketik
shared_pre
untuk menemukan parametershared_preload_libraries
. -
Pilih Edit parameter untuk mengakses nilai properti.
-
Tambahkan plrust ke daftar di bidang Nilai. Gunakan koma untuk memisahkan item dalam daftar nilai.
-
Boot ulang instans DB sehingga perubahan Anda pada parameter
shared_preload_libraries
akan berlaku. Boot ulang awal mungkin memerlukan waktu tambahan untuk menyelesaikannya. -
Ketika instans tersedia, verifikasi bahwa plrust telah diinisialisasi. Gunakan
psql
untuk terhubung ke instans DB, kemudian jalankan perintah berikut.SHOW shared_preload_libraries;
Output-nya semestinya mirip dengan yang berikut:
shared_preload_libraries -------------------------- rdsutils,plrust (1 row)
Instal ekstensi plrust di parameter shared_preload_libraries
Lakukan langkah-langkah berikut menggunakan akun yang merupakan anggota grup rds_superuser
(peran).
-
Gunakan modify-db-parameter-group AWS CLI perintah untuk menambahkan plrust ke
shared_preload_libraries
parameter.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
-
Gunakan reboot-db-instance AWS CLI perintah untuk me-reboot instance DB dan menginisialisasi pustaka plrust. Boot ulang awal mungkin memerlukan waktu tambahan untuk menyelesaikannya.
aws rds reboot-db-instance \ --db-instance-identifier
your-instance
\ --regionaws-region
-
Ketika instans tersedia, Anda dapat memverifikasi bahwa plrust telah diinisialisasi. Gunakan
psql
untuk terhubung ke instans DB, kemudian jalankan perintah berikut.SHOW shared_preload_libraries;
Output-nya semestinya mirip dengan yang berikut:
shared_preload_libraries -------------------------- rdsutils,plrust (1 row)
Membuat fungsi dengan PL/Rust
PL/Rust akan mengompilasi fungsi sebagai pustaka dinamis, memuatnya, dan menjalankannya.
Fungsi Rust berikut menyaring kelipatan dari array.
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;
Menggunakan crate dengan PL/Rust
Dalam RDS untuk PostgreSQL versi 16.3-R2 dan lebih tinggi, 15.7-R2 dan versi 15 yang lebih tinggi, 14.12-R2 dan versi 14 yang lebih tinggi, dan 13.15-R2 dan versi 13 yang lebih tinggi, PL/Rust mendukung peti tambahan:
-
url
-
regex
-
serde
-
serde_json
Dalam RDS untuk PostgreSQL versi 15.5-R2 dan lebih tinggi, 14.10-R2 dan versi 14 yang lebih tinggi, dan 13.13-R2 dan versi 13 yang lebih tinggi, PL/Rust mendukung dua peti tambahan:
-
croaring-rs
-
num-bigint
Dimulai dengan Amazon RDS untuk PostgreSQL versi 15.4, 14.9, dan 13.12, PL/Rust mendukung peti berikut:
-
aes
-
ctr
-
rand
Hanya fitur default yang didukung untuk crate ini. Versi RDS for PostgreSQL baru mungkin berisi versi crate terbaru, dan crate versi lama yang mungkin tidak lagi didukung lagi.
Ikuti praktik terbaik untuk melakukan peningkatan versi utama untuk menguji apakah fungsi PL/Rust Anda kompatibel dengan versi utama yang baru. Untuk informasi selengkapnya, lihat blog Best practices for upgrading Amazon RDS to major and minor versions of PostgreSQL
Contoh penggunaan dependensi saat membuat fungsi PL/Rust tersedia di Gunakan dependensi
Batasan PL/Rust
Secara default, pengguna database tidak dapat menggunakanPL/Rust. To provide access to PL/Rust, terhubung sebagai pengguna dengan hak istimewa rds_superuser, dan menjalankan perintah berikut:
postgres=> GRANT USAGE ON LANGUAGE PLRUST TO
user
;