如果一切都是非规范化的,那不会让更新变得很慢吗(作者,里面的博客示例)



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

用户这些文件包含身份验证信息,可能是付款方式,用户名和各种详细信息

职位这些帖子是由用户发布的,在每个帖子中,我们必须显示用户的用户名和电子邮件。因此,通过"非规范化"的方法,我会将用户的用户名和电子邮件放入他/她发布的每个帖子中。

但是,当用户更改用户名或电子邮件时,这不会产生问题吗?我不必追溯去更新所有帖子吗?

我设计正确吗?还是错过了什么?

在这种情况下,您没有义务对数据进行非规范化。

您可以将用户和帖子存储为单独的文档(在同一数据库中):

{
  "_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

也许为此创建索引有点矫枉过正,但您可能会将其重用于其他有用的事情(例如"整理"博客文章和评论)。

相关内容

  • 没有找到相关文章

最新更新