View a markdown version of this page

Utilizzo PL/Rust per scrivere funzioni PostgreSQL nel linguaggio Rust - Amazon Relational Database Service

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 PL/Rust per scrivere funzioni PostgreSQL nel linguaggio Rust

PL/Rust è un'estensione del linguaggio Rust affidabile per PostgreSQL. È possibile utilizzarlo per stored procedure, funzioni e altri codici procedurali richiamabili da SQL. L'estensione del PL/Rust linguaggio è 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 on. PL/Rust GitHub

Configurazione 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 Amazon RDS.

È possibile installare l'estensione plrust utilizzando Console di gestione AWS o il 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).

  1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo https://console.aws.amazon.com/rds/.

  2. Nel pannello di navigazione, seleziona Database.

  3. Scegliere il nome dell'istanza database per visualizzarne i dettagli.

  4. Aprire la scheda Configurazione dell'istanza database e trovare il link al gruppo di parametri dell'istanza database.

  5. Scegliere il link per aprire i parametri personalizzati associati all'istanza database.

  6. Nel campo di ricerca Parametri, digita shared_pre per trovare il parametro shared_preload_libraries.

  7. Scegli Edit parameters (Modifica parametri) per accedere ai valori delle proprietà.

  8. Aggiungere plrust all'elenco nel campo Valori. Utilizza una virgola per separare gli elementi nell’elenco di valori.

  9. Riavviare l'istanza database per applicare le modifiche al parametro shared_preload_libraries. Il completamento del riavvio iniziale potrebbe richiedere più tempo.

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

  1. Usa il AWS CLI comando modify-db-parameter-group per aggiungere plrust al parametro. shared_preload_libraries

    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. Utilizzate il AWS CLI comando reboot-db-instance 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 \ --region aws-region
  3. 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;

Usare le casse con PL/Rust

Nelle versioni 16.3-R2 e successive di RDS per PostgreSQL, 15.7-R2 e versioni successive 15, 14.12-R2 e 14 versioni successive e 13.15-R2 e 13 versioni successive, supporta casse aggiuntive: PL/Rust

  • url

  • regex

  • serde

  • serde_json

Nelle versioni 15.5-R2 e successive di RDS per PostgreSQL, 14 versioni 14.10-R2 e successive e 13.13-R2 e versioni successive 13, supporta due casse aggiuntive: PL/Rust

  • croaring-rs

  • num-bigint

A partire dalle versioni 15.4, 14.9 e 13.12 di Amazon RDS for PostgreSQL, supporta le seguenti casse: PL/Rust

  • 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 di una versione principale per verificare se le tue PL/Rust funzioni 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 (Best practice per l'aggiornamento di Amazon RDS alle versioni principali e secondarie di PostgreSQL) e Aggiornamento del motore del database PostgreSQL per Amazon RDS nella Guida per l'utente Amazon RDS.

Esempi di utilizzo delle dipendenze durante la creazione di una PL/Rust funzione sono disponibili in Usa dipendenze.

PL/Rust limitazioni

Per impostazione predefinita, gli utenti del database non possono utilizzare PL/Rust. Per fornire l'accesso a PL/Rust, connettiti come utente con il privilegio rds_superuser ed esegui il comando seguente:

postgres=> GRANT USAGE ON LANGUAGE PLRUST TO user;