3

次のプロジェクトでDynamoDBを使用できるかどうかを評価しています。私たちが構築しているものは、ブログプラットフォームと非常によく似ています。ここに、簡単な表を示します。

Blog Post
  ID - primary hash key
  Title
  DateCreated - primary range key
  Votes

リスト(ブログ投稿のリスト、ページング)、最後に取得したインデックスの使用、投稿の詳細の取得、行の取得、範囲キーであるDateCreateを使用して並べ替える方法を十分に理解しました。

セカンダリインデックスでどのように並べ替えるのか悩んでいます。たとえば、Votesという列がある場合、ほとんどの投票をどのように行いますか?私の解釈では、私がすでに使用している範囲インデックスを使用してのみソートできます。

4

2 に答える 2

5

アップデート

AWSは、Amazon DynamoDBで待望のグローバルセカンダリインデックスの一般提供を発表しました。これは、以下でさらに説明するローカルセカンダリインデックスの制限に対処しています。

アイテムの主キー以外の属性を使用して、インデックスを作成し、ルックアップを実行できるようになりました。[...]

テーブルを作成するときに、最大5つのグローバルセカンダリインデックスを作成できるようになりました。各インデックスは、ハッシュキーまたはハッシュキーと範囲キーのいずれかを参照します。最大5つのローカルセカンダリインデックスを作成することもでき、テーブルの属性の一部またはすべてをテーブルの各インデックスに投影することを選択できます。

これら2つのモデルの選択の詳細については、ブログ投稿を参照してください。


修正

vartecが正しく指摘しているように、私はローカルセカンダリインデックスが発表された日にこの情報を追加することを先取りしてきましたが、実際には当てはまらない問題を適切に分析することはありませんでした-皮肉なことに私はそれだけを強調しました別の質問についての後でコメントする自分自身:

[...]ただし、ローカルは重要な制限であることに注意してください。ローカルセカンダリインデックスは、特定のハッシュキーの代替範囲キーを維持するデータ構造です。これは多くの現実のシナリオをカバーしていますが、手元の質問のような任意の非主キーフィールドクエリ。

このエラーを発見してくれたvartecに感謝し、ここで誤解を招くことをお詫びします。


最初の(誤った)答え

Amazon DynamoDBは、ユースケースに対応するためのローカルセカンダリインデックスのサポートを 発表しました。

[...]最新の機能をローカルセカンダリインデックス(LSI)と呼びます。DynamoDBでは、テーブルの主キーに基づいて低レイテンシのクエリを実行できますが、大規模な場合でも、LSIにより、テーブル内の他の属性(または列)に対して高速クエリを実行できるようになります。これにより、レスポンシブでスケーラブルなアプリケーションの低レイテンシの要求を満たしながら、より豊富なクエリを実行できるようになります。

詳細な説明については、紹介ブログ投稿「AmazonDynamoDBのローカルセカンダリインデックス」も参照してください。

AWSの場合と同様に、新しい機能は最初は制約された機能セットでリリースされますが、これは時間の経過とともに拡張されます。

現在、ローカルセカンダリインデックスは、DynamoDBテーブルを作成するときに定義する必要があります。将来的には、既存のテーブルのLSIを追加または削除する機能を提供する予定です。既存のDynamoDBテーブルをローカルセカンダリインデックスにすぐに装備したい場合は、Elastic Map Reduceを使用して既存のテーブルからデータをエクスポートし、LSIを使用して新しいテーブルにインポートできます。[強調鉱山]

于 2013-04-18T14:29:02.130 に答える
2

これは不可能のようです。範囲ハッシュキーでのみ並べ替えることができます

テーブルをメモリにロードして、メモリに並べ替えます。

于 2012-12-18T13:02:04.770 に答える