【问题标题】:MongoDB Dynamic SchemaMongoDB 动态模式
【发布时间】:2015-02-23 10:22:11
【问题描述】:

我是 MongoDB 新手,想获得一些关于如何设计我的数据库架构的建议。

我目前正在尝试使用适用于 Node.js 的 Sails.js 框架开发一个私有事件管理器
该应用程序的每个用户都可以为每个用户创建活动并管理来宾。

设计#1:(类似于我对 MYSQL 所做的)
2 个集合:用户和访客。
访客使用外键 guest_id 链接到用户

设计#2:
1 个使用嵌入文档的用户集合

{
    "id": "integer",
    "name": "string",
    "guests": [
        {
            "id": "integer",
            "firstname": "string",
            "lastname": "string",
            "attended": "boolean",
            "email": "string",
            "phone": "string",
            "addresse": {
                "street": "string",
                "zipcode": "integer",
                "city": "string",
                "country": "string",
            },
            "notes": "text"
        }
    ],

设计#3:
2 个集合:用户和访客。
在 guest 中,每个文档都有一个 ID 和一组人员

设计#4:
使用动态集合
每个用户的来宾将存储在一个名为 guest_$userid 的集合中
问题是我不知道是否可以使用 Sails.js

提前感谢您的帮助。
我真的很想学习设计 NoSQL 数据库时的良好实践,并确保了解并利用它的所有潜力。

【问题讨论】:

  • 要开始设计和评估模式设计,请写下您将要处理的数据(仅用简单的英语)。你将如何阅读它?你将如何插入新数据?你会更新什么?最常见的操作是什么?什么需要快?你能忍受什么慢?有了这些信息,我们可以评估不同的选项并选择最佳候选人。

标签: node.js mongodb database-design sails.js


【解决方案1】:

你可以用帆/水线做 1 - 3

你可以做 4,但不能使用水线,你必须使用不同的 ORM

就您的问题的其余部分而言,它受许多变量的影响,并且几乎基于意见。

【讨论】:

  • 你说得对,这个问题是基于意见的。这就是为什么最好关闭这类问题。没有办法用一个正确的答案客观地回答它。
  • 我无法关闭别人的问题,同时我提供了我能提供的最好的非意见答案,
  • 它主要不是基于意见的。数据模型适用于用例,特定数据模型对特定用例的适用性是一个合法的话题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 2016-06-21
相关资源
最近更新 更多