假设我有10,000门课程名称。注册各种课程的100,000名用户。我的用户数据模型将包含类似......
的内容course: [
{courseName: 'Programming 101',
cost: 0
},
{courseName: 'How to use stackoverflow',
cost: 100
}
]
但如果我想更改课程名称,则需要我更新已经分配了该课程的数千个用户记录。实现这一目标的最佳方法是什么?有两个表的两个查询?这是nosql环境的弱点,或者这样做的有效方法是什么?
答案 0 :(得分:2)
基本上你有两个选择:
这实际上取决于您尝试针对您选择的系统优化系统。如果你每学期最终只更改十几个课程名称,那么选项2可能不会成为问题。
另外,回答你关于这是nosql系统的弱点的问题,是的,这绝对是一个弱点。这完全不是像Mongo试图解决的nosql系统那样的问题。 Mongo对于某些问题很有用,但对其他问题则非常糟糕。我想说保留一个课程和学生数据库并不是Mongo的强项之一。这是一个典型的关系数据模型,因此在Mongo中管理比在经典RDBMS中管理更麻烦。
答案 1 :(得分:1)
实际上,我会反过来做。用户名称不会经常更改。
最好让用户参加该课程并说“嘿!我的名字错了,你能改变吗?”如果您有不同的班级名称,那么用户将无法找到您的班级。
这就是我要做的事情:
courses: [
{ coursename: 'Programming 101',
cost: 0,
registered: [
{id: 11, name: 'John Doe'},
{id: 12, name: 'Lumber Jack'}
]
}
]
答案 2 :(得分:0)
10,000个课程,100,000个用户,然后可以使用RDBMS。如果你有100,000所大学,每个拥有10万用户(总共100亿用户),你可能需要noSql ....如果是这样的话,playOrm允许你在那种情况下很容易地进行连接,因为你可以按大学划分(两个表)然后你可以简单地加入“universityA分区的课程”和“universityA分区的用户”。嗯,这是一种方法。