アップデート
AWSは、Amazon DynamoDBで待望のグローバルセカンダリインデックスの一般提供を発表しました。これは、以下でさらに説明するローカルセカンダリインデックスの制限に対処しています。
アイテムの主キー以外の属性を使用して、インデックスを作成し、ルックアップを実行できるようになりました。[...]
テーブルを作成するときに、最大5つのグローバルセカンダリインデックスを作成できるようになりました。各インデックスは、ハッシュキーまたはハッシュキーと範囲キーのいずれかを参照します。最大5つのローカルセカンダリインデックスを作成することもでき、テーブルの属性の一部またはすべてをテーブルの各インデックスに投影することを選択できます。
これら2つのモデルの選択の詳細については、ブログ投稿を参照してください。
修正
vartecが正しく指摘しているように、私はローカルセカンダリインデックスが発表された日にこの情報を追加することを先取りしてきましたが、実際には当てはまらない問題を適切に分析することはありませんでした-皮肉なことに私はそれだけを強調しました別の質問についての後でコメントする自分自身:
[...]ただし、ローカルは重要な制限であることに注意してください。ローカルセカンダリインデックスは、特定のハッシュキーの代替範囲キーを維持するデータ構造です。これは多くの現実のシナリオをカバーしていますが、手元の質問のような任意の非主キーフィールドクエリ。
このエラーを発見してくれたvartecに感謝し、ここで誤解を招くことをお詫びします。
最初の(誤った)答え
Amazon DynamoDBは、ユースケースに対応するためのローカルセカンダリインデックスのサポートを 発表しました。
[...]最新の機能をローカルセカンダリインデックス(LSI)と呼びます。DynamoDBでは、テーブルの主キーに基づいて低レイテンシのクエリを実行できますが、大規模な場合でも、LSIにより、テーブル内の他の属性(または列)に対して高速クエリを実行できるようになります。これにより、レスポンシブでスケーラブルなアプリケーションの低レイテンシの要求を満たしながら、より豊富なクエリを実行できるようになります。
詳細な説明については、紹介ブログ投稿「AmazonDynamoDBのローカルセカンダリインデックス」も参照してください。
AWSの場合と同様に、新しい機能は最初は制約された機能セットでリリースされますが、これは時間の経過とともに拡張されます。
現在、ローカルセカンダリインデックスは、DynamoDBテーブルを作成するときに定義する必要があります。将来的には、既存のテーブルのLSIを追加または削除する機能を提供する予定です。既存のDynamoDBテーブルをローカルセカンダリインデックスにすぐに装備したい場合は、Elastic Map Reduceを使用して既存のテーブルからデータをエクスポートし、LSIを使用して新しいテーブルにインポートできます。[強調鉱山]