Techioz Blog

DynamoDB クエリの並べ替えられたデータ

概要

DynamoDB テーブルがあり、フィールド user_id と date があります。ユーザーの最新のレコードを 10 レコードずつバッチで取得するために、同等の SQL クエリ SELECT * FROM Posts WHERE user_id IN (1, 2, 3) ORDER BY date DESC LIMIT 10 を作成したいと考えています。 Ruby aws-sdkを使用しています

解決策

この場合、user_id はパーティション キー、日付はソート キーである必要があります。

ユーザーごとに 1 つずつ、計 3 つのクエリ操作を実行できます。 ScanIndexForward を false に設定し、Limit を 10 に設定します。これにより、各ユーザーの最新の 10 レコードが返されます。

テーブルのキーが異なる場合は、クエリの効率を確保するために必要なキーを使用してグローバル セカンダリ インデックスを作成できます。

PartiQL ExecuteStatement を使用すると、キーが私が提案したものと同じであれば、テーブルに対して共有した正確な SQL ステートメントを実行できるようになります。 1 回のリクエストで最大 50 個のパーティション キーを返すことができます。順序付けはキーごとに行われ、すべてのアイテム間の順序付けは行われません。