Bewährte Methoden für die Arbeit mit der Null-ETL-Integration von DynamoDB in OpenSearch Service - 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 der Null-ETL-Integration von DynamoDB in OpenSearch Service

DynamoDB verfügt über eine Null-ETL-Integration von DynamoDB in Amazon OpenSearch Service. Weitere Informationen finden Sie unter DynamoDB-Plugin für OpenSearch Ingestion und in den Speziellen bewährten Methoden für Amazon OpenSearch Service.

Konfiguration

  • Indizieren Sie nur Daten, die Sie für die Durchführung von Suchvorgängen benötigen. Verwenden Sie immer eine Zuweisungsvorlage (template_type: index_template und template_content) und include_keys, um diese zu implementieren.

  • Überwachen Sie Ihre Protokolle auf Fehler im Zusammenhang mit Typkonflikten. OpenSearch Service erwartet, dass alle Werte für einen bestimmten Schlüssel denselben Typ aufweisen. Bei Nichtübereinstimmungen werden Ausnahmen generiert. Wenn ein solcher Fehler auftritt, können Sie einen Prozessor hinzufügen, um zu erkennen, ob ein bestimmter Schlüssel immer denselben Wert hat.

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

    Sie können zum Abrufen des Primärschlüssels die Helper-Funktion getMetadata verwenden (z. B. document_id: "${getMetadata('primary_key')}"). Wenn Sie einen zusammengesetzten Primärschlüssel verwenden, wird dieser von der Hilfsfunktion verkettet.

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

    Sie können zum Abrufen des Primärschlüssels die Helper-Funktion getMetadata verwenden (z. B. action: "${getMetadata('opensearch_action')}"). In Anwendungsfällen wie Filteroperationen können Sie den Typ des Stream-Ereignisses auch mit dynamodb_event_name abrufen. In der Regel sollten Sie ihn jedoch nicht für die Einstellung action verwenden.

Beobachtbarkeit

  • Verwenden Sie auf Ihren OpenSearch-Sinks immer eine Warteschlange für unzustellbare Nachrichten (DLQ). DynamoDB ist im Allgemeinen weniger strukturiert als OpenSearch Service, und es kann immer etwas Unerwartetes passieren. Mit einer Warteschlange für unzustellbare Nachrichten können Sie einzelne Ereignisse wiederherstellen und sogar den Wiederherstellungsprozess automatisieren. Auf diese Weise müssen Sie nicht den gesamten Index neu erstellen.

  • Richten Sie immer Warnmeldungen ein, sodass der erwartete Betrag durch eine verzögerte Replikation nicht überschritten wird. In der Regel kann von einer Minute ausgegangen werden, ohne dass die Warnung zu laut wird. Diese Dauer kann je nach Intensität des Schreibverkehrs und OCU-Einstellungen (OpenSearch Compute Unit) in der Pipeline variieren.

    Wenn die Replikationsverzögerung bei mehr als 24 Stunden liegt, werden im Stream Ereignisse gelöscht, und es treten Probleme mit der Genauigkeit auf, sofern Sie den Index nicht von Grund auf neu erstellen.

Skalierung

  • Verwenden Sie Auto Scaling für Pipelines, um die OCUs nach oben oder unten zu skalieren und sie optimal an die Workload anzupassen.

  • Für bereitgestellte Durchsatztabellen ohne Auto Scaling empfiehlt es sich, OCUs auf der Grundlage der Schreibkapazitätseinheiten (WCUs) geteilt durch 1000 festzulegen. Legen Sie als Minimum 1 OCU unter diesem Wert (mindestens 1) und als Maximum mindestens 1 OCU über diesem Wert fest.

    • Formel:

      OCU_minimum = GREATEST((table_WCU / 1000) - 1, 1) OCU_maximum = (table_WCU / 1000) + 1
    • Beispiel: In der Tabelle gibt es 25.000 bereitgestellte WCUs. Die OCUs der Pipeline sollten mindestens auf 24 (25.000/1000 – 1) und höchstens auf mindestens 26 (25.000/1000 + 1) eingestellt sein.

  • Für bereitgestellte Durchsatztabellen mit Auto Scaling empfiehlt es sich, OCUs auf der Grundlage der minimalen und maximalen Schreibkapazitätseinheiten (WCUs) geteilt durch 1000 festzulegen. Legen Sie als Minimum 1 OCU unter dem Minimum von DynamoDB und als Maximum mindestens 1 OCU über dem Maximum von DynamoDB fest.

    • Formel:

      OCU_minimum = GREATEST((table_minimum_WCU / 1000) - 1, 1) OCU_maximum = (table_maximum_WCU / 1000) + 1
    • Beispiel: Die Tabelle verfügt über eine Auto-Scaling-Richtlinie mit einem Minimum von 8.000 und einem Maximum von 14.000. Die OCUs der Pipeline sollten mindestens auf 7 (8.000/1000 – 1) und höchstens auf 15 (14.000/1000 + 1) eingestellt sein.

  • Für On-Demand-Durchsatztabellen empfiehlt es sich, die OCUs auf die typischen Höchst- und Tiefstwerte der Schreibanforderungseinheiten pro Sekunde einzustellen. Je nachdem, welche Aggregation Ihnen zur Verfügung steht, müssen Sie möglicherweise den Durchschnitt über einen längeren Zeitraum ermitteln. Legen Sie als Minimum 1 OCU unter dem Minimum von DynamoDB und als Maximum mindestens 1 OCU über dem Maximum von DynamoDB fest.

    • 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: Die Tabelle weist einen durchschnittlichen Tiefstwert von 300 und einen durchschnittlichen Höchstwert von 4.300 Schreibanforderungseinheiten pro Sekunde auf. Die OCUs der Pipeline sollten mindestens auf 1 (300/1000 – 1, aber mindestens 1) und höchstens 5 (4.300/1000 + 1) eingestellt sein.

  • Folgen Sie den bewährten Methoden zur Skalierung Ihrer Zielindizes für OpenSearch Service. Eine Unterskalierung der Indizes verlangsamt die Aufnahme aus DynamoDB und kann zu Verzögerungen führen.

Anmerkung

GREATEST ist eine SQL-Funktion, die bei einer gegebenen Anzahl von Argumenten das Argument mit dem größten Wert zurückgibt.