

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.

# Vergleich zum Verhalten der Daten-API von Amazon RDS – bei Aurora Serverless v2 und bereitgestellten Clustern und bei Aurora Serverless v1-Clustern
<a name="data-api.differences"></a>

Die neuesten Verbesserungen der Daten-APIs von Amazon RDS machen Daten-APIs für Cluster verfügbar, die aktuelle Versionen von PostgreSQL- oder MySQL-Engines ausführen. Diese Cluster können so konfiguriert werden, dass sie Aurora Serverless v2 verwenden, oder bereitgestellte Instance-Klassen wie `db.r6g` oder `db.r6i`.

In den folgenden Abschnitten werden die Unterschiede beschrieben, die hinsichtlich der Daten-API von Amazon RDS zwischen Aurora Serverless v2 und bereitgestellten DB-Clustern auf der einen Seite und Aurora Serverless v1-DB-Clustern auf der anderen Seite bestehen. Aurora Serverless v1 DB-Cluster verwenden den `serverless`-Engine-Modus. Bereitgestellte DB-Cluster verwenden den `provisioned`-Engine-Modus. Ein Aurora Serverless v2-DB-Cluster verwendet auch den `provisioned`-Engine-Modus und enthält eine oder mehrere Aurora Serverless v2-DB-Instances mit der `db.serverless`-Instance-Klasse.

## Maximale Anzahl von Anforderungen pro Sekunde
<a name="data-api.differences-requests"></a>

**Aurora Serverless v1**

Daten-APIs können bis zu 1 000 Anforderungen pro Sekunde stellen.

**Aurora Serverless v2**

Daten-APIs können eine unbegrenzte Anzahl von Anforderungen pro Sekunde stellen.

## Aktivieren oder Deaktivieren der Daten-API von Amazon RDS in einer vorhandenen Datenbank
<a name="data-api.differences-enable-disable"></a>

**Aurora Serverless v1**
+ **Mit der Amazon-RDS-API**: Verwenden Sie den Vorgang `ModifyCluster` und legen Sie für den Parameter `EnableHttpEndpoint` entweder `True` oder `False` fest.
+ **Mit der AWS CLI**: Verwenden Sie die Operation `modify-db-cluster` mit der Option `--enable-http-endpoint` oder `--no-enable-http-endpoint`.

**Aurora Serverless v2**
+ **Mit der Amazon-RDS-API**: Verwenden Sie die Operationen `EnableHttpEndpoint` und `DisableHttpEndpoint`.
+ **Mit der AWS CLI**: Verwenden Sie die Operationen `enable-http-endpoint` und `disable-http-endpoint`.

## CloudTrail-Ereignisse
<a name="data-api.differences-ct-events"></a>

**Aurora Serverless v1**

