問題タブ [amazon-dynamodb-index]
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 設計 PartitionKey、RangeKey、および GSI
DynamoDB で新しいテーブルを設計しています。すでにいくつかのドキュメントを読みましたが、今後問題が発生しないようにするためにどの設計スキーマに従うべきかを理解できません。
現在のアプローチ
表 - イベント
表 - ユーザー
イベント テーブルには、何百万ものエントリが含まれます。ユーザーは現時点で約 20 エントリになる予定です。
次のクエリを実行する必要があります。
そこで、次の設定でイベント テーブルに GSI (グローバル セカンダリ インデックス) を作成することを考えました。
しかし、私の質問は次のとおりです。最初の設計は理にかなっていますか? どういうわけか、次の設定でイベントテーブルを設計できると感じています:
しかし、このアプローチに従うと、ホット パーティションの落とし穴に陥ると思います。
いくつかのアドバイスや推奨事項をいただければ幸いです。
ありがとう。
amazon-dynamodb - データの大規模なサブセットを取得するための DynamoDB のベスト プラクティス
50,000 項目を含む 1 つのテーブルがあり、各レコードの PK が一意の番号であるとします。これらのアイテムの半分は、プロパティ「published」が「1」に設定され、残りは「0」に設定されています。
ほとんどの場合、ハッシュ キーを使用して個々のアイテムを取得しますが、公開済み = 1 または 0 (理想的にはページ分割されたバッチ) のすべてのアイテムを取得できるようにしたい場合もあります。
「published」属性に PK を指定した GSI を作成できますが、値ごとに 25,000 レコードが存在することになります。PK はこれよりも一意である必要があるため、これは悪いことだと理解しています (これを理解した場合はお知らせください)。間違って)。
公開済み/非公開用に別々のテーブルを持つこともできますが、個々のアイテムを取得するという私の一般的なユースケースでは、アイテムが公開されているかどうかを事前に知る必要はありません (また、Amazonは、適切に設計されたアプリには通常 1 つしかないと言います)テーブル)。
アドバイスや提案をいただければ幸いです。