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 SQL fungsi Postgre dalam bahasa Rust
PL/Rust adalah ekstensi bahasa Rust tepercaya untuk Postgre. SQL Anda dapat menggunakannya untuk prosedur tersimpan, fungsi, dan kode prosedural lainnya yang dapat dipanggil dari. SQL Ekstensi bahasa PL/Rust tersedia dalam versi berikut:
-
RDSuntuk Postgre SQL 16.1 dan versi 16 yang lebih tinggi
-
RDSuntuk Postgre SQL 15.2-R2 dan versi 15 yang lebih tinggi
-
RDSuntuk Postgre SQL 14.9 dan versi 14 yang lebih tinggi
-
RDSuntuk Postgre SQL 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 RDS konsol Amazon 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
RDSUntuk Postgre SQL versi 16.3-R2 dan yang lebih tinggi, 15.7-R2 dan versi 15 yang lebih tinggi, 14.12-R2 dan 14 versi yang lebih tinggi, dan 13.15-R2 dan versi 13 yang lebih tinggi, PL/Rust mendukung peti tambahan:
-
url
-
regex
-
serde
-
serde_json
RDSUntuk Postgre SQL versi 15.5-R2 dan lebih tinggi, 14.10-R2 dan 14 versi 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 Postgre SQL versi 15.4, 14.9, dan 13.12, PL/Rust mendukung peti berikut:
-
aes
-
ctr
-
rand
Hanya fitur default yang didukung untuk crate ini. Baru RDS untuk SQL versi Postgre mungkin berisi versi peti yang diperbarui, dan peti versi lama mungkin tidak lagi didukung.
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 Praktik terbaik untuk meningkatkan Amazon RDS ke versi utama dan minor Postgre SQL
Contoh penggunaan dependensi saat membuat fungsi PL/Rust tersedia di Gunakan dependensi
Batasan PL/Rust
Secara default, pengguna basis data tidak dapat menggunakan PL/Rust. Untuk menyediakan akses ke PL/Rust, hubungkan sebagai pengguna dengan hak istimewa rds_superuser, lalu jalankan perintah berikut:
postgres=> GRANT USAGE ON LANGUAGE PLRUST TO
user
;