2012-02-09 13 views
5

キー属性でINクエリを実行する必要があります。クエリはIN条件を提供しないので、私はスキャンを使用する予定です。キー属性のSCANはテーブル全体をスキャンしますか?DynamoDBのキー属性をスキャンする

+0

2014年4月現在、INでクエリを使用できます。https://aws.amazon.com/blogs/aws/improved-queries-and-updates-for-dynamodb/ – emilyk

答えて

5

キー属性のSCANはテーブル全体をスキャンしますか?

はい、Query and Scan in Amazon DynamoDB参照:スキャン

スキャン動作テーブル全体を走査します。 フィルタを指定して、 のスキャンが完了した後で、返された値を絞り込むために結果に適用することができます。 Amazon DynamoDBはスキャンに1MBの制限を設けます(結果がフィルタリングされる前に制限 が適用されます)。スキャンによって、フィルタ条件を満たすテーブルデータが にならない場合があります。具体的には、限りScan APIに関しては属性、あなたは、単に名前が希望する属性を提供する。すなわち、キーと非キーの間に差がないに関わらず、それらの同様Primary Keyを構成するか、属性として使用されて

ない:属性名の

AttributesToGet

アレイ。属性名が指定されていない場合は、 すべての属性が返されます。いくつかの属性が見つからない場合、 は結果に表示されません。

+1

あまりにも悪いです。百万レコードセットの100個の一致するレコードのスキャンとクエリのコストの違いは何ですか? –

+0

@Mani:巨大な可能性が最も高い:_SCAN_はそのように使用するようには設計されておらず、巨大なレコードセットのコスト/パフォーマンスに重大な影響を与えます。 Chris Moyerの最初のブログ記事[Amazon DynamoDB](http://blog.coredumped.org/2012/01/amazon-dynamodb.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ChrisMoyer+%28Chris+Moyer%29)分析のために、100万レコードセットのサンプルと、この問題をどのように説明するのかを考えています。 –

1

batchGetItemはあなたのために働くでしょうか?

+0

実際には、エンティティにはキーと範囲属性があります。したがって、それはキー属性のIN条件とbetween条件です。ところで、どのようにpojoクラスでbatchgetitemを使用しますか? –

+0

@ ManiDoraisamyでは、INリストのハッシュキー値ごとにクエリを発行することをお勧めします。それらのクエリ結果を結合してamazonのEC2で実行する小さなアプリケーションを書くと、待ち時間の増加を緩和する必要があります。 _Amazon DynamoDBもAmazon Elastic MapReduce_と統合されているため、amazonのEMRにこの後者のタスクを与えることができます。 – Mikha

+0

@ManiDoraisamyあなたの2番目の質問には答えはありません。 'BatchGetItemRequest'は100個までの' Key'のリストにネームダウンします。 「Key」には、テーブル内のレコードを正確に識別するためのハッシュキーとレンジキーの両方に対する「AttributeValue」が含まれています。 btw、レコードは基本的に 'Map'であり、あなたのpojosをそれらの内外に変換するのはあなたの責任です。 – Mikha

関連する問題