Verwenden von Kinesis Data Streams zum Erfassen von Änderungen an DynamoDB
Sie können Amazon Kinesis Data Streams verwenden, um Änderungen an Amazon DynamoDB zu erfassen.
Kinesis Data Streams erfasst Änderungen auf Elementebene in jeder DynamoDB-Tabelle und repliziert sie in einen Kinesis Data Stream. Ihre Anwendungen können auf diesen Stream zugreifen und die Änderungen auf Elementebene nahezu in Echtzeit anzeigen. Sie können kontinuierlich Terabyte an Daten pro Stunde erfassen und speichern. Sie können eine längere Datenaufbewahrungszeit nutzen, und mit der Funktion für erweiterte Rundsendungen können Sie gleichzeitig zwei oder mehr nachgelagerte Anwendungen erreichen. Weitere Vorteile sind zusätzliche Prüfungen und Sicherheitstransparenz.
Mit Kinesis Data Streams haben Sie auch Zugriff auf Amazon Data Firehose und Amazon Managed Service für Apache Flink. Diese Services können Sie bei der Erstellung von Anwendungen unterstützen, die Echtzeit-Dashboards betreiben, Warnungen generieren, dynamische Preisgestaltung und Werbung implementieren und ausgefeilte Datenanalysen sowie Algorithmen für maschinelles Lernen umsetzen.
Anmerkung
Die Verwendung von Kinesis Data Streams für DynamoDB unterliegt sowohl den Preisen für Kinesis Data Streams
Wie Kinesis Data Streams mit DynamoDB funktioniert
Wenn ein Kinesis Data Stream für eine DynamoDB-Tabelle aktiviert ist, sendet die Tabelle einen Datensatz, der alle Änderungen an den Daten dieser Tabelle erfasst. Dieser Datensatz beinhaltet:
-
Die spezifische Uhrzeit, zu der ein Element kürzlich erstellt, aktualisiert oder gelöscht wurde
-
den Primärschlüssel dieses Elements
-
einen Snapshot des Datensatzes vor der Änderung
-
einen Snapshot des Datensatzes nach der Änderung
Diese Datensätze werden nahezu in Echtzeit erfasst und veröffentlicht. Nachdem sie in den Kinesis Data Stream geschrieben wurden, können sie wie jeder andere Datensatz gelesen werden. Sie können die Kinesis Client Library verwenden, AWS Lambda verwenden, die Kinesis-Data-Streams-API aufrufen und andere verbundene Services verwenden. Weitere Informationen finden Sie unter Lesen von Daten aus Amazon Kinesis Data Streams im Amazon-Kinesis-Data-Streams-Entwicklerhandbuch.
Diese Änderungen an Daten werden ebenfalls asynchron erfasst. Kinesis hat keine Auswirkungen auf die Leistung einer Tabelle, von der es streamt. Die in Ihrem Kinesis Data Stream gespeicherten Streamdatensätze werden auch im Ruhezustand verschlüsselt. Weitere Informationen finden Sie unter Datenschutz in Amazon Kinesis Data Streams.
Die Kinesis-Data-Stream-Datensätze werden möglicherweise in einer anderen Reihenfolge angezeigt als vor den Elementänderungen. Dieselben Elementbenachrichtigungen werden möglicherweise auch mehrmals im Stream angezeigt. Sie können das Attribut ApproximateCreationDateTime überprüfen, um die Reihenfolge zu ermitteln, in der die Elementänderungen aufgetreten sind, und um doppelte Datensätze zu identifizieren.
Wenn Sie einen Kinesis Data Stream als Streaming-Ziel einer DynamoDB-Tabelle aktivieren, können Sie die Genauigkeit der ApproximateCreationDateTime-Werte entweder in Millisekunden oder Mikrosekunden konfigurieren. Standardmäßig gibt ApproximateCreationDateTime den Zeitpunkt der Änderung in Millisekunden an. Darüber hinaus können Sie diesen Wert für ein aktives Streaming-Ziel ändern. Nach einer solchen Aktualisierung weisen in Kinesis geschriebene Stream-Datensätze ApproximateCreationDateTime-Werte mit der gewünschten Genauigkeit auf.
In DynamoDB geschriebene Binärwerte müssen im Base64-codierten Format codiert sein. Wenn Datensätze jedoch in einen Kinesis-Datenstrom geschrieben werden, erfolgt eine zweite Codierung dieser codierten Binärwerte mit der Base64-Codierung. Beim Lesen dieser Datensätze aus einem Kinesis-Datenstrom müssen Anwendungen diese Werte zweimal dekodieren, um die rohen Binärwerte abzurufen.
DynamoDB erhebt Gebühren für die Verwendung von Kinesis Data Streams in Änderungsdatenerfassungseinheiten. 1 KB Änderung pro Einzelelement gilt als eine Änderungsdatenerfassungseinheit. Die KB der Änderung in jedem Element wird durch das Größere der „Vorher“- und „Nachher“-Images des in den Stream geschriebenen Elements berechnet, wobei dieselbe Logik wie capacity unit consumption for write operations (Verbrauch der Kapazitätseinheit für Schreibvorgänge) verwendet wird. Sie müssen keinen Kapazitätsdurchsatz für Änderungsdatenerfassungseinheiten bereitstellen, ähnlich wie der DynamoDB on-demand-Modus funktioniert.
Aktivieren eines Kinesis Data Streams für Ihre DynamoDB-Tabelle
Sie können das Streaming zu Kinesis in einer vorhandenen DynamoDB-Tabelle aktivieren oder deaktivieren, indem Sie AWS-Managementkonsole, das AWS SDK oder das AWS Command Line Interface (AWS CLI) verwenden.
-
Sie können nur Daten von DynamoDB an Kinesis Data Streams in demselben AWS-Konto und derselben AWS-Region wie Ihre Tabelle streamen.
-
Sie können nur Daten von einer DynamoDB-Tabelle in einen Kinesis Data Stream streamen.
Vornehmen von Änderungen an einem Kinesis-Data-Streams-Ziel in Ihrer DynamoDB-Tabelle
Standardmäßig enthalten alle Kinesis-Data-Stream-Datensätze ein ApproximateCreationDateTime-Attribut. Dieses Attribut stellt einen Zeitstempel in Millisekunden der ungefähren Zeit dar, zu der jeder Datensatz erstellt wurde. Sie können die Genauigkeit dieser Werte ändern, indem Sie https://console.aws.amazon.com/kinesis