

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.

# Verwenden PL/Rust , um PostgreSQL-Funktionen in der Sprache Rust zu schreiben
<a name="PostgreSQL.Concepts.General.Using.PL_Rust"></a>

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 [PL/Rust](https://github.com/tcdi/plrust#readme)unter GitHub.

**Topics**
+ [Einrichten PL/Rust](#PL_Rust-setting-up)
+ [Funktionen erstellen mit PL/Rust](#PL_Rust-create-function)
+ [Verwenden von Kisten mit PL/Rust](#PL_Rust-crates)
+ [PL/Rust Einschränkungen](#PL_Rust-limitations)

## Einrichten PL/Rust
<a name="PL_Rust-setting-up"></a>

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](USER_WorkingWithParamGroups.md).

Sie können die Plrust-Erweiterung mit dem AWS-Managementkonsole oder dem AWS CLI installieren.

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

### Konsole
<a name="PL_Rust-setting-up.CON"></a>

**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 an AWS-Managementkonsole und öffnen Sie die Amazon RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Wählen Sie im Navigationsbereich **Datenbanken** aus.

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

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

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

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

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

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

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

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

### AWS CLI
<a name="PL_Rust-setting-up-CLI"></a>

**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](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html), um dem Parameter plrust hinzuzufügen. `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}}
   ```

1. Verwenden Sie den Befehl [reboot-db-instance, um die AWS CLI DB-Instance](https://docs.aws.amazon.com/cli/latest/reference/rds/reboot-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}}
   ```

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

## Funktionen erstellen mit PL/Rust
<a name="PL_Rust-create-function"></a>

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
<a name="PL_Rust-crates"></a>

In den Versionen 16.3-R2 und höher von RDS für PostgreSQL werden in den Versionen 15.7-R2 und höher 15, 14.12-R2 und höher (14 Versionen) und 13.15-R2 und höher (13) zusätzliche Crates unterstützt: PL/Rust 
+ `url` 
+ `regex` 
+ `serde` 
+ `serde_json` 

In den Versionen 15.5-R2 und höher von RDS für PostgreSQL, 14.10-R2 und höher, 14 und 13.13-R2 und höher, 13, werden zwei zusätzliche Crates unterstützt: PL/Rust 
+ `croaring-rs` 
+ `num-bigint` 

Beginnend mit den Versionen 15.4, 14.9 und 13.12 von Amazon RDS for PostgreSQL werden die folgenden Kisten unterstützt: PL/Rust 
+ `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](https://aws.amazon.com/blogs/database/best-practices-for-upgrading-amazon-rds-to-major-and-minor-versions-of-postgresql/) und [Upgrade einer PostgreSQL-DB-Engine für Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.PostgreSQL.html) im Amazon-RDS-Benutzerhandbuch. 

Beispiele für die Verwendung von Abhängigkeiten bei der Erstellung einer PL/Rust Funktion finden [Sie unter Abhängigkeiten verwenden](https://tcdi.github.io/plrust/use-plrust.html#use-dependencies).

## PL/Rust Einschränkungen
<a name="PL_Rust-limitations"></a>

Standardmäßig können Datenbankbenutzer nicht verwenden PL/Rust. Um Zugriff auf zu gewähren PL/Rust, 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}};
```