まず、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などの別のツールを使用しているはずです。
出典
2017-12-19 08:25:34
JHH
すべてのIndexNameは、テーブルではなくインデックスからアイテムを返します。 – Stu