Ereignisse aus Daten-API-Aufrufen sind Verwaltungsereignisse. Diese Ereignisse werden in einem Trail standardmäßig automatisch eingeschlossen. Weitere Informationen finden Sie unter [Daten-API-Ereignisse von einem AWS CloudTrail Trail ausschließen (Aurora Serverless v1nur)](logging-using-cloudtrail-data-api.md#logging-using-cloudtrail-data-api.excluding-cloudtrail-events).

**Aurora Serverless v2**

Ereignisse aus Daten-API-Aufrufen sind Datenereignisse. Diese Ereignisse werden in einem Trail standardmäßig automatisch ausgeschlossen. Weitere Informationen finden Sie unter [Einbeziehen von Daten-API-Ereignissen in einen AWS CloudTrail Trail](logging-using-cloudtrail-data-api.md#logging-using-cloudtrail-data-api.including-cloudtrail-events).

## Unterstützung für mehrere Anweisungen
<a name="data-api.differences-multistatement"></a>

**Aurora Serverless v1**
+ Mehrere Anweisungen werden für Aurora MySQL nicht unterstützt.
+ Mehrere Anweisungen geben für Aurora PostgreSQL nur die erste Abfrageantwort zurück.

**Aurora Serverless v2**

Mehrere Anweisungen werden nicht unterstützt. Wenn Sie versuchen, mehrere Anweisungen in einem einzigen API-Aufruf auszuführen, wird der Fehler `“An error occurred (ValidationException) when calling the ExecuteStatement operation: Multistatements aren't supported.”` zurückgegeben. Um mehrere Anweisungen auszuführen, nutzen Sie separate `ExecuteStatement`-API-Aufrufe oder `BatchExecuteStatement` für die Stapelverarbeitung.

Das folgende Beispiel zeigt die Fehlermeldung, die ein API-Aufruf zurückgibt, wenn Sie versuchen, mehrere Anweisungen darin auszuführen.

```
 aws rds-data execute-statement \    
    --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \    
    --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \    
    --database "your_database" \
    --sql "SELECT * FROM your_table; Select * FROM next_table;
                                
                                "An error occurred (ValidationException) when calling the ExecuteStatement operation: Multistatements aren't supported.
```

Im folgenden Beispiel werden mehrere Anweisungen mit separaten `ExecuteStatement`-API-Aufrufen ausgeführt.

```
aws rds-data execute-statement \
    --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \
    --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \
    --database "your_database" \
    --sql "SELECT * FROM your_table;"

aws rds-data execute-statement \
    --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \
    --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \
    --database "your_database" \
    --sql "SELECT * FROM next_table;"
```

## Gleichzeitige Anforderungen für dieselbe Transaktions-ID
<a name="data-api.differences-concurrent-requests-transaction"></a>

**Aurora Serverless v1**

Nachfolgende Anforderungen warten, bis die aktuelle Anforderung abgeschlossen ist. Ihre Anwendung muss Zeitüberschreitungsfehler beheben, wenn die Wartezeit zu lang ist.

**Aurora Serverless v2**

Wenn die Daten-API mehrere Anforderungen mit derselben Transaktions-ID erhält, gibt sie sofort diesen Fehler zurück:

`DatabaseErrorException: Transaction is still running a query`

Dieser Fehler tritt in zwei Situationen auf:
+ Ihre Anwendung stellt asynchrone Anforderungen (wie JavaScript-Versprechen) mit derselben Transaktions-ID.
+ Eine frühere Anforderung mit dieser Transaktions-ID wird noch verarbeitet.

Das folgende Beispiel zeigt alle Anforderungen, die parallel zu `promise.all()` ausgeführt werden.

```
const api_calls = [];
for (let i = 0; i < 10; i++) {
api_calls.push(
    client.send(
    new ExecuteStatementCommand({
        ...params,
        sql: `insert into table_name values (i);`,
        transactionId
    })
    )
);
}
await Promise.all(api_calls);
```

Um diesen Fehler zu beheben, warten Sie, bis die aktuelle Anforderung abgeschlossen ist, bevor Sie eine weitere Anforderung mit derselben Transaktions-ID senden, oder entfernen Sie die Transaktions-ID, um parallele Anforderungen zu ermöglichen.

Das folgende Beispiel zeigt einen API-Aufruf, der die sequentielle Ausführung mit derselben Transaktions-ID verwendet.

```
 for (let i = 0; i < 10; i++) {
    await client.send(
    new ExecuteStatementCommand({
        ...params,
        sql: `insert into table_name values (i);`,
        transactionId
    })
    ).promise()
);
}
```

## Wie sich BatchExecuteStatement verhält
<a name="data-api.differences-batchExecuteStatement"></a>

Weitere Informationen zu `BatchExecuteStatement` finden Sie unter [BatchExecuteStatement](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BatchExecuteStatement.html).

**Aurora Serverless v1**

Das Objekt für generierte Felder im Aktualisierungsergebnis enthält eingefügte Werte.

**Aurora Serverless v2**
+ Für Aurora MySQL enthält das Objekt für generierte Felder im Aktualisierungsergebnis eingefügte Werte.
+ Für Aurora PostgreSQL bleibt das Objekt für generierte Felder leer.

## Wie sich ExecuteSQL verhält
<a name="data-api.differences-ExecuteSQL"></a>

Weitere Informationen zu `ExecuteSQL` finden Sie unter [ExecuteSQL](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteSql.html).

**Aurora Serverless v1**

Der Vorgang `ExecuteSQL` ist veraltet.

**Aurora Serverless v2**

Der Vorgang `ExecuteSQL` wird nicht unterstützt.

## Wie sich ExecuteStatement verhält
<a name="data-api.differences-ExecuteStatement"></a>

Weitere Informationen zu `ExecuteStatement` finden Sie unter [ExecuteStatement](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html).

**Aurora Serverless v1**

Der Parameter `ExecuteStatement` unterstützt das Abrufen von multidimensionalen Array-Spalten und allen erweiterten Datentypen.

**Aurora Serverless v2**

Der Parameter `ExecuteStatement` unterstützt keine multidimensionalen Array-Spalten. Er unterstützt auch bestimmte PostgreSQL-Datentypen nicht, einschließlich geometrischer und monetärer Typen. Wenn eine Daten-API auf einen nicht unterstützten Datentyp stößt, gibt sie diesen Fehler zurück: `UnsupportedResultException: The result contains the unsupported data type data_type`.

Um dieses Problem zu umgehen, konvertieren Sie den nicht unterstützten Datentyp in `TEXT`. Im folgenden Beispiel wird ein nicht unterstützter Datentyp in `TEXT` konvertiert.

```
SELECT custom_type::TEXT FROM my_table;-- 
ORSELECT CAST(custom_type AS TEXT) FROM my_table;
```

Eine Liste der unterstützten Datentypen für jede Aurora-Datenbank-Engine finden Sie in der [Referenz zu Daten-API-Vorgängen](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html#data-api-operations).

## Wie sich der Parameter Schema verhält
<a name="data-api.differences-schema-parameter"></a>

**Aurora Serverless v1**

Der Parameter `Schema` wird nicht unterstützt. Wenn Sie den Parameter `Schema` in einen API-Aufruf aufnehmen, ignoriert die Daten-API den Parameter.

**Aurora Serverless v2**

Der Parameter `Schema` ist veraltet. Wenn Sie den Parameter `Schema` in einen API-Aufruf aufnehmen, gibt die Daten-API diesen Fehler zurück: `ValidationException: The schema parameter isn't supported`. Im folgenden Beispiel wird ein Daten-API-Aufruf angezeigt, der den Fehler `ValidationException` zurückgibt.

```
aws rds-data execute-statement \
--resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \
--secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \
--database "your_database" \
--schema "your_schema" \
--sql "SELECT * FROM your_table LIMIT 10"
```

Um dieses Problem zu lösen, entfernen Sie den Parameter `Schema` aus Ihrem API-Aufruf.

Das folgende Beispiel zeigt einen Daten-API-Aufruf, bei dem der Parameter `Schema` entfernt wurde.

```
aws rds-data execute-statement \   
--resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \    
--secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \    
--database "your_database" \    
--sql "SELECT * FROM your_table LIMIT 10"
```