予想される大規模なデータセット用に DynamoDB を検討しています。私は SQL に強いバックグラウンドを持っているので、No-SQL の考え方は私にとって新しいものです。
問題と設計がありますが、行き止まりのように見えます。
ドキュメントには、パフォーマンスを向上させるためにハッシュキーが広く配布されていることを確認するように記載されていますが、それは理にかなっています。
ユーザーのさまざまなデータポイント/アクションを記録します。ハッシュキーがユーザーIDであるべきであり、私の範囲キーが実行されるアクションであることは私には理にかなっています。
ここで、ユーザー #1 が実行するすべてのアクションが必要な場合は、簡単にクエリを実行できます。
しかし、アクション X を実行したすべての USERS が必要な場合は、テーブル スキャンなしでは実行できません。クエリのドキュメントから:
クエリ操作は、テーブルの主キーを使用してテーブルからアイテムに直接アクセスするか、インデックス キーを使用してインデックスからアイテムに直接アクセスします。特定のハッシュ キー値を指定する必要があります。
そのため、遅く、多くの容量ユニットを消費するtable scanを実行しない限り、特定のユーザーからデータを取得することに制限されているように見えます。
私の質問は、最終的にはデザインの問題だと思います。No-SQLに関しては、何かが足りないのではないでしょうか? 私のハッシュキーは別のものであるべきですか?それとも、私の要件が No-SQL (より具体的には DynamoDB) に適合しないということですか?
ハッシュキーは DynamoDB との一種のグループ化であるかのようです。予定しているアクションに合わせてハッシュ キーを変更することを検討しましたが、キーを広く配布する予定はありません...