Verwendung von PL/Rust zum Schreiben von PostgreSQL-Funktionen in der Sprache Rust - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwendung von PL/Rust zum Schreiben von PostgreSQL-Funktionen in der Sprache Rust

PL/Rust ist eine vertrauenswürdige Rust-Spracherweiterung für PostgreSQL. Sie können sie für gespeicherte Prozeduren, Funktionen und anderen prozeduralen Code verwenden, der von SQL aus aufrufbar ist. Die PL/Rust-Spracherweiterung ist in den folgenden Versionen verfügbar:

  • RDS für PostgreSQL 17.1 und höhere 17-Versionen

  • RDS für PostgreSQL 16.1 und höhere 16-Versionen

  • RDS für PostgreSQL 15.2-R2 und höhere 15-Versionen

  • RDS für PostgreSQL 14.9 und höhere 14-Versionen

  • RDS für PostgreSQL 13.12 und höhere 13-Versionen

Weitere Informationen finden Sie unter PL/Rust auf GitHub.

Einrichten von PL/Rust

Um die plrust-Erweiterung auf Ihrer DB-Instance zu installieren, fügen Sie plrust zum Parameter shared_preload_libraries in der DB-Parametergruppe hinzu, die mit Ihrer DB-Instance verknüpft ist. Wenn die plrust-Erweiterung installiert ist, können Sie Funktionen erstellen.

Damit der Parameter shared_preload_libraries geändert werden kann, muss Ihre DB-Instance mit einer benutzerdefinierten Parametergruppe verknüpft sein. Informationen zum Erstellen einer benutzerdefinierten DB-Parametergruppe finden Sie unter Parametergruppen für Amazon RDS.

Sie können die plrust-Erweiterung mit der AWS-Managementkonsole oder der AWS CLI installieren.

Bei den folgenden Schritten wird davon ausgegangen, dass Ihre DB-Instance einer benutzerdefinierten DB-Parametergruppe zugeordnet ist.

Installieren der plrust-Erweiterung im Parameter shared_preload_libraries

Führen Sie die folgenden Schritte mit einem Konto aus, das Mitglied der rds_superuser-Gruppe (Rolle) ist.

  1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich Databases (Datenbanken) aus.

  3. Wählen Sie den Namen Ihrer DB-Instance aus, um ihre Details anzuzeigen.

  4. Öffnen Sie die Registerkarte Konfiguration für Ihre DB-Instance und suchen Sie den Link zur DB-Instance-Parametergruppe.

  5. Wählen Sie den Link aus, um die benutzerdefinierten Parameter zu öffnen, die Ihrer DB-Instance zugeordnet sind.

  6. Geben Sie in das Suchfeld Parameters (Parameter) shared_pre ein, um den shared_preload_libraries-Parameter zu finden.

  7. Wählen Sie Edit parameters (Parameter bearbeiten) aus, um auf die Eigenschaftswerte zuzugreifen.

  8. Fügen Sie der Liste im Feld Werte „plrust“ hinzu. Verwenden Sie ein Komma, um Elemente in der Werteliste zu trennen.

  9. Starten Sie die DB-Instance neu, damit die Änderung am Parameter shared_preload_libraries in Kraft tritt. Der erste Neustart kann zusätzliche Zeit in Anspruch nehmen.

  10. Wenn die Instance verfügbar ist, überprüfen Sie, ob „plrust“ initialisiert wurde. Stellen Sie mit psql eine Verbindung mit der DB-Instance her und führen Sie den folgenden Befehl aus.

    SHOW shared_preload_libraries;

    Ihre Ausgabe sollte wie folgt aussehen:

    shared_preload_libraries -------------------------- rdsutils,plrust (1 row)
Installieren der plrust-Erweiterung im Parameter shared_preload_libraries

Führen Sie die folgenden Schritte mit einem Konto aus, das Mitglied der rds_superuser-Gruppe (Rolle) ist.

  1. Verwenden Sie den AWS CLI-Befehl modify-db-parameter-group, um dem Parameter shared_preload_libraries „plrust“ hinzuzufügen.

    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. Verwenden Sie den AWS CLI-Befehl reboot-db-instance, um die DB-Instance neu zu starten und die plrust-Bibliothek zu initialisieren. Der erste Neustart kann zusätzliche Zeit in Anspruch nehmen.

    aws rds reboot-db-instance \ --db-instance-identifier your-instance \ --region aws-region
  3. Wenn die Instance verfügbar ist, können Sie überprüfen, ob „plrust“ initialisiert wurde. Stellen Sie mit psql eine Verbindung mit der DB-Instance her und führen Sie den folgenden Befehl aus.

    SHOW shared_preload_libraries;

    Ihre Ausgabe sollte wie folgt aussehen:

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

Erstellen von Funktionen mit PL/Rust

PL/Rust kompiliert die Funktion als dynamische Bibliothek, lädt sie und führt sie aus.

Die folgende Rust-Funktion filtert Vielfache aus einem 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;

Verwenden von Kisten mit PL/Rust

In RDS für PostgreSQL Versionen 16.3-R2 und höher, 15.7-R2 und höhere 15-Versionen, 14.12-R2 und höhere 14-Versionen sowie 13.15-R2 und höhere 13-Versionen unterstützt PL/Rust zusätzliche Crates:

  • url

  • regex

  • serde

  • serde_json

In RDS für PostgreSQL Versionen 15.5-R2 und höher, 14.10-R2 und höhere 14-Versionen sowie 13.13-R2 und höhere 13-Versionen unterstützt PL/Rust zwei zusätzliche Crates:

  • croaring-rs

  • num-bigint

Ab den Versionen 15.4, 14.9 und 13.12 von Amazon RDS für PostgreSQL unterstützt PL/Rust die folgenden Crates:

  • aes

  • ctr

  • rand

Für diese Kisten werden nur die Standardfunktionen unterstützt. Neue Versionen von RDS für PostgreSQL enthalten möglicherweise aktualisierte Versionen von Kisten und ältere Versionen von Kisten werden möglicherweise nicht mehr unterstützt.

Folgen Sie den bewährten Methoden für die Durchführung eines Hauptversions-Upgrades, um zu testen, ob Ihre PL/Rust-Funktionen mit der neuen Hauptversion kompatibel sind. Weitere Informationen finden Sie im Blog Bewährte Methoden für das Upgrade von Amazon RDS auf Haupt- und Nebenversionen von PostgreSQL und Upgrade einer PostgreSQL-DB-Engine für Amazon RDS im Amazon-RDS-Benutzerhandbuch.

Beispiele für die Verwendung von Abhängigkeiten bei der Erstellung einer PL/Rust-Funktion finden Sie unter Use dependencies.

Einschränkungen von PL/Rust

Standardmäßig können Datenbankbenutzer PL/Rust nicht verwenden. Um Zugriff auf PL/Rust zu gewähren, stellen Sie eine Verbindung als Benutzer mit der Berechtigung „rds_superuser“ her und führen Sie den folgenden Befehl aus:

postgres=> GRANT USAGE ON LANGUAGE PLRUST TO user;