3

DynamoDBの実際の読み取りを構成するものは何ですか?

テーブルのすべての行を読み取るのですか、それともどのデータが返されるのですか?

これがスキャンが非常に高価な理由です-テーブル全体を読み取り、読み取られたテーブル行ごとに課金されますか?

コストを抑えるために、ElasticCache(Memcached)をDynamoDBの前に置くことはできますか?

最後に、結果が得られないクエリに対して課金されますか?

4

1 に答える 1

2

このリンクを参照してください:http://aws.amazon.com/dynamodb/faqs/

1書き込み=1Kbまでのサイズのアイテムの1秒あたりの書き込み。

1読み取り=2最大サイズのアイテムの場合は1秒あたり2読み取り、完全に一貫した結果が必要な場合は1秒あたり1読み取り。

たとえば、アイテムが512バイトで、テーブルから1秒あたり100アイテムを読み取る必要がある場合は、100ユニットの読み取り容量をプロビジョニングする必要があります。

アイテムのサイズが1KBを超える場合は、必要な読み取り容量と書き込み容量のユニット数を計算する必要があります。たとえば、アイテムが1.5KBで、1秒あたり100回の読み取りを実行する場合は、100(1秒あたりの読み取り)x 2(1.5KBを最も近い整数に切り上げ)=200ユニットの読み取り容量をプロビジョニングする必要があります。 。

読み取り容量の必要なユニット数は、API呼び出しの数ではなく、1秒あたりに読み取られるアイテムの数によって決定されることに注意してください。たとえば、テーブルから1秒あたり500アイテムを読み取る必要があり、アイテムが1KB以下の場合、500ユニットの読み取り容量が必要です。500個の個別のGetItem呼び出しを実行するか、それぞれが10個のアイテムを返す50個のBatchGetItem呼び出しを実行するかは関係ありません。

上記は、すべての通常のメソッド、GET、BATCH X、およびQUERYに適用されます。SCANは少し異なり、使用量の計算方法を正確に文書化していないが、以下を提供している。

Scan APIはデータセット全体を反復処理し、すべての行にフィルター条件を適用します。一度にスキャンできるデータは1MBのみであるため、スキャンを完了するには、(継続トークンを使用して)複数のラウンドトリップを実行する必要がある場合があります。さらに、このAPIを使用すると、プロビジョニングされた読み取りスループットの多くが消費される可能性があります。したがって、この方法のスケーリング特性は限られており、アプリケーションの通常の動作の一部として使用することはお勧めしません。

したがって、質問に直接答えるには、SCANを除いて、すべての場合に返されるデータに基づいて計算が行われます。SCANでは、課金方法が明確に示されていません。結果が得られないクエリは、費用がかかりません。

Dynamoの前にキャッシュシステムを確実にセットアップできます。読み取りを抑えたい場合は、それを調べることを強くお勧めします。

お役に立てば幸いです。

于 2012-12-22T20:54:19.510 に答える