2017-10-21 13 views
1

私はnosql/DynamoDBを初めて使用しています。DynamoDBのすべてのレコードを更新するには?

[ 
    { containerId: '1a3z5', items: ['B2a3, Z324, D339, M413'] }, 
    { containerId: '42as1', items: ['YY23, K132'] }, 
    ... 
] 

(主キー= containerIdは)

  1. それが実行可能である:

    は私が6時間ごとに更新され〜10 000コンテナのアイテムレコードのリストを、持っていますテーブルを削除し、新しい値で再作成しますか?

  2. または私は新しいリストのすべての項目をループし、条件付きで更新/書き込み/(batchwriteを使用して)現在のDynamoDBのレコードを削除する必要がありますか?

答えて

1

このシナリオでは、バッチ更新がより適切です。バッチ更新は、より効率的であるよりも、あなたが唯一の特定のレコードを更新する必要がある場合

  • :あなたは2例があります。テーブル全体をスキャンし、レコードを反復して特定のレコードのみを更新することができます。
  • 6時間ごとにすべてのレコードを更新する必要がある場合は、テーブルを削除してテーブルを再作成すると、インデックスを再作成する必要があり、非常に高速なプロセスではないため、バッチ更新が効率的になります。テーブルを再作成した後でも、挿入を行う必要がありますが、その間にすべてのレコードを別のデータベースまたはメモリに保存する必要があります。

APIを使用してすべてのレコードを削除するよりもはるかに高速にテーブルを再作成するよりも、数千またはそれ以上のレコードを持つテーブルからすべてのデータを削除する必要がある場合には、

もう1つの提案は、問題がDynamoDBの良いユースケースのように見えないためです。たとえば、MongoDBとCassandraは、そのままの状態でクエリを更新します。

+0

お返事ありがとうございます。 このユースケースでは、DynamoDBが適切ではないことが正しいかもしれません。 基本的に私は別のデータベース(私はデータを取得するAPI)の結果をキャッシュしています。ですから、Amazon ElastiCacheを使ってデータを保存するほうが良いかもしれないと考えています。どう思いますか? – T1000

+0

dynamoはバッチ更新をサポートしていないようですので、バッチ書き込みを実行する必要があります。まず、すべてのアイテムを読み込む必要があります – Yerken

関連する問題