DynamoDBのGSIのキーの値は変更できるよ!
こんにちは、CX事業本部 IoT事業部の若槻です。
今回は、DynamoDBのGSI(Global Secondary Index)のキーの値は変更可能であることを確認してみました。
使用したDynamoDBテーブル
下記のようなGSIおよびLSI含むキーから成るDynamoDBテーブルを作りました。
用途 | 属性 | タイプ |
---|---|---|
テーブル パーティションキー | id | 文字列 |
テーブル ソートキー | createdAt | 数値 |
GSI パーティションキー | productOf | 文字列 |
GSI ソートキー | updatedAt | 数値 |
現在の格納データはこんな感じ。
[ { "id": "f001", "createdAt": 11111111, "productOf": "山形", "name": "りんご", "updatedAt": 11111111 }, { "id": "f002", "createdAt": 22222222, "productOf": "福島", "updatedAt": 22223333, "name": "桃" }, { "id": "f003", "createdAt": 33333333, "productOf": "岩手", "updatedAt": 33334444, "name": "シャインマスカット" } ]
GSIを使ってこんな感じに検索できます。
テーブルのキーの値の変更(不可)
まずテーブルのパーティションキーとソートキーを変更不可であることを確認します。
りんごデータに対して、テーブルのパーティションキーであるid属性の値をf001
からf005
に変更しようとしたら、項目の再作成が必要となります。
りんごデータに対して、テーブルのソートキーであるcreatedAt属性の値を00000000
から00001111
に変更しようとしたら、こちらもまた項目の再作成が必要となります。
GSIのキーの値の変更(可能)
それでは今回の主目的、GSIのパーティションキーとソートキーを変更可能であることを確認します。
GSIのパーティションキーの値の変更
桃データに対して、GSIのパーティションキーであるproductOfを福島
から福島県福島市
に変更してみます。
変更できました。
GSIのソートキーの値の変更
シャインマスカットデータに対して、GSIのソートキーであるupdatedAtを33334444
から44444444
に変更してみます。
変更できました。
GSIの両方のキーの値の変更
念の為。
りんごデータに対して、GSIのパーティションキーproductOfを山形
から山形県朝日町
に、ソートキーupdatedAtを11111111
から11112222
に変更します。
変更できました。
おわりに
DynamoDBのGSI(Global Secondary Index)のキーの値は変更可能であることを確認してみました。
変更出来るんだっけっけ?とたまに迷うことがあるので、備忘のためこうして残しておきます。
以上