5

私は、エンティティフレームワーク4.0からMongoDbへの移植を予定しています。プロジェクトにはソーシャルネットワーキング機能があり、複雑なリレーショナルデータベースを維持しているので、影響を最小限に抑えることができるベストプラクティスは何ですか?結果として、 リレーショナルデータベースを使用するとパフォーマンスが問題になるはずです。Entity FrameworkからMongoDBへのポート

プロジェクトでドメインレイヤー(POCOを使用)、リポジトリパターン、DTOマッピングを使用しました。また、 決定のメリットとデメリットは何ですか?同時に、ドメイン層の実装にどのような影響がありますか?

答えて

2

「影響を最小限にする」を使用する場合は、MongoDBにSQLで作成したデータベースを作成することをお勧めします。データベースに結合がないので、クエリを完了するために複数の読み込みを行う必要があります。 MongoDBは非常に速いのでそれほど悪くないが、明らかに他の問題(並行性など)がある。

のように、NOSQLの方法では、の影響を最小限に抑えることができない可能性がある場合は、保存方法を大幅に変更する必要がありますコンテンツへのアクセス方法、更新方法などが含まれます。

ストレージ:データベースでは、非正規化され、「モデル」よりも「ViewModels」に近いドキュメントを作成する可能性があります。たとえば、子レコードの数を親レコードに格納して、子レコードをロードしたりカウントしたりすることなく表示することができます。

アクセス:データベースへのクエリでは、従来のクエリとはまったく異なる考え方でMap-Reduceを使用することになります。

アップデート:すべての可能性で更新へのアプローチは、$incのような多くのきめ細かいMongoDBのアップデート機能を利用するために異なるものになります。一部の大型ビュー・モデルをポスト・バックしてモデルに適用し、データベースを更新する代わりに、単一の値を更新するAjaxコールバックをもっと細かく設定できます。 CQRSを見て、アップデート対モデルの考え方について考えてください。

+0

大きな説明!!!ありがとうございました – marvelTracker

関連する問題