Database 如果一切顺利';s非规范化,不';这使得更新速度非常慢(作者,博客内示例)
所以我从SQL后台切换到NoSQL。所以我知道我应该在这里“去规范化”。。所以基本上我对我要做的事情有一个简单的想法 用户 这些文档包含身份验证信息,可能包括付款方式、用户名和各种详细信息 帖子 这些帖子是由用户制作的,在每个帖子中,我们必须显示用户的用户名和电子邮件。所以,通过“非规范化”的方法,我会把用户的用户名和电子邮件放进他/她写的每一篇文章中 但是当用户更改他们的用户名或电子邮件时,这不是会产生问题吗?难道我不需要追溯更新所有的帖子吗Database 如果一切顺利';s非规范化,不';这使得更新速度非常慢(作者,博客内示例),database,database-design,mapreduce,nosql,couchdb,Database,Database Design,Mapreduce,Nosql,Couchdb,所以我从SQL后台切换到NoSQL。所以我知道我应该在这里“去规范化”。。所以基本上我对我要做的事情有一个简单的想法 用户 这些文档包含身份验证信息,可能包括付款方式、用户名和各种详细信息 帖子 这些帖子是由用户制作的,在每个帖子中,我们必须显示用户的用户名和电子邮件。所以,通过“非规范化”的方法,我会把用户的用户名和电子邮件放进他/她写的每一篇文章中 但是当用户更改他们的用户名或电子邮件时,这不是会产生问题吗?难道我不需要追溯更新所有的帖子吗 我的设计正确吗?或者遗漏了什么?在这种情况下,您不
我的设计正确吗?或者遗漏了什么?在这种情况下,您不必对数据进行非规范化 您可以将用户和帖子存储为单独的文档(在同一数据库中): 然后,您需要一个map函数,告诉您哪个字段将用于连接:
function(o) {
if (o.text) {
emit(o._id, {text:o.text, _id:o.author});
}
}
然后使用include_docs=true
调用此视图,并将帖子的ID作为键
也许仅仅为此创建一个索引有些过分,但您可能可以将其重新用于其他有用的东西(如“整理”博客文章和评论)
function(o) {
if (o.text) {
emit(o._id, {text:o.text, _id:o.author});
}
}