2

これが正しいことを確認したいのですが
、これまで読んだことに基づいて
、顧客の電話番号のような番号の主キーがある場合のように、dynamodb で主キーの範囲を照会することはできません。明確にするために、主キーが 3010000000 より大きい、または 3010000000 から 3020000000 の間のアイテムを取得することはできません
。範囲キーについて話しているのではありません。質問は主キー自体に関するものです。

したがって、これが当てはまる場合、日付間のアイテム、ある時点の後に登録されたユーザー、および...、いずれかのテーブルスキャンが必要な場合など、多くのユースケースがあります。

これは正しいです?

編集: OK、頭に浮かぶ解決策の 1 つは、主キーにダミーの hash_key を 1 つだけ使用し、実際のキー (上記の電話番号など) を範囲キーとして挿入することです。これは機能しますか?

4

2 に答える 2

8

hash_keyはい、 DynamoDb では範囲を取得できません。しかし、これはユースケースにこだわっているという意味ではありません。

「日付」の使用例を取り上げて、ロギング アプリケーションを構築しているとしましょう。毎日多くのレコードを取得する可能性があります。

日付を hash_key として使用する場合、完全なタイムスタンプを range_key として配置できます。このようにして、クエリをチャンクに分割し、必要なものを取得できます。

もちろん、最適な結果を得るには、クエリの種類をよく知る必要があります。たとえば、典型的な範囲は? DynamoDb やその他の key:value ストアでは、ほとんどの場合、データのみを念頭に置いてモデル化する SQL とは異なり、クエリを念頭に置いてデータをモデル化します。

もちろん、アイテムがより広い/短い範囲にまたがる場合は、このシステムを適応させてください.

「同じダミーの下にあるすべて」に関してはhash_key、ひどい考えのように聞こえます。ごめん。実際にどのように機能するかは 100% わかりませんが、DynamoDB がいわゆるパーティション間でシャーディングを行うことは知っています。私は信じてい1 hash_key <=> 1 partitionsます。さらに、ドキュメントをよく読むと、プロビジョニングされたスループットがパーティション間で均等に分割されるため、各パーティションには支払う金額の一部しか割り当てられないことがわかります。

于 2012-10-17T19:59:23.120 に答える
0

プライマリ DynamoDB テーブルのキーを変更せずに、一定のパーティション キーとプライマリ テーブルのパーティション キーを並べ替えキーとして GSI を追加できます。

これにより、インデックスの並べ替えキーに対してクエリを実行し、結果のパーティション キーを使用して探しているデータを取得できます。

于 2021-11-17T06:42:17.857 に答える