[解決済み] DynamoDBに日付でクエリする
質問
私はリレーショナルデータベース出身で、amazonのDynamoDBと一緒に仕事をしようとしています。
私はハッシュキー"DataID"と範囲"CreatedAt"とその中の項目の束を持つテーブルを持っています。
私は、特定の日付以降に作成されたすべての項目を取得し、リレーショナル データベースで非常に簡単な日付で並べ替えようとしています。
DynamoDBでは、私が見つけることができた最も近いものは、クエリであり、フィルタよりも大きい範囲キーを使用することです。唯一の問題は、クエリを実行するためにハッシュ キーが必要なことで、これは目的を破っています。
私は何を間違えているのでしょうか?私のテーブル スキーマが間違っているのでしょうか、ハッシュ キーが一意であってはいけないのでしょうか。あるいは、クエリを実行する別の方法があるのでしょうか?
どのように解決するのですか?
回答を更新しました。
DynamoDBでは、このようなクエリを支援するためにセカンダリインデックスを指定することができます。 セカンダリインデックスは、ハッシュキーをまたいでテーブル全体に渡るグローバルインデックスと、各ハッシュキーのパーティション内に存在するローカルインデックスがあり、クエリを実行する際にハッシュキーも指定する必要があります。
この質問の使用例では、"CreatedAt"フィールドのグローバルセカンダリインデックスを使用したいと思います。
DynamoDBのセカンダリインデックスの詳細については セカンダリインデックスのドキュメントを参照してください。
オリジナルの回答です。
DynamoDBはレンジキーのみでのインデックス検索を許可していません。 ハッシュキーは、サービスがデータを見つけるためにどのパーティションで検索するかを知るために必要です。
もちろん、日付の値でフィルタリングするためにスキャン操作を実行することはできますが、これはフルテーブルスキャンを必要とするので、理想的ではありません。
複数の主キーにまたがる時間によるレコードのインデックス検索を行う必要がある場合、DynamoDBは理想的なサービスではないかもしれませんし、インデックス検索を行うためのアイテムメタデータを格納するために別のテーブル(DynamoDB内またはリレーショナルストア)を利用する必要があるかもしれません。
関連
-
[解決済み] AWS::CloudFormation::Init どのように動作するのでしょうか?
-
[解決済み] スケジュールされたイベントソースをトリガーとするラムダ関数を設定するには、terraformを使用します。
-
[解決済み] コード NoSuchBucket
-
[解決済み] CLOUDFRONT EC2オリジンエラー CloudFrontはオリジンとの接続を確立しようとしました[重複]。
-
[解決済み] aws-cliでdynamodbのitemを返却する方法
-
[解決済み] DynamoDBから大量のアイテムを削除したいのですが、おすすめの方法はありますか?
-
[解決済み] S3バケットを丸ごとダウンロードする?
-
[解決済み】Amazon EC2とAWS Elastic Beanstalkの違いについて
-
[解決済み】ハッシュとレンジの主キーとは?
-
[解決済み] キースキーマの属性数は、属性定義で定義された属性数と一致する必要があります。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Amazon S3のファイルやフォルダの名前を変更する方法は?
-
[解決済み] S3からモデルをロードしようとすると、チェーン内の任意のプロバイダからAWS認証情報をロードできない - エラー - が発生する
-
[解決済み] amazon cloudfront と amazon s3 transfer acceleration の違いは何ですか?
-
[解決済み] ec2 インスタンスのステータスチェックに失敗しました
-
[解決済み] アクセスポイントを経由してAmazon S3へのロールを認可する
-
[解決済み] タスク実行時にAWS ECSエラーが発生しました。クラスタにコンテナインスタンスが見つかりませんでした。
-
[解決済み] CLOUDFRONT EC2オリジンエラー CloudFrontはオリジンとの接続を確立しようとしました[重複]。
-
[解決済み] ウェブサイトがAmazonネームサーバーを持っているが、別のサーバーでホストされている方法
-
[解決済み] プライマリネームサーバが親に登録されていない
-
[解決済み】Amazon EC2とAWS Elastic Beanstalkの違いについて