

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.

# Wiederholbare Schreibvorgänge in Amazon DocumentDB
<a name="retryable-writes"></a>

Ab der Engine-Version 8.0.2 unterstützt Amazon DocumentDB wiederholbare Schreibversuche. Wenn ein Schreibvorgang aufgrund eines vorübergehenden Netzwerkfehlers oder einer Primärwahl fehlschlägt, kann der Treiber den Vorgang automatisch genau einmal wiederholen. Amazon DocumentDB dedupliziert den erneuten Schreibversuch, sodass der Vorgang höchstens einmal ausgeführt wird, wodurch die Idempotenz erhalten bleibt.

Für erneut versuchbare Schreibvorgänge ist ein MongoDB-compatible Treiber erforderlich, der das Protokoll für wiederholbare Schreibvorgänge unterstützt. Die meisten aktuellen MongoDB-compatible Treiber ermöglichen standardmäßig wiederholbare Schreibversuche (`retryWrites=true`in der Verbindungszeichenfolge). Wenn Sie ein Upgrade von einer früheren Version auf Engine 8.0.2 durchführen, können Sie dies `retryWrites=false` aus Ihrer Verbindungszeichenfolge entfernen, um diese Funktion zu aktivieren.

## Voraussetzungen
<a name="retryable-writes-requirements"></a>

Um wiederholbare Schreibvorgänge verwenden zu können, müssen Sie die folgenden Anforderungen erfüllen:
+ Amazon DocumentDB-Engine Version 8.0.2 oder höher.
+ Ein MongoDB-compatible Treiber, der wiederholbare Schreibversuche unterstützt. Die Mindestversion finden Sie in der Dokumentation zu Ihrem Treiber.
+ Die Verbindungszeichenfolge muss Folgendes enthalten`retryWrites=true`, oder der Treiber muss standardmäßig wiederholbare Schreibvorgänge verwenden (bei den meisten aktuellen Treibern ist das der Fall).

## Unterstützte Vorgänge
<a name="retryable-writes-supported-operations"></a>

Wiederholbare Schreibvorgänge gelten für Schreibvorgänge, bei denen sich jeder einzelne Schreibvorgang auf höchstens ein Dokument auswirkt. Batch-Operationen kommen in Frage, da jeder Schreibvorgang innerhalb des Batches separat dedupliziert wird.

Die folgenden Schreibvorgänge können wiederholt werden:
+ `insertOne`
+ `insertMany`
+ `updateOne`
+ `deleteOne`
+ `findOneAndUpdate`
+ `findOneAndDelete`
+ `findOneAndReplace`
+ `bulkWrite`(wenn sie aus`insertOne`, `updateOne``deleteOne`, oder `replaceOne` Operationen bestehen)

Bei `insertMany` und `bulkWrite` wird jedes Dokument im Stapel einzeln dedupliziert. Wenn ein erneuter Versuch erforderlich ist, werden nur die Dokumente eingefügt, die noch nicht angewendet wurden.

