Ist es möglich, nach der Tabellenerstellung die Spalte Rankey zu ändern? Dazu gehört das Hinzufügen einer neuen Spalte / eines neuen Attributs und die Zuweisung als RangeKey für die Tabelle. Ich habe versucht, zu suchen, kann aber keine Artikel finden, in denen der Range- oder Hash-Schlüssel geändert wird.
Nein, leider ist es nicht möglich, den Hash-Schlüssel, den Bereichsschlüssel oder die Indizes zu ändern, nachdem eine Tabelle in DynamoDB erstellt wurde. Die UpdateItem
API-Dokumentation von DynamoDB macht deutlich, dass Indizes nicht geändert werden können. Ich kann keinen Verweis auf eine Stelle in der Dokumentation finden, die explizit angibt, dass die Tabellenschlüssel nicht geändert werden können, aber derzeit nicht geändert werden können.
Beachten Sie, dass DynamoDB außer dem Hash- und Bereichsschlüssel schemalos ist. Sie können anderen Elementen problemlos neue Attribute hinzufügen. Wenn Sie Ihren Hash- oder Bereichsschlüssel ändern müssen, müssen Sie leider eine neue Tabelle erstellen und die Daten migrieren.
Bearbeiten (Januar 2014) : DynamoDB unterstützt jetzt globale Sekundärindizes im laufenden Betrieb
Um einen zusätzlichen Sortierschlüssel zu ändern oder zu erstellen, müssen Sie eine neue Tabelle erstellen und dorthin migrieren, da beide Aktionen nicht für vorhandene Tabellen ausgeführt werden können.
Mit DynamoDB-Streams können Tabellen ohne Ausfallzeiten migriert werden. Ich habe das sehr effektiv gemacht, und die Schritte, denen ich gefolgt bin, sind:
Scannen Sie das im vorherigen Schritt erstellte GSI (oder die gesamte Tabelle) und verwenden Sie den folgenden Filter:
FilterExpression="attribut_not_exists (migriert)"
Aktualisieren Sie jedes Element in der Tabelle mit einem Migrationsflag (z. B. "migriert": {"S": "0"), das es an die DynamoDB-Streams sendet (mithilfe der UpdateItem-API, um sicherzustellen, dass kein Datenverlust auftritt).
HINWEIS : Möglicherweise möchten Sie während der Aktualisierungen die Schreibkapazitätseinheiten in der Tabelle erhöhen.
Die folgenden Schritte sollten sicherstellen, dass Sie keinen Datenverlust und keine Ausfallzeiten haben.
Ich habe dies in meinem Blog dokumentiert, mit Code zur Unterstützung: Ссылка
Tags und Links amazon-dynamodb