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.
Kernkomponenten von Amazon DynamoDB
In DynamoDB sind Tabellen, Elemente und Attribute die zentralen Komponenten, mit denen Sie arbeiten. Eine Tabelle ist eine Sammlung von Elementen und jedes Element wiederum eine Sammlung von Attributen. DynamoDB verwendet Primärschlüssel, um jedes Element in einer Tabelle und sekundäre Indizes eindeutig zu identifizieren und so eine größere Abfrageflexibilität zu ermöglichen. Sie können DynamoDB Streams verwenden, um Datenänderungsereignisse in DynamoDB-Tabellen zu erfassen.
Es gibt Beschränkungen in DynamoDB. Weitere Informationen finden Sie unter Service-, Konto- und Tabellenkontingente in Amazon DynamoDB.
Das folgende Video gibt Ihnen einen einführenden Einblick in Tabellen, Elemente und Attribute.
Tabellen, Elemente und Attribute
Tabellen, Elemente und Attribute
Folgendes sind die grundlegenden DynamoDB-Komponenten:
-
Tabellen – Ähnlich wie bei anderen Datenbankmanagementsystemen werden auch die Daten von DynamoDB in Tabellen gespeichert. Eine Tabelle ist eine Sammlung von Daten. Ein Beispiel ist die folgende Tabelle People, die Sie zum Speichern von persönlichen Kontaktinformationen zu Freunden, Familienmitgliedern oder anderen Personen verwenden könnten. Sie könnten auch eine Tabelle namens Cars haben, um Informationen über Fahrzeuge zu pflegen.
-
Elemente - Jede Tabelle enthält keine oder mehrere Elemente. Ein Element ist eine Gruppe von Attributen, die unter allen anderen Elementen eindeutig identifizierbar ist. In einer People-Tabelle stellt jedes Element eine Person dar. In einer Cars-Tabelle stellt jedes Element ein Fahrzeug dar. Elemente in DynamoDB gleichen in vielerlei Hinsicht Zeilen, Datensätzen oder Tupel in anderen Datenbanksystemen. Bei DynamoDB gibt es keine Beschränkungen hinsichtlich Anzahl der Elemente, die in einer Tabelle gespeichert werden können.
-
Attribute – Jedes Element besteht aus einem oder mehreren Attributen. Ein Attribut ist ein grundlegendes Datenelement, das nicht weiter untergliedert werden muss. Beispielsweise enthält ein Element in einer Personentabelle Attribute mit der Bezeichnung PersonID LastNameFirstName,, usw. In einer Department-Tabelle könnte ein Element Attribute wie beispielsweise DepartmentID, Name, Manager usw. aufweisen. In DynamoDB gleichen Attribute in vielerlei Hinsicht Feldern oder Spalten in anderen Datenbanksystemen.
Das folgende Diagramm zeigt eine Tabelle mit dem Namen People mit einigen Beispielelementen und -attributen.
People
{
"PersonID": 101,
"LastName": "Smith",
"FirstName": "Fred",
"Phone": "555-4321"
}
{
"PersonID": 102,
"LastName": "Jones",
"FirstName": "Mary",
"Address": {
"Street": "123 Main",
"City": "Anytown",
"State": "OH",
"ZIPCode": 12345
}
}
{
"PersonID": 103,
"LastName": "Stephens",
"FirstName": "Howard",
"Address": {
"Street": "123 Main",
"City": "London",
"PostalCode": "ER3 5K8"
},
"FavoriteColor": "Blue"
}
Beachten Sie im Hinblick auf die Tabelle People Folgendes:
-
Jedes Element in der Tabelle verfügt über einen eindeutigen Bezeichner oder Primärschlüssel, der das Element von allen anderen Elementen in der Tabelle unterscheidet. In der Tabelle People besteht der Primärschlüssel aus einem Attribut (PersonID).
-
Mit Ausnahme des Primärschlüssels ist die Tabelle People schemalos. Dies bedeutet, dass weder die Attribute noch deren Datentypen im Vorfeld definiert werden müssen. Jedes Element kann über eigene eindeutige Attribute verfügen.
-
Die meisten Attribute sind skalar, das heißt, sie können nur einen Wert annehmen. Zeichenfolgen und Zahlen sind allgemeine Beispiele für skalare Werte.
-
Einige Elemente verfügen über ein verschachteltes Attribut (Address). DynamoDB unterstützt verschachtelte Attribute bis zu einer Tiefe von 32 Ebenen.
Im Folgenden finden Sie eine weitere Beispieltabelle mit dem Namen Music, die Sie verwenden können, um Ihre Musiksammlung zu erfassen.
Music
{
"Artist": "No One You Know",
"SongTitle": "My Dog Spot",
"AlbumTitle": "Hey Now",
"Price": 1.98,
"Genre": "Country",
"CriticRating": 8.4
}
{
"Artist": "No One You Know",
"SongTitle": "Somewhere Down The Road",
"AlbumTitle": "Somewhat Famous",
"Genre": "Country",
"CriticRating": 8.4,
"Year": 1984
}
{
"Artist": "The Acme Band",
"SongTitle": "Still in Love",
"AlbumTitle": "The Buck Starts Here",
"Price": 2.47,
"Genre": "Rock",
"PromotionInfo": {
"RadioStationsPlaying": [
"KHCR",
"KQBX",
"WTNR",
"WJJH"
],
"TourDates": {
"Seattle": "20150622",
"Cleveland": "20150630"
},
"Rotation": "Heavy"
}
}
{
"Artist": "The Acme Band",
"SongTitle": "Look Out, World",
"AlbumTitle": "The Buck Starts Here",
"Price": 0.99,
"Genre": "Rock"
}
Beachten Sie im Hinblick auf die Tabelle Music Folgendes:
-
Der Primärschlüssel für Musik besteht aus zwei Attributen (Künstler und SongTitle). Jedes Element in der Tabelle muss über diese beiden Attribute verfügen. Die Kombination von Artist und SongTitleunterscheidet jedes Element in der Tabelle von allen anderen.
-
Mit Ausnahme des Primärschlüssels ist die Tabelle Music schemalos. Dies bedeutet, dass weder die Attribute noch deren Datentypen im Vorfeld definiert werden müssen. Jedes Element kann über eigene eindeutige Attribute verfügen.
-
Eines der Elemente hat ein verschachteltes Attribut (PromotionInfo), das andere verschachtelte Attribute enthält. DynamoDB unterstützt bis zu 32 Ebenen verschachtelter Attribute.
Weitere Informationen finden Sie unter Arbeiten mit Tabellen und Daten in DynamoDB.
Primärschlüssel
Wenn Sie eine Tabelle erstellen, müssen Sie außer dem Tabellennamen auch den Primärschlüssel der Tabelle angeben. Der Primärschlüssel identifiziert jedes Element in der Tabelle eindeutig, es gibt also nicht zwei Elemente mit identischem Schlüsselwert.
DynamoDB unterstützt zwei verschiedene Arten von Primärschlüsseln:
-
Partitionsschlüssel – Ein einfacher Primärschlüssel bestehend aus einem Attribut, das als Partitionsschlüssel bezeichnet wird.
DynamoDB verwendet den Wert des Partitionsschlüssels als Eingabe für eine interne Hash-Funktion. Die Ausgabe der Hash-Funktion bestimmt die Partition (physischer interner Speicher von DynamoDB), in der das Element gespeichert wird.
In einer Tabelle mit nur einem Partitionsschlüssel können zwei Elemente in einer Tabelle nicht den gleichen Partitionsschlüsselwert haben.
Die Tabelle People, die in Tabellen, Elemente und Attribute beschrieben wird, ist ein Beispiel für eine Tabelle mit einem einfachen Primärschlüssel (PersonID). Sie können direkt auf jedes Element in der Tabelle Personen zugreifen, indem Sie den PersonIdWert für dieses Element angeben.
-
Partitionsschlüssel und Sortierschlüssel – Diese Schlüssel werden als zusammengesetzter Primärschlüssel bezeichnet, da er aus zwei Attributen besteht. Das erste Attribut ist der Partitionsschlüssel und das zweite der Sortierschlüssel.
DynamoDB verwendet den Wert des Partitionsschlüssels als Eingabe für eine interne Hash-Funktion. Die Ausgabe der Hash-Funktion bestimmt die Partition (physischer interner Speicher von DynamoDB), in der das Element gespeichert wird. Alle Elemente mit dem gleichen Partitionsschlüsselwert werden zusammen gespeichert, und zwar sortiert nach Sortierschlüsselwert.
In einer Tabelle, die über einen Partitionsschlüssel und einen Sortierschlüssel verfügt, ist es möglich, dass mehrere Elemente denselben Partitionsschlüsselwert aufweisen. Diese Elemente müssen aber verschiedene Sortierschlüsselwerte aufweisen.
Die unter beschriebene Tabelle Music Tabellen, Elemente und Attribute ist ein Beispiel für eine Tabelle mit einem zusammengesetzten Primärschlüssel (Artist und SongTitle). Sie können direkt auf jedes Element in der Tabelle Musik zugreifen, wenn Sie den Künstler und die SongTitleWerte für dieses Element angeben.
Mit einem zusammengesetzten Primärschlüssel erhalten Sie noch mehr Flexibilität bei der Abfrage von Daten. Wenn Sie beispielsweise nur den Wert für Artist angeben, ruft DynamoDB alle Songs dieses Interpreten ab. Um nur eine Teilmenge der Songs eines bestimmten Interpreten abzurufen, können Sie einen Wert für Künstler zusammen mit einem Wertebereich für SongTitleangeben.
Anmerkung
Der Partitionsschlüssel eines Elements wird auch als Hash-Attribut bezeichnet. Der Begriff Hash-Attribut leitet sich von der Verwendung einer internen Hash-Funktion in DynamoDB ab, durch die Datenelemente basierend auf ihren Partitionsschlüsselwerten gleichmäßig auf die Partitionen verteilt werden.
Der Sortierschlüssel eines Elements wird auch als Bereichsattribut bezeichnet. Der Begriff Bereichsattribut bezieht sich auf die Art und Weise, wie DynamoDB Elemente mit demselben Partitionsschlüssel physisch nah beieinander speichert, und zwar sortiert nach dem Sortierschlüsselwert.
Jedes Primärschlüsselattribut muss ein Skalarwert sein (das bedeutet, dass es nur einen einzigen Wert annehmen kann). Die einzigen Datentypen, die für Primärschlüsselattribute zulässig sind, sind Zeichenfolge, Zahl oder Binärwert. Es gibt keine Einschränkungen für andere Nicht-Schlüsselattribute.
Sekundäre Indexe
Sie können einen oder mehrere sekundäre Indizes für eine Tabelle erstellen. Ein Sekundärindex ermöglicht – ergänzend zu Abfragen über den Primärschlüssel – das Abfragen der Daten in der Tabelle über einen alternativen Schlüssel. Für DynamoDB ist die Verwendung von Indexen nicht erforderlich. Sie ermöglichen Ihren Anwendungen jedoch mehr Flexibilität beim Abfragen der Daten. Nachdem Sie einen sekundären Index für eine Tabelle erstellt haben, können Sie Daten aus dem Index ähnlich wie aus der Tabelle lesen.
DynamoDB unterstützt zwei Arten von Indexen:
-
Globaler sekundärer Index – Ein Index mit einem Partitionsschlüssel und einem Sortierschlüssel, die sich von denen in der Tabelle unterscheiden können.
-
Lokaler sekundärer Index – Ein Index, der denselben Partitionsschlüssel wie die Tabelle hat, aber einen anderen Sortierschlüssel.
In DynamoDB sind globale Sekundärindizes (GSIs) Indizes, die sich über die gesamte Tabelle erstrecken, sodass Sie Abfragen über alle Partitionsschlüssel durchführen können. Lokale sekundäre Indizes (LSIs) sind Indizes, die denselben Partitionsschlüssel wie die Basistabelle, aber einen anderen Sortierschlüssel haben.
Jede Tabelle in DynamoDB verfügt über ein Kontingent von 20 globalen sekundären Indizes (Standardkontingent) und 5 lokalen sekundären Indizes.
In der zuvor gezeigten Beispieltabelle „Musik“ können Sie Datenelemente nach Künstler (Partitionsschlüssel) oder nach Künstler und SongTitle(Partitionsschlüssel und Sortierschlüssel) abfragen. Was ist, wenn Sie die Daten auch nach Genre und abfragen möchten AlbumTitle? Dazu könnten Sie einen Index für Genre und erstellen und den Index dann auf die gleiche Weise abfragen AlbumTitle, wie Sie die Musiktabelle abfragen würden.
Das folgende Diagramm zeigt die Beispieltabelle Music mit einem neuen Index namens GenreAlbumTitle. Im Index ist Genre der Partitionsschlüssel und AlbumTitleder Sortierschlüssel.
Tabelle „Musik“ | GenreAlbumTitle |
---|---|
|
|
|
|
|
|
|
|
Beachten Sie Folgendes zum GenreAlbumTitleIndex:
-
Jeder Index gehört zu einer Tabelle, die als Basistabelle für den Index bezeichnet wird. Im vorherigen Beispiel ist Music die Basistabelle für den GenreAlbumTitleIndex.
-
DynamoDB verwaltet Indexe automatisch. Beim Hinzufügen, Aktualisieren und Löschen eines Elements in der Basistabelle fügt DynamoDB das entsprechende Element in allen Indexen hinzu, die zu dieser Tabelle gehören, bzw. aktualisiert oder löscht sie.
-
Wenn Sie einen Index erstellen, geben Sie an, welche Attribute aus der Basistabelle in den Index kopiert oder projiziert werden. DynamoDB projiziert mindestens die Schlüsselattribute aus der Basistabelle in den Index. Dies ist der Fall bei
GenreAlbumTitle
, da hier nur die Schlüsselattribute aus der TabelleMusic
in den Index projiziert werden.
Sie können den GenreAlbumTitleIndex abfragen, um alle Alben eines bestimmten Genres zu finden (z. B. alle Rock-Alben). Sie können den Index auch abfragen, um alle Alben in einem bestimmten Genre mit bestimmten Albumtiteln zu finden (z. B. alle Country-Alben mit Titeln, die mit dem Buchstaben H beginnen).
Weitere Informationen finden Sie unter Verbesserung des Datenzugriffs mit Sekundärindizes in DynamoDB.
DynamoDB Streams
DynamoDB Streams ist eine optionale Funktion, die Datenänderungsereignisse in DynamoDB-Tabellen erfasst. Die Daten über diese Ereignisse erscheinen nahezu in Echtzeit und in der Reihenfolge, in der die Ereignisse aufgetreten sind, im Stream.
Jedes Ereignis wird durch einen Stream-Datensatz repräsentiert. Wenn Sie einen Stream für eine Tabelle aktivieren, schreibt DynamoDB Streams einen Stream-Datensatz, sobald eines der folgenden Ereignisse eintritt:
-
Ein neues Element wird der Tabelle hinzugefügt: Der Stream erfasst ein Image des gesamten Elements, einschließlich aller Attribute.
-
Ein Element wird aktualisiert: Der Stream erfasst das Image von Attributen, die im Element modifiziert wurden, vor und nach der Änderung.
-
Ein Element wird aus der Tabelle gelöscht: Der Stream erfasst ein Image des gesamten Elements, bevor es gelöscht wurde.
Jeder Stream-Datensatz enthält auch den Namen der Tabelle, den Ereigniszeitstempel und andere Metadaten. Stream-Datensätze haben eine Lebensdauer von 24 Stunden. Danach werden sie automatisch aus dem Stream entfernt.
Sie können DynamoDB Streams zusammen mit verwenden, AWS Lambda um einen Triggercode zu erstellen, der automatisch ausgeführt wird, wenn ein interessierendes Ereignis in einem Stream auftritt. Nehmen wir als Beispiel eine Customers-Tabelle mit Kundeninformationen für ein Unternehmen. Angenommen, Sie möchten eine Willkommens-E-Mail an jeden neuen Kunden senden. Sie können einen Stream für diese Tabelle aktivieren und den Stream anschließend einer Lambda-Funktion zuordnen. Die Lambda-Funktion wird immer dann ausgeführt, wenn ein neuer Stream-Datensatz erscheint. Es werden jedoch nur neue Elemente verarbeitet, die der Tabelle Kunden hinzugefügt wurden. Für jeden Artikel mit einem EmailAddress
Attribut würde die Lambda-Funktion Amazon Simple Email Service (AmazonSES) aufrufen, um eine E-Mail an diese Adresse zu senden.
Anmerkung
In diesem Beispiel erhält der letzte Kunde, Craig Roe, keine E-Mail-Nachricht, da kein Wert für EmailAddress
vorhanden ist.
Neben Triggern ermöglicht DynamoDB Streams leistungsstarke Lösungen wie Datenreplikation innerhalb und zwischen AWS Regionen, materialisierte Ansichten von Daten in DynamoDB-Tabellen, Datenanalyse mit materialisierten Kinesis-Ansichten und vieles mehr.
Weitere Informationen finden Sie unter Ändern Sie die Datenerfassung für DynamoDB Streams.