- デフォルトでは、動作(書き込みDynamoDBの
PutItem
、UpdateItem
およびDeleteItem
)は、無条件:各オペレーションは、指定されたプライマリ・キーを持つ既存のアイテムを上書きします。 - DynamoDBの条件付き書き込みが選択的にこれらの操作をサポートすることができます。プロパティは、1つ以上の条件が期待されている満たしている場合にのみ、条件付き書き込みは、プロジェクトが成功するでしょう。それ以外の場合はエラーを返します。非常に便利な多くの場合、条件付き書き込み。たとえば、あなたがしたい場合があります
PutItem
、同じ主キーを持つプロジェクトの存在下で、正常に動作することはまだできません。これらの項目の一つは、プロパティの特定の値を持っている場合は、あなたは防ぐことができUpdateItem
、プロジェクトを変更する操作を。 - 条件付き書き込み、複数のユーザーが同じプロジェクトを変更しようとする場合に便利。二人のユーザ(アリスとボブは)同じプロジェクトDynamoDBのテーブルの上に作業している次の図を、考えてみましょう。
条件付き書き込み冪等
条件のチェックが同じプロパティに更新する場合は、条件付き書き込みが可能な冪等 で。これは、プロパティ値の要求であなたと特定の項目は、彼らが期待している値と一致する場合にのみとき、DynamoDBのが唯一与えられた書き込み要求を実行することを意味します。
たとえば、あなたが送ったとし UpdateItem
たプロジェクトの3つの増分を増加させるための要求を Price
、唯一 Price
現在、20のためにこれを行います。リクエストを送信するが、結果はまだ返却されていない間の時間では、ネットワークエラーが発生した、あなたは要求が成功したかどうかわかりません。この条件が冪等書かれているので、あなたが同じ再試行することができ UpdateItem
、要求を、DynamoDBのが唯一のでしょう Price
、現在のプロジェクトが20に更新します。
冪等とは何ですか
つのプライマリと複数のリソース要求:HTTP / 1.1は、それがあるべき等と定義されているリソース自体には、(ネットワークタイムアウトの問題を除いて)同じ結果を持っている必要があります。換言すれば、その複数の実行のいずれかは、それ自体に有するリソースの影響一度同じ衝撃を用いて実施しました。
方法は、N> 0の同一の要求の副作用が単一のリクエストと同じである(余談エラーまたは有効期限の問題から)という点で、「冪等性」の性質を有することができます。
我々はいくつかのポイントに焦点を当てるべきです:
-
冪等だけではなく1つ(または複数)のリソースに悪影響要求しない(例えばデータベース操作を照会として、無付加および欠失を、したがってデータベースへの影響はありません)。
-
初めての冪等も副作用を生成するために、リソースの要求が含まれていますが、多くの後続の要求は、資源への悪影響をもたらすことはありません。
-
べき等の懸念はむしろ結果に焦点を当てるよりも、生成されたリソースを繰り返し要求した後、副作用かどうかです。
-
ネットワークタイムアウトやその他の問題は、議論を冪等ではありません。
冪等(そして達成しない)限り、成功したコール・インターフェースへのコミットメントとして、システムに外部からの衝撃に複数のコールが一致しているコミットメント外部システムサービスです。宣言された冪等のサービスコールは、規範の外側を考える失敗し、失敗した後そこに再試行する必要があります。