1. ホーム
  2. hash

[解決済み】ハッシュとレンジの主キーとは?

2022-04-01 13:32:36

質問

のドキュメントで、Range / 主キーとは何か、理解できません。 DynamoDBでテーブルとデータを操作する

どのように動作するのですか?

hash属性に順不同のハッシュインデックス、range属性に並べ替えのレンジインデックス"とはどういう意味でしょうか。

どのように解決するのですか?

をクリックします。 ハッシュとレンジの主キー DynamoDBの1つの行は、2つの主キーから構成されるユニークな主キーを持つことを意味します。 ハッシュ 範囲 キーになります。例えば、ハッシュキーが X で、範囲キーは Y であるため、主キーは実質的に XY . また、同じハッシュキーに対して複数のレンジキーを持つこともできますが、その組み合わせは次のように一意でなければなりません。 XZ XA . それぞれのテーブルのタイプについて、その例を使って説明しましょう。

ハッシュ主キー - 主キーは1つの属性、ハッシュでできています。 属性があります。たとえば、ProductCatalog テーブルは ProductID を持つことができます。 の主キーです。DynamoDBはこの主キーに対して、順不同のハッシュインデックスを構築する。 主キー属性。

これは、すべての行がこの値をキーにしていることを意味します。 DynamoDBのすべての行は、この属性のための必須の、ユニークな値を持つことになります。 . Unordered hash indexとは、その名の通り、データを順番に並べず、データがどのように保存されるかを一切保証しない、という意味です。 順不同のインデックスに対してクエリを実行することはできません。 例えば ProductIDがXより大きいすべての行を取得する。 . ハッシュキーに基づいて項目を書き、フェッチします。例えば そのテーブルから、ProductID Xを持つ行を取得します。 . あなたは、順序付けされていないインデックスに対してクエリを作成しているので、それに対する取得は基本的にキー値のルックアップであり、非常に高速で、スループットはほとんど使用されません。


<ブロッククオート

ハッシュとレンジの主キー - 主キーは2つのキーで構成されています。 属性があります。最初の属性はハッシュ属性で、2番目の属性は 属性は範囲属性です。例えば、フォーラムThreadテーブル は、主キーとしてForumNameとSubjectを持つことができ、ForumNameは はハッシュ属性、Subject は範囲属性です。DynamoDBは は、ハッシュ属性に順不同のハッシュインデックスを、ソートされた範囲インデック を範囲属性で指定します。

これは、すべての行の主キーが ハッシュキーとレンジキーの組み合わせ . ハッシュキーとレンジキーの両方があれば、1つの行を直接取得することができます。 ソート済み範囲インデックス . 例えば、以下のようになります。 ハッシュキーXを持つテーブルから、Yより大きい範囲キーを持つすべての行を取得します。 などのクエリもあります。これらのクエリは、インデックスが作成されていないフィールドに対するスキャンやクエリに比べて、パフォーマンスが高く、使用容量も少なくなっています。より ドキュメント :

クエリーの結果は常に範囲キーでソートされます。もし、データ型が レンジキーがNumberの場合、結果は数値順で返されます。 そうでない場合は、ASCII文字コード順に返されます。 の値です。デフォルトでは、ソート順は昇順である。逆順にするには ScanIndexForwardパラメータをfalseに設定します。

これを打ち出しながら、おそらく見落としているものがあり、表面を掻いただけです。そこには たくさん より DynamoDBのテーブルを使用する際に考慮すべき点 (スループット、一貫性、容量、他のインデックス、キー分散など)。を参考にしてみてください。 サンプルテーブルとデータ のページに例があります。