2017-12-19 8 views
0

2番目のソートキーを設定してインデックスを設定しています(整数のタイムスタンプ)。 APIはKeyConditionExpressionを与えていないと不満を持ち続けます。それから私がそれを与えるなら、それはidが指定されなければならないと言います。私はid> nullを使ってすべて私にそれを強制しようとしましたが、それはまだそれをしません。これも可能ですか?もしこれが完全に簡単な仕事をすることができないなら、ダイナモを取り除くための時間かもしれません。Dynamo DB、どのようにすべてを照会してソートキーを利用するのですか

神の愛のために、私がしようとしているのは、テーブル全体を照会し、それに私のソートキーを使用することだけです。私はこれを数時間前にSQLに入れていたでしょう。

答えて

-2

続きを読むには、IndexNameをスキャンに追加することもできます。それは役に立ちます。さらに、ソートキーを使用してインデックスを作成する場合、ソートが発生するためにはすべてのプライマリインデックスが同一でなければなりません。

+0

すべてのIndexNameは、テーブルではなくインデックスからアイテムを返します。 – Stu

3

まず、DynamoDBはNOSQLデータベースなので、意図的にSQLではありません。たぶん、あなたが以前使っていたクエリのようにSQLを実行できるとは思ってはいけません。また、それぞれが長所と短所を持っている2つの全く異なるタイプのデータベースであるという事実に不満を抱いているかもしれません。

DynamoDBのレコードは、ハッシュキーを使用してパーティション化され、オプションで各パーティション内でソートされます。 ハッシュキーは、項目ができるだけパーティションに均等に分散されるように選択する必要があります。パーティションの使用は、DynamoDBを非常にスケーラブルかつ高速にするものです。しかし、必要なものがすべてのアイテムをスキャンしてソートされた順序で取得している場合は、間違ったツールを使用しているか、クライアント側でアイテムを並べ替える必要があります。

スキャン操作は単にすべてのパーティションを通過し、各パーティションからすべてのアイテムを戻します。この時点で、アイテムはそれぞれのパーティション内でのみソートできます。

は例として、データのセットが3つのパーティションに分割されて考えてみましょう。あなたが見ることができるように

Partition A    Partition B    Partition B 

Sort key     Sort key     Sort key 
A       D       C 
C       E       K 
P       G       L 

、あなたは簡単に各パーティションを照会し、ソートされた順序でその中のアイテムを取得することができます。しかし、スキャンすると、ソート順がすべて確定的であれば、アイテムは [A、C、P、D、E、G、C、K、L]の順にソートされます。この時点で、自分で項目を並べ替える必要があります。

"トリック"は、あなた自身の答えで言及したように、すべてのアイテムに等しい値を持つ「ダミー」ハッシュキーを使用することです。この方法で、 "dummy = 1"を照会し、ソートキーに従ってソートされた項目を取得することができます。しかし、これは、すべてのアイテムが同じパーティションに配置されるため、ハッシュ・キーの目的を完全に破って、テーブル・スケールをまったく作成しないためです。しかし、実際に小さなデータセットを持っていても、DynamoDBを使用していることが分かっている場合は、念のため動作します。しかし、このように小さなデータセットとユースケースでは、まずRDSなどの別のツールを使用しているはずです。

関連する問題