Menggunakan PL/Rust untuk menulis SQL fungsi Postgre dalam bahasa Rust - Layanan Basis Data Relasional Amazon

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 on. GitHub

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).

  1. Masuk ke AWS Management Console dan buka RDS konsol Amazon di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Basis Data.

  3. Pilih nama instans DB Anda untuk menampilkan detailnya.

  4. Buka tab Konfigurasi untuk instans DB Anda dan temukan tautan grup parameter instans DB.

  5. Pilih tautan untuk membuka parameter kustom yang terkait dengan instans DB.

  6. Di bidang pencarian Parameter, ketik shared_pre untuk menemukan parameter shared_preload_libraries.

  7. Pilih Edit parameter untuk mengakses nilai properti.

  8. Tambahkan plrust ke daftar di bidang Nilai. Gunakan koma untuk memisahkan item dalam daftar nilai.

  9. Boot ulang instans DB sehingga perubahan Anda pada parametershared_preload_libraries akan berlaku. Boot ulang awal mungkin memerlukan waktu tambahan untuk menyelesaikannya.

  10. 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).

  1. 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" \ --region aws-region
  2. 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 \ --region aws-region
  3. 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 dan Memutakhirkan mesin Postgre SQL DB untuk Amazon RDS di Panduan Pengguna Amazon. RDS

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;