Utiliser PL/Rust pour écrire des SQL fonctions Postgre dans le langage Rust - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser PL/Rust pour écrire des SQL fonctions Postgre dans le langage Rust

PL/Rust est une extension de langage Rust fiable pour Postgre. SQL Vous pouvez l'utiliser pour les procédures stockées, les fonctions et tout autre code procédural appelable depuisSQL. L'extension de langage PL/Rust est disponible dans les versions suivantes :

  • RDSpour Postgre SQL 16.1 et versions 16 supérieures

  • RDSpour Postgre SQL 15.2-R2 et versions 15 supérieures

  • RDSpour Postgre SQL 14.9 et versions 14 supérieures

  • RDSpour Postgre SQL 13.12 et versions 13 supérieures

Pour plus d'informations, voir PL/Rust on. GitHub

Configuration de PL/Rust

Pour installer l'extension plrust sur votre instance de base de données, ajoutez plrust au paramètre shared_preload_libraries dans le groupe de paramètres de la base de données associé à votre instance de base de données. Une fois l'extension plrust installée, vous pouvez créer des fonctions.

Pour modifier le paramètre shared_preload_libraries, votre instance de base de données doit être associée à un groupe de paramètres personnalisé. Pour obtenir des informations sur la création d'un groupe de paramètres de base de données personnalisé, consultez Groupes de paramètres pour Amazon RDS.

Vous pouvez installer l'extension plrust en utilisant le AWS Management Console ou le AWS CLI.

Les étapes suivantes supposent que votre instance de base de données est associée à un groupe de paramètres de cluster de bases de données personnalisé.

Installer l'extension plrust dans le paramètre shared_preload_libraries

Effectuez les étapes suivantes à l'aide d'un compte membre du groupe (rôle) rds_superuser.

  1. Connectez-vous à la RDS console Amazon AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans le panneau de navigation, choisissez Databases (Bases de données).

  3. Choisissez le nom de votre instance de base de données pour afficher ses détails.

  4. Ouvrez l'onglet Configuration de votre instance de base de données et recherchez le lien du groupe de paramètres de l'instance de base de données.

  5. Cliquez sur le lien pour ouvrir les paramètres personnalisés associés à votre instance de base de données.

  6. Dans le champ de recherche Parameters (Paramètres), tapez shared_pre pour trouver le paramètre shared_preload_libraries.

  7. Choisissez Edit parameters (Modifier les paramètres) pour accéder aux valeurs des propriétés.

  8. Ajoutez plrust à la liste dans le champ Valeurs. Utilisez une virgule pour séparer les éléments de la liste de valeurs.

  9. Redémarrez l'instance de base de données pour que la modification apportée au paramètre shared_preload_libraries prenne effet. Le redémarrage initial peut nécessiter plus de temps.

  10. Lorsque l'instance est disponible, vérifiez que plrust a été initialisé. Utilisez psql pour vous connecter à l'instance de base de données, puis exécutez la commande suivante.

    SHOW shared_preload_libraries;

    Votre sortie doit ressembler à ce qui suit :

    shared_preload_libraries -------------------------- rdsutils,plrust (1 row)
Installez l'extension plrust dans le paramètre shared_preload_libraries

Effectuez les étapes suivantes à l'aide d'un compte membre du groupe (rôle) rds_superuser.

  1. Utilisez la modify-db-parameter-group AWS CLI commande pour ajouter plrust au shared_preload_libraries paramètre.

    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. Utilisez la reboot-db-instance AWS CLI commande pour redémarrer l'instance de base de données et initialiser la bibliothèque plrust. Le redémarrage initial peut nécessiter plus de temps.

    aws rds reboot-db-instance \ --db-instance-identifier your-instance \ --region aws-region
  3. Lorsque l'instance est disponible, vous pouvez vérifier que plrust a été initialisé. Utilisez psql pour vous connecter à l'instance de base de données, puis exécutez la commande suivante.

    SHOW shared_preload_libraries;

    Votre sortie doit ressembler à ce qui suit :

    shared_preload_libraries -------------------------- rdsutils,plrust (1 row)

Création de fonctions avec PL/Rust

PL/Rust compile la fonction sous forme de bibliothèque dynamique, la charger et l'exécute.

La fonction Rust suivante filtre les multiples d'un tableau.

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;

Utilisation de caisses avec PL/Rust

Dans RDS les SQL versions 16.3-R2 et supérieures de Postgre, 15.7-R2 et supérieures 15 versions, 14.12-R2 et versions supérieures 14 versions, et 13.15-R2 et versions supérieures 13 versions, PL/Rust prend en charge des caisses supplémentaires :

  • url

  • regex

  • serde

  • serde_json

Dans RDS les SQL versions 15.5-R2 et supérieures de Postgre, 14.10-R2 et versions 14 et versions 13.13-R2 et supérieures 13 versions, PL/Rust prend en charge deux caisses supplémentaires :

  • croaring-rs

  • num-bigint

À partir des SQL versions 15.4, 14.9 et 13.12 d'Amazon RDS pour Postgre, PL/Rust prend en charge les caisses suivantes :

  • aes

  • ctr

  • rand

Seules les fonctionnalités par défaut sont prises en charge pour ces caisses. Les nouvelles SQL versions RDS de Postgre peuvent contenir des versions mises à jour de caisses, et les anciennes versions de caisses peuvent ne plus être prises en charge.

Suivez les bonnes pratiques pour effectuer une mise à niveau de version majeure afin de tester si vos fonctions PL/Rust sont compatibles avec la nouvelle version majeure. Pour plus d'informations, consultez le blog Meilleures pratiques pour la mise à niveau d'Amazon RDS vers les versions majeures et mineures de Postgre SQL et la mise à niveau du moteur de base de données SQL Postgre pour Amazon RDS dans le guide de RDS l'utilisateur Amazon.

Des exemples d'utilisation des dépendances lors de la création d'une fonction PL/Rust sont disponibles dans Utiliser les dépendances (langue française non garantie).

Limites de PL/Rust

Par défaut, les utilisateurs de la base de données ne peuvent pas utiliser PL/Rust. Pour fournir un accès à PL/Rust, connectez-vous en tant qu'utilisateur avec le privilège rds_superuser et exécutez la commande suivante :

postgres=> GRANT USAGE ON LANGUAGE PLRUST TO user;