0

我目前正在使用 mongodb 开发一个 mvc3 应用程序。我很不确定我将如何构建架构。例如,我的应用程序有一个页面用于管理注册用户的用户配置文件(如姓名、电子邮件、枚举组合框内公开的一些属性)。因此,我有一个包含所有要管理的属性的 ManageProfileModel.cs。将数据与 mongodb 一起使用的正确方法是什么?我应该将 ManageProfileModel 数据存储在 mongodb 中,还是必须添加一个包含域类(如 User.cs、Invoice.cs 等)的附加层,并将这些对象存储在 mongodb 中(这些对象正在创建的模型中使用)?

我问是因为管理用户配置文件的模型不一定类似于用户(域)对象。我的第一种方法是将我的(视图)模型直接存储在 mongodb 中。我不确定以后获取我的(一致的)数据是否那么容易。

谢谢!

4

1 回答 1

0

对于您的大部分数据,我会将模型直接存储在 Mongo 中。我相信您已经知道这一点,但 Mongo 专注于非规范化,因此它不同于希望您对数据进行规范化的传统关系数据库。

因此,对于配置文件,您可能有一个用户、一组发票、一组地址等。当您决定数据模型时,我会建议以下内容:

  1. 考虑你的用户界面。如果您需要用户 + 个人资料 + 发票,请继续制作这样的文件。让你的生活轻松很多。
  2. 不要害怕存储重复的信息。
  3. 您会经常想知道是否应该嵌入文档(向用户添加地址)或链接到文档(将引用列表放入引用发票的数组中)。我听说的一条我认为很好的规则:如果数据不断变化,请建立链接/参考。如果它是不可变的或缓慢变化的,则嵌入它。
  4. 如果您的文档会随着时间的推移而增长很多,请考虑将其拆分。如果文档变得太大,Mongo 必须将您的文档移动到内存中。
于 2013-03-03T22:25:01.077 回答