現在 DynamoDB を使用していますが、スキャンに問題があります。ExclusiveStartKey を使用して、ページングされた結果を順方向に取得できます。ただし、true と false のどちらを設定ScanIndexForward
しても、スキャン操作の順で結果が得られます。Scan
DynamoDB で結果を逆順に取得するにはどうすればよいですか?
2 に答える
ScanIndexForward
クエリしているテーブルまたはインデックスの範囲キーによってアイテムを降順で取得する正しい方法です。AWS API リファレンスから:
インデックスの昇順 (true) または降順 (false) の走査を指定する値。DynamoDB は、範囲キーによって決定されたリクエストされた順序を反映した結果を返します。データ型が Number の場合、結果は数値順に返されます。String 型の場合、結果は ASCII 文字コード値の順に返されます。Binary 型の場合、DynamoDB はバイナリ値を比較するときに、バイナリ データの各バイトを符号なしとして扱います。
Scan のドキュメントに基づいて、逆にScanする方法はないと結論付けています。ただし、それを行う必要がある場合、DynamoDB を正しく使用していないと言えます。DyanmoDB のようなデータベースのスキーマを設計するときは、予想されるクエリに基づいてスキーマを計画し、ほぼすべてのアプリケーション クエリが適切なインデックスを持つようにする必要があります。スキャンは、システム管理操作または MapReduce または分析にフィードするためのものです。「スキャン操作は常にテーブル全体をスキャンしてから、値をフィルターで除外して目的の結果を提供します。結果セットからデータを削除するという追加の手順が基本的に追加されます。」(クエリとスキャンのパフォーマンス)パフォーマンスの問題やその他の問題につながる可能性があります。
DynamoDB の使用は、従来のリレーショナル データベースでの作業とは根本的に異なり、その使用についての考え方を大きく変える必要があります。ストレージとパフォーマンスの可用性、信頼性と可用性という DynamoDB の利点が、その制限を受け入れる価値があるかどうかを判断する必要があります。