問題タブ [dynamo-local]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - さまざまなオブジェクトを格納するための DynamoDB データベース モデル
私は教訓的な目的のためだけに DynamoDB を学ぼうとしています。そのため、NoSQL データベースを学び、経験を積むために、車両 (車、自転車、四輪バイクなど) を販売する小さなプロジェクトを作成することを提案しています。適切なモデルの作成に関する多くのドキュメントを読みましたが、データを保存する最善の方法がまだわかりません。
次のようなフィルターですべての車両を取得したい:
- 3か月以内のすべての車を入手してください。
- ブランド、年式、モデル別に 3 か月以内のすべての車を取得します。
- バイク、クワッド バイクなどの前の同じクエリも同様です。
公式ドキュメントと例のある他のページを読んだ後 ( https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-general-nosql-design.html#bp-general-nosql-design-approach、https ://medium.com/swlh/data-modeling-in-aws-dynamodb-dcec6798e955、別のテーブル vs マップ リスト - DynamoDB )、最高の設計ではすべてを格納するために 1 つのテーブルのみを使用すると彼らは言ったので、最終的には以下のようなモデル:
データを検索するための良い方法であると指定されているため、複合ソートキーを使用しました ( https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-sort-keys.html )。
しかし、私のモデルを定義した後、以前のモデルには「ホットスポッティング」または「ホイキー」と呼ばれる問題があることがわかりました。( https://medium.com/expedia-group-tech/dynamodb-data-modeling-c4b02729ac08、https://dzone.com/articles/partitioning-behavior-of-dynamodb )公式ドキュメントではパーティションの使用を推奨しているため問題を回避するために、カーディナリティの高いキーを使用してください。
そのため、この時点で、優れたスケーラブルなモデルを定義する方法について少し行き詰まっています。上記のクエリを取得するためのモデルを実現する方法について、いくつかの助けや例を教えていただけますか?
注: 車両ごとに特定のテーブルを作成することも検討しましたが、情報を見つけるために完全なテーブル スキャンを実行する必要があるため、より多くの問題が発生します。