web-dev-qa-db-ja.com

重複するハッシュキーを使用してDynamo DBに挿入するとどうなりますか?

私はダイナモDBに挿入しようとしています。 putItem関数を呼び出すと、ハッシュキーがすでにDBに存在する場合はどうなりますか? PutItemResultオブジェクトには、重複するハッシュエントリが試行されたかどうかを通知する何かが含まれていますか?別のクエリを実行して、使用しているハッシュキーを持つエントリがあるかどうかを確認したくありません。

23
coder

既存の主キーにアイテムを挿入した場合、「期待値」を使用しない限り、アイテムは上書きされます。公式ドキュメントの紹介です:

http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_PutItem.html

新しいアイテムを作成するか、古いアイテムを新しいアイテム(すべての属性を含む)で置き換えます。指定されたテーブルに同じ主キーを持つアイテムが既に存在する場合、新しいアイテムが既存のアイテムを完全に置き換えます。条件付きプット(指定した主キーを持つものが存在しない場合は新しいアイテムを挿入)を実行したり、特定の属性値がある場合は既存のアイテムを置き換えたりできます。

新しいアイテムが既存のアイテムを置き換えないようにするには、条件付きのput操作を使用して、1つまたは複数の主キー属性に対してExistsをfalseに設定します。

それ以外の場合は、UpdateItemを使用して既存のアイテムのフィールドを更新することもできます: http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_UpdateItem.html

34
yadutaf

挿入前に存在していた値のPutItemResult.getAttributesからマップを返す「withReturnValues(ReturnValue.ALL_OLD)」を使用できます。

PutItemResult.getAttributesがnullを返す場合、それは新しいエントリでした。

2
Lee Winder