8

アプリケーションのユースケース用に最適化されたキーとスループットを持つ DynamoDB テーブルを使用しています。他のアドホックな管理およびレポートのユースケースをサポートするために、S3 に完全なバックアップを保持したいと考えています (1 日前のバックアップは問題ありません)。繰り返しになりますが、バックアップを行うために DynamoDB テーブル全体をスキャンする余裕はありません。私が持っている鍵は、何が「新しい」かを見つけるのに十分ではありません. 増分バックアップを行うにはどうすればよいですか? これを行うためだけに DynamoDB スキーマを変更したり、テーブルを追加したりする必要がありますか? ベストプラクティスはありますか?

更新: DynamoDB Streamsはこの問題を解決します。

DynamoDB Streams は、任意の DynamoDB テーブル内の項目レベルの変更の時系列シーケンスをキャプチャし、この情報を最大 24 時間ログに保存します。アプリケーションはこのログにアクセスして、変更前と変更後のデータ項目をほぼリアルタイムで表示できます。

4

5 に答える 5

6

2 つのオプションが表示されます。

  1. 現在のスナップショットを生成します。これを行うには、テーブルから読み取る必要があります。これは、非常に遅い速度で実行して、容量制限 (スキャン操作) を超えないようにすることができます。次に、一定期間実行された更新のメモリ内リストを保持します。これらを別の表に入れることもできますが、それらも読み取る必要があり、おそらく同じくらいの費用がかかります。この時間間隔は、1 分、10 分、1 時間など、アプリケーションが終了した場合に失われると思われるものであれば何でもかまいません。次に、定期的に S3 からスナップショットを取得し、スナップショットでこれらの変更を再生して、新しいスナップショットをアップロードします。データ セットの大きさがわからないので、これは実用的ではないかもしれませんが、最大 1 ~ 2 GB のデータ セットで大きな成功を収めているのを見てきました。

  2. 読み取りスループットを追加し、毎日フル スキャンを使用してデータをバックアップします。あなたはそれを買う余裕がないと言いますが、容量に対して支払うことを意味するのか、それともスキャンがすべての容量を使い果たし、アプリケーションが失敗し始めるのかは明らかではありません. DynamoDB からデータを引き出す唯一の方法は、強力な整合性または最終整合性のいずれかを読み取ることです。バックアップがビジネス要件の一部である場合、その価値があるかどうかを判断する必要があると思います。ConsumedCapacityUnits結果のプロパティを調べることで、読み取りをセルフスロットルできます。Scan 操作には、各操作で読み取られるデータの量を制限するために使用できる Limit プロパティがあります。また、Scan は最終的に一貫性のある読み取りを使用します。これは、強力な一貫性のある読み取りの半分の価格です。

于 2013-04-01T13:34:03.850 に答える
4

dynamoDB ストリームを使用して、データを別のテーブルに保持したり、データの別のコピーを別のデータストアに維持したりできるようになりました。

https://aws.amazon.com/blogs/aws/dynamodb-streams-preview/

于 2015-02-06T01:10:29.197 に答える
4

増分バックアップの場合、DynamoDB ストリームを Lambda 関数に関連付けて、データ更新ごとにコードを自動的にトリガーできます (つまり、S3 などの別のストアへのデータ)。

増分バックアップのために DynamoDb と連携するために使用できるラムダ関数:

https://github.com/PageUpPeopleOrg/dynamodb-replicator

DynamoDB Streams、Lambda、および S3 のバージョン管理されたバケットを使用して、DynamoDb でデータの増分バックアップを作成する方法について、私のブログで詳細なウォークスルーを提供しました。

https://www.abhayachauhan.com/category/aws/dynamodb/dynamodb-backups

あるいは、DynamoDB はオンデマンドのバックアップと復元を実現したばかりです。これらは増分ではなく、完全なバックアップ スナップショットです。

詳細については、 https://www.abhayachauhan.com/2017/12/dynamodb-scheduling-on-demand-backups/をご覧ください。

HTH

于 2016-06-07T10:33:00.030 に答える
0

DynamoDB のスキャン操作は、プライマリ キー (ハッシュ キー) でソートされた行を返します。そのため、テーブルのハッシュ キーが自動インクリメントされた整数である場合、前回のバックアップ中に保存された最後のレコードのハッシュ キーを、次のバックアップを実行するときにスキャン リクエストの「lastEvaluatedKey」パラメータとして設定すると、スキャンは次のレコードを返します。最後のバックアップ以降に作成されたもののみ。

于 2015-03-07T11:10:48.323 に答える