0

現在、mongodb を使用して mvc3 アプリケーションを開発しています。アーキテクチャをどのように構築するかについては、かなり確信が持てません。たとえば、私のアプリには、登録ユーザーのユーザー プロファイルを管理するために使用されるページがあります (名前、電子メール、enum-combobox 内で公開されるいくつかの属性など)。したがって、管理するすべてのプロパティを含む ManageProfileModel.cs があります。mongodbでデータを使用する適切な方法は何ですか? ManageProfileModel データを mongodb 内に保存しますか?それとも、User.cs、Invoice.cs などのドメイン クラスを含むレイヤーを追加して、これらのオブジェクトを mongodb 内に保存する必要がありますか (これらのオブジェクトは、作成されたモデルで使用されています)。

ユーザー プロファイルを管理するためのモデルは、必ずしもユーザー (ドメイン) オブジェクトに似ているとは限らないため、質問しています。私の最初のアプローチは、(ビュー) モデルを mongodb 内に直接保存することです。後で(一貫性のある)データを簡単に取得できるかどうかはわかりません。

ありがとう!

4

1 に答える 1

0

ほとんどのデータについては、モデルをそのままMongoに直接保存します。これはすでにご存知だと思いますが、Mongoは非正規化に重点を置いているため、データを正規化する必要がある従来のリレーショナルデータベースとは異なります。

したがって、プロファイルの場合、ユーザー、請求書のセット、アドレスのセットなどがある可能性があります。データモデルを決定するときは、次のことをお勧めします。

  1. UIについて考えてみましょう。ユーザー+プロフィール+請求書が必要な場合は、先に進んでそのようなドキュメントを作成してください。あなたの人生をずっと楽にしてくれます。
  2. 繰り返し情報を保存することを恐れないでください。
  3. ドキュメントを埋め込む(ユーザーにアドレスを追加する)か、ドキュメントにリンクする(請求書を参照する配列に参照のリストを配置する)かどうか、常に疑問に思うでしょう。私が良いと思うルール:データが絶えず変化している場合は、リンク/参照を作成します。不変またはゆっくりと変化する場合は、埋め込みます。
  4. ドキュメントを分割することを検討して、時間の経過とともにドキュメントが大幅に大きくなる場合。ドキュメントが大きくなりすぎると、Mongoはドキュメントをメモリ内に移動する必要があります。
于 2013-03-03T22:25:01.077 に答える