Bewährte Methoden für die Arbeit mit DynamoDB Zero-ETL Integration und 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 und Service OpenSearch

DynamoDB verfügt über eine DynamoDB-Zero-ETL-Integration mit Amazon Service. OpenSearch Weitere Informationen finden Sie im DynamoDB-Plug-In für OpenSearch Ingestion und in spezifischen Best Practices für Amazon Service. OpenSearch

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, die mit Typkonflikten zusammenhängen. OpenSearch Der Dienst erwartet, dass alle Werte für einen bestimmten Schlüssel denselben Typ haben. 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 Updates so repliziert werden, dass die Daten in OpenSearch Service dem neuesten Status 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 Speichersystemen immer eine Warteschlange (Dead-Letter Queue, DLQ), um gelöschte Ereignisse zu verarbeiten OpenSearch . DynamoDB ist im Allgemeinen weniger strukturiert als OpenSearch Service, und es ist immer möglich, dass etwas Unerwartetes passiert. 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. Dies kann variieren, je nachdem, wie stark Ihr Schreibverkehr ist und wie hoch Ihre OpenSearch Compute Unit (OCU) -Einstellungen in der Pipeline sind.

    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 Skalierung nach oben oder unten zu unterstützen OCUs , 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 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: 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öchstwert WCUs, geteilt durch 1000, OCUs basiert. 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. 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 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. 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 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.