2017-12-18 48 views
3

私は属性があり、既存のDynamoDBのテーブルを持っているが、私は唯一のA1のみのために、既存のレコードを更新する既存のDynamoDBのクライアントを持ってDynamoDBの同時書き込み

 
--------------------------------------------------------- 
hk(hash-key)| rk(range-key)| a1 | a2 | a3 | 
--------------------------------------------------------- 


を言います。私は2番目のライター(DDBクライアント)を作成して、既存のレコードも更新したいと思いますが、a2とa3のみです。
DynamoDbは、すべてのa1 a2 a3が正しい値(3つの新しい値すべて)で更新されることをddbクライアントが確実に同じレコード(1の場合はa1、もう1つとa2とa3の場合)を更新しようとします。この目的に十分なUPDATE_SKIP_NULL_ATTRIBUTESの動作を使用していますか、何らかのオプティミスティック・ロックを実装する必要がありますか?そうでない場合、 DDBがこの目的のためにオンザフライで提供するものはありますか?

答えて

-1

DyanmoDBへの読み取りは最終的に一貫しています。 これを参照してください:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html

DynamoDBのは、最終的に一貫したサポートし、強く一貫した読み取ります。

最終的に一致して

を読み取り、あなたがDynamoDBのテーブルからデータを読み込むときに、応答が は最近完了し、書き込み動作の結果を反映していない可能性があります。 応答には、古いデータが含まれている可能性があります。短い時間の後にあなたの読み取り 要求を繰り返す場合、応答は最新の データを返さなければなりません。あなたが強く一貫した読み取りを要求すると

が強く一貫性が

読み込み、DynamoDBのは から正常に実行されたすべての以前の書き込み操作を更新を反映し、最新のデータで 応答を返します。ネットワークの遅延や停止が発生した場合、強固に一貫性のある の読み取りが利用できない可能性があります。

メモ を指定しない限り、DynamoDBは最終的に一貫した読み取りを使用します。読み取り操作(GetItem、Query、Scanなど)は、ConsistentReadパラメーター を提供します。このパラメータをtrueに設定すると、 DynamoDBは操作中に強く一貫性のある読み取りを使用します。

基本的には、読んだときに強く一貫性のあるデータが必要であると指定しています。

あなたの問題を解決するはずです。一貫性のある読み取りでは、3つのフィールドの更新がすべて表示されます。

強固な一貫性のある読み取りには、価格に影響することに注意してください。

+0

私は強く一貫性のある読み込みのスループットを知っています。私は、2人の異なる作家と同じレコードを同時に書き込むことが可能かどうか、あるいはいずれか1つが一度に成功するかどうかを尋ねているだけで、最終的なレコードはa1 a2 a3またはa1 a'2 a'3。私は私の質問を説明することができますように願っています。 –

0

SDKがOptimistic Lockingでサポートされているため、Dynamo Java SDKを使用している場合は、運が良かったです。他のSDKが類似のものをサポートしているかどうかはわかりません。

オプティミスティック・ロックを使用して、更新(または削除)されているクライアント側項目 はDynamoDBのアイテムと同じであることを保証するための戦略です。この戦略を使用すると、データベースの書き込みは、 が他人の書き込みによって上書きされないように保護され、 はその逆になります。

+0

ありがとう、楽観的なロックが唯一の方法であるかどうかを見てみましょう。 –

関連する問題