Bewährte Methoden für die Arbeit mit DynamoDB Zero ETL Integration and Service OpenSearch - Amazon-DynamoDB

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.

Bewährte Methoden für die Arbeit mit DynamoDB Zero ETL Integration and Service OpenSearch

DynamoDB hat eine ETLDynamoDB-Zero-Integration mit Amazon Service. OpenSearch Weitere Informationen finden Sie im DynamoDB-Plug-In für OpenSearch Ingestion und spezifische Best Practices für Amazon Service. OpenSearch

Konfiguration

  • Indexieren Sie nur Daten, nach denen Sie Suchen durchführen müssen. Verwenden Sie immer eine Zuordnungsvorlage (template_type: index_templateundtemplate_content) und implementieren include_keys Sie diese.

  • Überwachen Sie Ihre Protokolle auf Fehler, die mit Typkonflikten zusammenhängen. OpenSearch Der Dienst erwartet, dass alle Werte für einen bestimmten Schlüssel denselben Typ haben. Es generiert Ausnahmen, wenn es eine Nichtübereinstimmung gibt. Wenn Sie auf einen dieser Fehler stoßen, können Sie einen Prozessor hinzufügen, der feststellt, dass ein bestimmter Schlüssel immer denselben Wert hat.

  • Verwenden Sie im Allgemeinen den primary_key Metadatenwert für den document_id Wert. In OpenSearch Service entspricht die Dokument-ID dem Primärschlüssel in DynamoDB. Die Verwendung des Primärschlüssels erleichtert das Auffinden Ihres Dokuments und stellt sicher, dass Aktualisierungen konsistent und ohne Konflikte in das Dokument repliziert werden.

    Sie können die Hilfsfunktion verwendengetMetadata, um Ihren Primärschlüssel abzurufen (z. B.document_id: "${getMetadata('primary_key')}"). Wenn Sie einen zusammengesetzten Primärschlüssel verwenden, verkettet die Hilfsfunktion diese für Sie miteinander.

  • Verwenden Sie im Allgemeinen den opensearch_action Metadatenwert für die Einstellung. action Dadurch wird sichergestellt, dass Updates so repliziert werden, dass die Daten in OpenSearch Service dem neuesten Status in DynamoDB entsprechen.

    Sie können die Hilfsfunktion verwendengetMetadata, um Ihren Primärschlüssel abzurufen (z. B.). action: "${getMetadata('opensearch_action')}" Sie können den Stream-Ereignistyp auch dynamodb_event_name für Anwendungsfälle wie das Filtern verwenden. In der Regel sollten Sie ihn jedoch nicht für die action Einstellung verwenden.

Beobachtbarkeit

  • Verwenden Sie auf Ihren Speichersystemen immer eine Warteschlange mit unbestätigten Buchstaben (DLQ), um OpenSearch ausgebliebene Ereignisse zu behandeln. DynamoDB ist im Allgemeinen weniger strukturiert als OpenSearch Service, und es ist immer möglich, dass etwas Unerwartetes passiert. Mit einer Warteschlange mit unerlaubten Briefen können Sie einzelne Ereignisse wiederherstellen und sogar den Wiederherstellungsprozess automatisieren. Auf diese Weise müssen Sie nicht Ihren gesamten Index neu erstellen.

  • Richten Sie immer Warnmeldungen ein, die darauf hinweisen, dass Ihre Replikationsverzögerung den erwarteten Betrag nicht überschreitet. In der Regel kann man mit Sicherheit von einer Minute ausgehen, ohne dass die Warnung zu laut ist. Dies kann variieren, je nachdem, wie stark Ihr Schreibverkehr ist und wie hoch Ihre OpenSearch Compute Unit (OCU) -Einstellungen in der Pipeline sind.

    Wenn Ihre Replikationsverzögerung mehr als 24 Stunden beträgt, werden in Ihrem Stream Ereignisse gelöscht, und es treten Genauigkeitsprobleme auf, sofern Sie Ihren Index nicht von Grund auf neu erstellen.

Skalierung

  • Verwenden Sie Auto Scaling für Pipelines, um die Skalierung nach oben oder unten zu unterstützenOCUs, um sie optimal an die Arbeitslast anzupassen.

  • Für bereitgestellte Durchsatztabellen ohne auto Skalierung empfehlen wir die Einstellung auf der OCUs Grundlage Ihrer Schreibkapazitätseinheiten (WCUs) geteilt durch 1000. Legen Sie das Minimum auf 1 OCU unter diesem Wert (aber mindestens 1) und das Maximum auf mindestens 1 OCU über diesem Wert fest.

    • Formel:

      OCU_minimum = GREATEST((table_WCU / 1000) - 1, 1) OCU_maximum = (table_WCU / 1000) + 1
    • Beispiel: Für Ihre Tabelle wurden 25000 WCUs bereitgestellt. Ihre Pipelines OCUs sollten auf mindestens 24 (25000/1000 — 1) und einen Höchstwert von mindestens 26 (25000/1000 + 1) eingestellt sein.

  • Für bereitgestellte Durchsatztabellen mit Auto Scaling empfehlen wir eine Einstellung, die auf Ihrem Mindest- und HöchstwertWCUs, geteilt durch 1000, OCUs basiert. Setzen Sie das Minimum auf 1 OCU unter dem Minimum von DynamoDB und das Maximum auf mindestens 1 OCU über dem Maximum von DynamoDB.

    • Formel:

      OCU_minimum = GREATEST((table_minimum_WCU / 1000) - 1, 1) OCU_maximum = (table_maximum_WCU / 1000) + 1
    • Beispiel: Ihre Tabelle hat eine Auto Scaling-Richtlinie mit einem Minimum von 8000 und einem Maximum von 14000. Ihre Pipelines OCUs sollten auf mindestens 7 (8000/1000 — 1) und maximal 15 (14000/1000 + 1) eingestellt sein.

  • Für On-Demand-Durchsatztabellen empfehlen wir eine Einstellung, die auf Ihrem typischen Peak and Valley für Schreibanforderungseinheiten pro Sekunde OCUs basiert. Je nachdem, welche Aggregation Ihnen zur Verfügung steht, müssen Sie möglicherweise den Mittelwert über einen längeren Zeitraum ermitteln. Setzen Sie das Minimum auf 1 OCU unter dem Minimum von DynamoDB und das Maximum auf mindestens 1 OCU über dem Maximum von DynamoDB.

    • Formel:

      # Assuming we have writes aggregated at the minute level OCU_minimum = GREATEST((min(table_writes_1min) / (60 * 1000)) - 1, 1) OCU_maximum = (max(table_writes_1min) / (60 * 1000)) + 1
    • Beispiel: Ihre Tabelle hat ein durchschnittliches Tal von 300 Schreibanforderungseinheiten pro Sekunde und einen durchschnittlichen Spitzenwert von 4300. Ihre Pipelines OCUs sollten auf mindestens 1 (300/1000 — 1, aber mindestens 1) und maximal 5 (4300/1000 + 1) eingestellt sein.

  • Folgen Sie den bewährten Methoden zur Skalierung Ihrer Ziel-Serviceindizes. OpenSearch Wenn Ihre Indizes unterskaliert sind, verlangsamt dies die Aufnahme aus DynamoDB und kann zu Verzögerungen führen.

Anmerkung

GREATESTist eine SQL Funktion, die bei gegebener Anzahl von Argumenten das Argument mit dem größten Wert zurückgibt.