如果一切都非规范化,并没有使更新很慢(作者,博客里面的例子)(If everything's

2019-10-18 18:57发布

所以我从SQL后台切换到NoSQL的。 所以我知道我应该是“非规范化”这里..所以基本上我有什么,我必须做一个简单的想法;

用户这些文件持有的认证信息,也许支付方式,用户名和各种细节

帖子这些职位是由用户制作,并在每个岗位,我们要显示一个用户的用户名和电子邮件。 因此,通过“反规范化”的方法,我会把用户名和用户到每个岗位S的电子邮件/他做。

但是,当用户改变他们的用户名或电子邮件不此创建一个问题吗? 难道不是我得去追溯和更新所有的职位?

我是不是正确的设计呢? 还是失去了一些东西?

Answer 1:

在这种情况下,你没有义务非规范化的数据。

您可以存储用户和岗位作为单独的文件(在同一个数据库):

{
  "_id":"alice",
  "email":"alice@wonderland.org"
}

{
  "author":"alice",
  "text":"Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, 'and what is the use of a book,' thought Alice 'without pictures or conversation?'"
}

然后,你需要一个地图功能,说明哪场将被用于连接:

function(o) {
   if (o.text) {
     emit(o._id, {text:o.text, _id:o.author});
   }
}

然后调用该视图与include_docs=true和后作为的ID key

也许这是矫枉过正,只是这个创建索引,但你可能可以重复使用它为其他有用的东西(如“整理”的博客文章和评论)。



文章来源: If everything's denormalized, doesn't that make updates really slow (Author, blog example inside)