Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如果一切顺利';s非规范化,不';这使得更新速度非常慢(作者,博客内示例)_Database_Database Design_Mapreduce_Nosql_Couchdb - Fatal编程技术网

Database 如果一切顺利';s非规范化,不';这使得更新速度非常慢(作者,博客内示例)

Database 如果一切顺利';s非规范化,不';这使得更新速度非常慢(作者,博客内示例),database,database-design,mapreduce,nosql,couchdb,Database,Database Design,Mapreduce,Nosql,Couchdb,所以我从SQL后台切换到NoSQL。所以我知道我应该在这里“去规范化”。。所以基本上我对我要做的事情有一个简单的想法 用户 这些文档包含身份验证信息,可能包括付款方式、用户名和各种详细信息 帖子 这些帖子是由用户制作的,在每个帖子中,我们必须显示用户的用户名和电子邮件。所以,通过“非规范化”的方法,我会把用户的用户名和电子邮件放进他/她写的每一篇文章中 但是当用户更改他们的用户名或电子邮件时,这不是会产生问题吗?难道我不需要追溯更新所有的帖子吗 我的设计正确吗?或者遗漏了什么?在这种情况下,您不

所以我从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});
   }
}