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.
Erstellen eines Index
Vergleichen Sie die CREATE INDEX
Aussage SQL mit der UpdateTable
Operation in Amazon DynamoDB.
Einen Index erstellen mit SQL
In einer relationalen Datenbank ist ein Index eine Datenstruktur, mit der Sie schnelle Abfragen für verschiedene Spalten einer Tabelle ausführen können. Sie können die CREATE
INDEX
SQL Anweisung verwenden, um einer vorhandenen Tabelle einen Index hinzuzufügen und dabei die zu indizierenden Spalten anzugeben. Nachdem der Index erstellt wurde, können Sie die Daten in der Tabelle wie üblich abfragen. Die Datenbank kann die angegebenen Zeilen in der Tabelle anhand des Index schnell finden, sodass nicht die gesamte Tabelle gescannt werden muss.
Nachdem Sie einen Index erstellt haben, wird dieser von der Datenbank gepflegt. Sobald Sie Daten in der Tabelle ändern, wird der Index automatisch den Änderungen in der Tabelle entsprechend angepasst.
In My SQL würden Sie einen Index wie den folgenden erstellen.
CREATE INDEX GenreAndPriceIndex ON Music (genre, price);
Erstellen eines Index in DynamoDB
In DynamoDB können Sie einen sekundären Index für ähnliche Zwecke erstellen und verwenden.
Indexe in DynamoDB unterscheiden sich von ihren relationalen Gegenstücken. Wenn Sie einen sekundären Index erstellen, müssen Sie dessen Schlüsselattribute angeben – einen Partitionsschlüssel und einen Sortierschlüssel. Nachdem Sie den sekundären Index erstellt haben, können Sie Query
oder Scan
wie bei einer Tabelle erstellen. DynamoDB bietet keinen Abfrageoptimierer, sodass ein sekundärer Index nur bei der Query
- oder Scan
-Aktion verwendet wird.
DynamoDB unterstützt zwei verschiedene Arten von Indexen:
-
Globale sekundäre Indexe – Der Primärschlüssel des Index kann aus zwei beliebigen Attributen der Tabelle bestehen.
-
Lokale sekundäre Indexe – Der Partitionsschlüssel des Index muss mit dem Partitionsschlüssel der Tabelle übereinstimmen. Der Sortierschlüssel kann ein beliebiges, anderes Attribut sein.
DynamoDB stellt sicher, dass die Daten in einem sekundären Index schließlich mit seiner Tabelle konsistent sind. Sie können stark konsistente Query
- oder Scan
-Aktionen für eine Tabelle oder einen lokalen sekundären Index anfordern. Globale sekundäre Indexe unterstützen jedoch nur die letztendliche Datenkonsistenz.
Sie können einer vorhandenen Tabelle einen globalen sekundären Index hinzufügen, indem Sie die UpdateTable
-Aktion verwenden und GlobalSecondaryIndexUpdates
angeben.
{ TableName: "Music", AttributeDefinitions:[ {AttributeName: "Genre", AttributeType: "S"}, {AttributeName: "Price", AttributeType: "N"} ], GlobalSecondaryIndexUpdates: [ { Create: { IndexName: "GenreAndPriceIndex", KeySchema: [ {AttributeName: "Genre", KeyType: "HASH"}, //Partition key {AttributeName: "Price", KeyType: "RANGE"}, //Sort key ], Projection: { "ProjectionType": "ALL" }, ProvisionedThroughput: { // Only specified if using provisioned mode "ReadCapacityUnits": 1,"WriteCapacityUnits": 1 } } } ] }
Sie müssen die folgenden Parameter für UpdateTable
angeben:
-
TableName
– Die Tabelle, mit der der Index verknüpft wird. -
AttributeDefinitions
– Die Datentypen für die Schlüsselschemaattribute des Index. -
GlobalSecondaryIndexUpdates
– Details zu dem Index, den Sie erstellen möchten:-
IndexName
– Ein Name für den Index. -
KeySchema
– Die Attribute, die für den Indexprimärschlüssel verwendet werden. -
Projection
– Attribute aus der Tabelle, die in den Index kopiert werden. In diesem Fall bedeutetALL
, dass alle Attribute kopiert werden. -
ProvisionedThroughput (for provisioned tables)
– Die Anzahl der Lese- und Schreibvorgänge pro Sekunde, die Sie für diesen Index benötigen. (Dieser Wert steht nicht mit den Einstellungen für den bereitgestellten Durchsatz der Tabelle in Zusammenhang.)
-
Ein Teil dieser Operation umfasst das Abgleichen von Daten aus der Tabelle mit dem neuen Index. Während des Abgleichs ist die Tabelle weiterhin verfügbar. Der Index ist allerdings erst bereit, wenn sich das Attribut Backfilling
von TRUE in FALSE ändert. Sie können die Aktion DescribeTable
zum Anzeigen dieses Attributs verwenden.