**Anmerkung**  
`commitTransaction`und können ebenfalls erneut versucht `abortTransaction` werden, und zwar als Befehle zur Transaktionskontrolle und nicht als Schreibvorgänge. Die einzelnen Schreibvorgänge innerhalb einer Transaktion können nicht wiederholt werden. Weitere Informationen finden Sie unter [Einschränkungen](#retryable-writes-limitations).

## Einschränkungen
<a name="retryable-writes-limitations"></a>

Die folgenden Einschränkungen gelten für Schreibversuche in Amazon DocumentDB, die erneut versucht werden können:
+ `updateMany`und können nicht erneut versucht `deleteMany` werden.
+ Schreibvorgänge innerhalb von Transaktionen mit mehreren Anweisungen können nicht erneut versucht werden. Operationen zum Festschreiben und Abbrechen von Transaktionen können separat wiederholt werden.
+ Dokumente müssen ein `_id` Feld für wiederholbare Einfügungen enthalten.
+ Wiederholbare Schreibvorgänge sind nur in der Engine-Version 8.0.2 und höher verfügbar. Geben Sie `retryWrites=false` in früheren Engine-Versionen Ihre Verbindungszeichenfolge ein, um Fehler zu vermeiden.
+ Schreibvorgänge können auf Clustern, die Query Planner Version 1.0 verwenden, nicht erneut versucht werden.
+ Bei `findOneAndReplace` Vorgängen und Vorgängen `findOneAndUpdate``findOneAndDelete`, die große Dokumente zurückgeben, kann es bei wiederholten Schreibvorgängen zu einer erhöhten Schreiblatenz kommen, da das gesamte Ergebnisdokument zur Deduplizierung zwischengespeichert wird. Wenn die Schreibleistung entscheidend ist und die zurückgegebenen Dokumente groß sind, sollten Sie die Einstellungen für diese Workloads in Betracht ziehen. `retryWrites=false`

## Wiederholbare Schreibversuche aktivieren
<a name="retryable-writes-enabling"></a>

Um wiederholbare Schreibvorgänge zu aktivieren, fügen Sie Folgendes `retryWrites=true` in Ihre Verbindungszeichenfolge ein:

```
mongodb://{{<username>}}:{{<password>}}@{{<cluster-endpoint>}}:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=true
```

Wenn Ihr Treiber standardmäßig auf eingestellt ist`retryWrites=true`, können Sie alle expliziten Angaben `retryWrites=false` aus Ihrer Verbindungszeichenfolge entfernen.

Die vollständige Anleitung zur Verbindungszeichenfolge finden Sie unter. [Programmgesteuertes Herstellen einer Verbindung zu Amazon DocumentDB](connect_programmatically.md)

## So funktionieren wiederholbare Schreibvorgänge
<a name="retryable-writes-how-it-works"></a>

Wenn Ihre Anwendung einen Schreibvorgang mit sendet`retryWrites=true`, fügt der Treiber dem Schreibbefehl eine logische Sitzungs-ID (`lsid`) und eine Transaktionsnummer (`txnNumber`) hinzu. Amazon DocumentDB verwendet diese Identifikatoren, um Schreibvorgänge zu deduplizieren:
+ Beim ersten Versuch führt Amazon DocumentDB den Schreibvorgang aus und speichert das Ergebnis im Cache.
+ Wenn der Treiber denselben Schreibvorgang wiederholt (dasselbe `lsid` und`txnNumber`), gibt Amazon DocumentDB das zwischengespeicherte Ergebnis zurück, ohne den Schreibvorgang erneut auszuführen.
+ Amazon DocumentDB berücksichtigt Wiederholungsversuche für 60 Minuten nach dem ursprünglichen Schreibvorgang. Die Treiber versuchen es sofort erneut, sodass dieses Fenster viel länger ist, als ein Treiber benötigt.

Wenn ein Wiederholungsversuch mehr als 60 Minuten nach dem ursprünglichen Schreibvorgang eintrifft, hat Amazon DocumentDB dafür kein zwischengespeichertes Ergebnis mehr und führt den Schreibvorgang als neuen Vorgang aus.

## Fehlerbehandlung
<a name="retryable-writes-errors"></a>

Die folgenden Fehler sind spezifisch für wiederholbare Schreibvorgänge in Amazon DocumentDB:


| Fehlercode | Name | Description | 
| --- | --- | --- | 
| 225 | TransactionTooOld | Eine neuere Transaktionsnummer für dieselbe Sitzung und Aussage wurde bereits festgeschrieben, daher ist dieser Wiederholungsversuch zu alt, um ihn anzuwenden. | 
| 301 | Wiederholbare Schreibvorgänge werden nicht unterstützt | Der Schreibvorgang enthielt Felder, in denen erneut versucht werden kann, aber die Engine-Version unterstützt keine wiederholbaren Schreibvorgänge, oder der Vorgang kann nicht wiederholt werden. retryWrites=falseWird gesetzt, wenn eine Verbindung zu Engine-Versionen vor 8.0.2 hergestellt wird. | 

## Migration von retryWrites=False
<a name="retryable-writes-migration"></a>

Wenn Sie auf Engine-Version 8.0.2 aktualisieren und derzeit in Ihren Verbindungszeichenfolgen verwenden: `retryWrites=false`

1. Aktualisieren Sie Ihren Cluster auf Engine-Version 8.0.2 oder höher.

1. Entfernen Sie es `retryWrites=false` aus den Verbindungszeichenfolgen Ihrer Anwendung, oder ändern Sie es in`retryWrites=true`.

1. Es sind keine Änderungen des Anwendungscodes erforderlich. Der Treiber verarbeitet Wiederholungen automatisch.