NoSQL / SQL架构和实现,1个集合/表或更多?

时间:2014-08-22 11:05:22

标签: mysql node.js mongodb relational-database nosql

您好我们目前正在建立一个迷你公司管理和node.js中的社交网站 首先,我想提一下我是mongodb的新手,其次我想简要介绍一些数据库架构实体,以便你可以建议我或提出我应该在mongodb数据库。

该网站的特色:

  1. 公司
  2. 用户组
  3. 用户角色
  4. 用户个人资料上的帖子
  5. 用户组的帖子
  6. 项目上的帖子
  7. 对帖子的评论
  8. 用户,群组,公司的日历活动
  9. 客户端
  10. 供应商
  11. 项目任务
  12. 项目状态
  13. 任务状态
  14. 任务优先级
  15. 标记
  16. 实时聊天&即时通讯&归档
  17. 这些是一些网站功能。目前我们用mysql和orm2(对象关系映射)实现了这个,但是我们认为mongodb会更方便。此外,上述大多数实体都合并在一张桌子中,使其变得庞大,让我相信这是一个不好的做法。(想象一下,存储100 + +用户的即时消息的表格以及帖子和评论及事件&任务...)

    目前我正在考虑使用4-6个集合的mongodb数据库,使核心实体保持独立,例如在帖子集合中的相应帖子中合并注释等实体。

    问题:在一个单独的表下合并实体,这是一个不好的做法(在我们的案例中是一个MySQL数据库innodb),这使得它在一段时间内变得非常大,这是否也适用于mongodb以及在多大程度上?我还读过文章,他们使用关系数据库作为用户角色和组,使用nosql数据库来存储大量数据。

    PS:我很欣赏任何数据库收集/架构提案。

1 个答案:

答案 0 :(得分:0)

合并实体称为非规范化和has pros and cons。通常建议非规范化以解决实际性能问题。

Use a relational database to store relational data。使用扁平结构存储平面数据。完全停止。即使卡车的马力比赛车还要多,也不要用卡车来比赛。