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 DynamoDB Zero-ETL-Integration und dem Service OpenSearch
DynamoDB verfügt über eine DynamoDB Zero-ETL-Integration mit Amazon Service. OpenSearch Weitere Informationen finden Sie im DynamoDB-Plugin 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_templateundtemplate_content) undinclude_keys, um diese zu implementieren. -
Überwachen Sie Ihre Protokolle auf Fehler, die mit Typkonflikten zusammenhängen. OpenSearch Der Service erwartet, dass alle Werte für einen bestimmten Schlüssel den gleichen 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_keyfür den Wertdocument_id. 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 zum Abrufen des Primärschlüssels die Helper-Funktion
getMetadataverwenden (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_actionfür den Wertaction. Dadurch wird sichergestellt, dass Aktualisierungen 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
getMetadataverwenden (z. B.action: "${getMetadata('opensearch_action')}"). In Anwendungsfällen wie Filteroperationen können Sie den Typ des Stream-Ereignisses auch mitdynamodb_event_nameabrufen. In der Regel sollten Sie ihn jedoch nicht für die Einstellungactionverwenden.
Beobachtbarkeit
-
Verwenden Sie auf Ihren Senken immer eine Dead-Letter-Warteschlange (DLQ), um ausfallende 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 Schreibdatenverkehr ist und wie 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 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 Ihrer Pipeline sollten auf ein Minimum von 24 (25000/1000 - 1) und ein Maximum von mindestens 26 (25000/1000 + 1) gesetzt 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 Ihrer Pipeline sollten auf mindestens 7 (8000/1000 - 1) und maximal 15 (14000/1000 + 1) festgelegt werden.
-
-
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 Ihrer Pipeline sollten auf ein Minimum von 1 (300/1000 - 1, aber mindestens 1) und ein Maximum von 5 (4300/1000 + 1) gesetzt werden.
-
-
Folgen Sie den bewährten Methoden zur Skalierung Ihrer OpenSearch Zieldienstindizes. 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.