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à.
Usare PL/Rust per scrivere SQL funzioni Postgre nel linguaggio Rust
PL/Rust è un'estensione affidabile del linguaggio Rust per Postgre. SQL È possibile utilizzarlo per procedure memorizzate, funzioni e altro codice procedurale da cui è possibile richiamare. SQL L'estensione del linguaggio PL/Rust è disponibile nelle seguenti versioni:
-
RDSper Postgree SQL 16.1 e versioni successive 16
-
RDSper Postgre 15.2-R2 e versioni successive 15 SQL
-
RDSper SQL Postgre 14.9 e versioni successive 14
-
RDSper Postgre 13.12 e versioni successive 13 SQL
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 RDS console Amazon 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
RDSPer SQL le versioni 16.3-R2 e successive di Postgre, 15.7-R2 e successive 15 versioni, 14.12-R2 e 14 versioni successive e 13.15-R2 e versioni successive 13, PL/Rust supporta casse aggiuntive:
-
url
-
regex
-
serde
-
serde_json
RDSPer le SQL versioni 15.5-R2 e successive di Postgre, 14.10-R2 e successive 14 versioni e 13.13-R2 e versioni successive 13, PL/Rust supporta due casse aggiuntive:
-
croaring-rs
-
num-bigint
A partire dalle SQL versioni 15.4, 14.9 e 13.12 di Amazon RDS for Postgre, PL/Rust supporta le seguenti casse:
-
aes
-
ctr
-
rand
Per questi formati sono supportate solo le funzionalità predefinite. Le nuove versioni RDS di Postgre potrebbero contenere SQL versioni aggiornate delle casse e le versioni precedenti delle casse 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 Le migliori pratiche per l'aggiornamento di Amazon RDS alle versioni principali e secondarie di Postgre e l'aggiornamento del motore SQL Postgre
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 utilizzare PL/Rust. Per fornire l'accesso a PL/Rust, connettersi come utente con il privilegio rds_superuser ed eseguire il seguente comando:
postgres=> GRANT USAGE ON LANGUAGE PLRUST TO
user
;