テーブル作成後にRangekey列を変更することは可能ですか?新しい列/属性の追加、テーブルのRangeKeyとしての割り当てなど。検索を試みましたが、範囲またはハッシュキーの変更に関する記事を見つけることができません
いいえ、残念ながら、DynamoDBでテーブルが作成された後でハッシュキー、範囲キー、またはインデックスを変更することはできません。 DynamoDB UpdateItem
API Documentation は、インデックスを変更できないという事実について明確です。テーブルキーを変更できないことを明示的に示しているドキュメント内のどこへの参照も見つかりませんが、現在は変更できません。
DynamoDBはハッシュキーと範囲キー以外にスキーマレスであり、他の属性を問題なく新しいアイテムに追加できることに注意してください。残念ながら、ハッシュキーまたは範囲キーを変更する必要がある場合は、新しいテーブルを作成してデータを移行する必要があります。
編集(2014年1月):DynamoDBが on the flyのグローバルセカンダリインデックスをサポートするようになりました
追加のソートキーを変更または作成するには、既存のテーブルでは両方のアクションを実行できないため、新しいテーブルを作成してそこに移行する必要があります。
DynamoDBストリームにより、ダウンタイムなしでテーブルを移行できます。私はこれを非常に効果的にしました、そして私が従ったステップは次のとおりです:
前の手順で作成したGSI(またはテーブル全体)をスキャンし、次のフィルターを使用します。
FilterExpression = "attribute_not_exists(Migrated)"
テーブル内の各アイテムを移行フラグで更新します(例:“ Migrated”:{“ S”:“ 0”})、それをDynamoDBストリームに送信します(データの損失が発生しないように、UpdateItem APIを使用します)。
[〜#〜]注[〜#〜]:更新中にテーブルの書き込み容量ユニットを増やしたい場合があります。
これらの手順に従うと、データの損失やダウンタイムが発生しないことが保証されます。
私はこれを私のブログに文書化し、支援するコードを付けました: https://www.abhayachauhan.com/2018/01/dynamodb-changing-table-schema/