- 二つの主要なオブジェクト:コレクションとリソース。
- 各ユーザーには複数のコレクションがあります。私はユーザー情報を保存しているわけではありません。すべてのコレクションには「ユーザーID」フィールドがあります。
- 各コレクションには複数のリソースが含まれています。
- 与えられたコレクションは1人のユーザーにのみ属します。
- 任意のリソースが複数のコレクションに関連付けられている可能性があります。
当面はMySQLを使用することを約束しますが、別のデータベースに移行する可能性があります。私の主な関心事は、以下の前提条件によるスケーラビリティです。
- ユーザー数は約200人になります。
- 平均して、各ユーザーには5つのコレクションがあります。
- 約30,000の新しい明確なリソースは、毎日の「消費」されています。リソースが消費されたときに、アプリケーションを関連付け、そのリソースに関連するすべてのコレクションにそのリソース。典型的には、リソースはコレクションの約半分に関連していると仮定すると、1日に30,000 x(1,000/2)= 15,000,000の挿入が行われます。
- コレクションオブジェクトとリソースオブジェクトは、どちらも約半ダースのフィールドで構成され、その一部は100文字の長さに達することがあります。
- すべてのユーザーは定期的にポーリングを設定してコレクションと関連リソースを定期的に取得します。これは1分に1回発生するものとします。
私はMySQLを使用していますのでご注意ください。期待されるデータ量を考えると、データモデルはどのように正規化されるべきですか?このデータをフラットなテーブルに格納することは理にかなっていますか?どのようなシャーディングアプローチが適切でしょうか? MySQLのNDBクラスタリングソリューションは、このユースケースに適していますか?
"15,000,000個の挿入"は劇的な変更です。あなたは本当に "挿入"を意味しますか?これは大部分がイベントを記録する「ほとんど挿入」アプリケーションですか? –