1

「RefNumber」、「status」、「Date」のテーブルがあります。「RefNumber」はパーティションキー、「Status」はソートキーなので、どちらも主キーになります。

{
    "RefNumber": "122345",
    "Status": "0",
    "DateTime": 15343354545
}

このレコードを取得した後、「ステータス」を「1」に更新したいと思います。複数のワーカーが DynamoDB レコードを読み取っています。2 つのワーカーが同じレコードを処理するのを避けるために、ConditionExpression を使用して「ステータス」を「1」で取得および更新します。更新が成功した場合、ワーカーはそれ以外の場合はスキップします。

私の質問は、dynamodb の主キーの一部である属性値を更新するのは良い設計ですか?

4

1 に答える 1

2

簡単に言えばいいえです。DynamoDB の項目のキーを形成する属性を更新することはできません

アイテムを削除して別のアイテムを作成することしかできません。

これを論理的に考えると、要素のキーを変更しても意味がありません。要素はそのキーによって一意に識別されるため、キーを変更することは何を意味するのでしょうか? 古い要素が完全に置き換えられたことを意味します。

DynamoDB は、アトミックな「置換」操作を提供しません。

于 2018-11-01T15:11:29.897 に答える