Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo di PL/Rust per scrivere funzioni PostgreSQL nel linguaggio 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/Rustl'estensione della lingua è disponibile nelle seguenti versioni:
-
RDS per PostgreSQL 17.1 e versioni successive 17
-
RDS per PostgreSQL 16.1 e versioni successive 16
-
RDS per PostgreSQL 15.2-R2 e versioni successive alla 15
-
RDS per PostgreSQL 14.9 e versioni successive alla 14
-
RDS per PostgreSQL 13.12 e versioni successive alla 13
Per ulteriori informazioni, vedere PL/Rust on.
Argomenti
Configurazione di PL/Rust
Per installare l'estensione plrust sull'istanza database, aggiungere plrust al parametro shared_preload_libraries
nel gruppo di parametri database associato all'istanza database. Dopo aver installato l'estensione plrust, è possibile creare funzioni.
Per modificare il parametro shared_preload_libraries
, l'istanza database deve essere associata a un gruppo di parametri personalizzato. Per ulteriori informazioni sulla creazione di un gruppo di parametri personalizzato, consulta Gruppi di parametri per RDS.
È possibile installare l'estensione plrust utilizzando o il AWS Management Console . AWS CLI
I passaggi seguenti si basano sull'ipotesi che l'istanza database sia associata a un gruppo di parametri personalizzato.
Installare l'estensione plrust nel parametro shared_preload_libraries
Eseguire i seguenti passaggi utilizzando un account membro del gruppo rds_superuser
(ruolo).
Accedi a AWS Management Console e apri la console Amazon RDS all'indirizzo https://console.aws.amazon.com/rds/
. -
Nel riquadro di navigazione, scegli Databases (Database).
-
Scegliere il nome dell'istanza database per visualizzarne i dettagli.
-
Aprire la scheda Configurazione dell'istanza database e trovare il link al gruppo di parametri dell'istanza database.
-
Scegliere il link per aprire i parametri personalizzati associati all'istanza database.
-
Nel campo di ricerca Parametri, digita
shared_pre
per trovare il parametroshared_preload_libraries
. -
Scegli Edit parameters (Modifica parametri) per accedere ai valori delle proprietà.
-
Aggiungere plrust all'elenco nel campo Valori. Utilizza una virgola per separare gli elementi nell'elenco di valori.
-
Riavviare l'istanza database per applicare le modifiche al parametro
shared_preload_libraries
. Il completamento del riavvio iniziale potrebbe richiedere più tempo. -
Quando l'istanza è disponibile, verificare che plrust sia stato inizializzato. Utilizzare
psql
per connettersi all'istanza database ed eseguire il comando riportato di seguito.SHOW shared_preload_libraries;
L'aspetto dell'output sarà simile al seguente:
shared_preload_libraries -------------------------- rdsutils,plrust (1 row)
Installare l'estensione plrust nel parametro shared_preload_libraries
Eseguire i seguenti passaggi utilizzando un account membro del gruppo rds_superuser
(ruolo).
-
Usa il modify-db-parameter-group AWS CLI comando per aggiungere plrust al
shared_preload_libraries
parametro.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
-
Utilizzate il reboot-db-instance AWS CLI comando per riavviare l'istanza DB e inizializzare la libreria plrust. Il completamento del riavvio iniziale potrebbe richiedere più tempo.
aws rds reboot-db-instance \ --db-instance-identifier
your-instance
\ --regionaws-region
-
Quando l'istanza è disponibile, è possibile verificare se plrust è stato inizializzato. Utilizzare
psql
per connettersi all'istanza database ed eseguire il comando riportato di seguito.SHOW shared_preload_libraries;
L'aspetto dell'output sarà simile al seguente:
shared_preload_libraries -------------------------- rdsutils,plrust (1 row)
Creazione di funzioni con PL/Rust
PL/Rust compilerà la funzione come libreria dinamica, la caricherà e la eseguirà.
La seguente funzione Rust filtra i multipli da un 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;
Utilizzo dei formati crate con PL/Rust
Nelle versioni 16.3-R2 e successive di RDS per PostgreSQL, 15 versioni 15.7-R2 e successive, 14.12-R2 e 14 versioni successive e 13.15-R2 e 13 versioni successive, PL/Rust supporta casse aggiuntive:
-
url
-
regex
-
serde
-
serde_json
Nelle versioni 15.5-R2 e successive di RDS per PostgreSQL, 14.10-R2 e 14 versioni successive e 13.13-R2 e versioni successive 13, PL/Rust supporta due casse aggiuntive:
-
croaring-rs
-
num-bigint
A partire dalle versioni 15.4, 14.9 e 13.12 di Amazon RDS for PostgreSQL, PL/Rust supporta le seguenti casse:
-
aes
-
ctr
-
rand
Per questi formati sono supportate solo le funzionalità predefinite. Le nuove versioni di RDS per PostgreSQL potrebbero contenere versioni aggiornate di questi formati e le relative versioni precedenti potrebbero non essere più supportate.
Segui le best practice per eseguire un aggiornamento della versione principale per verificare se le tue funzioni PL/Rust sono compatibili con la nuova versione principale. Per ulteriori informazioni, consulta il blog Best practices for upgrading Amazon RDS to major and minor versions of PostgreSQL
Esempi di utilizzo delle dipendenze durante la creazione di una funzione PL/Rust sono disponibili in Use dependencies
Limitazioni del linguaggio PL/Rust
Per impostazione predefinita, gli utenti del database non possono utilizzarePL/Rust. To provide access to PL/Rust, connettersi come utente con il privilegio rds_superuser ed eseguire il seguente comando:
postgres=> GRANT USAGE ON LANGUAGE PLRUST TO
user
;