Usare PL/Rust per scrivere SQL funzioni Postgre 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à.

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

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

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

  2. Nel riquadro di navigazione, scegli Databases (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 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" \ --region aws-region
  2. 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 \ --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;

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 DB SQL per Amazon nella Amazon User Guide. RDS RDS

Esempi di utilizzo delle dipendenze durante la creazione di una funzione PL/Rust sono disponibili in Use dependencies (Utilizzo delle dipendenze).

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;