Mongodb真实基本用例

Mongodb真实基本用例,mongodb,nosql,Mongodb,Nosql,我正在接近noSQL世界。 我在网上学习了一点(这不是最好的学习方式!),并且阅读了Mongodb文档。 在网络上,我找不到一个真实的例子(只有大型架构上的奇特飞行没有很好的解释,或者太基本而不能成为真实世界的例子) 因此,我对noSQL和Mongodb的理解仍然存在一些巨大的漏洞 我试图总结其中一个,实际上是最糟糕的一个,如下所示: 让我们设想一篇文章的数据结构是一个简单的博客结构: { "_id": ObjectId(), "title": "Title here", "body": "te

我正在接近noSQL世界。 我在网上学习了一点(这不是最好的学习方式!),并且阅读了Mongodb文档。 在网络上,我找不到一个真实的例子(只有大型架构上的奇特飞行没有很好的解释,或者太基本而不能成为真实世界的例子)

因此,我对noSQL和Mongodb的理解仍然存在一些巨大的漏洞

我试图总结其中一个,实际上是最糟糕的一个,如下所示:

让我们设想一篇文章的数据结构是一个简单的博客结构:

{
"_id": ObjectId(),
"title": "Title here",
"body": "text of the post here",
"date": ISODate("2010-09-24"),
"author": "author_of_the_post_name",
"comments": [
              {
              "author": "comment_author_name",
              "text": "comment text",
              "date": ISODate("date")
              },
              {
              "author": "comment_author_name2",
              "text": "comment text",
              "date": ISODate("date")
              },
              ...
            ]
}
到目前为止还不错

如果帖子的作者不改变自己的名字(不考虑个人资料图片和描述),那么一切正常。 所有
评论作者都是如此

因此,如果我想考虑这种情况,我必须使用关系:

"authorID": <author_of_the_post_id>,
我说得对吗

在这里使用noSQL的优势在哪里? 在我的理解中,102个查询与1个使用连接的更大查询相比

还是我遗漏了什么,有一种不同的方式来模拟这种情况

谢谢你的贡献

  • NoSQL数据库用于存储非敏感数据,例如帖子、评论
  • 您可以通过一个查询检索所有数据。示例:不要在意作者姓名、个人资料、图片、url等过时的字段,因为这只是一篇文章,将来这篇文章将不会作为新文章出现。但如果要更新字段,有两个选项:
    • 第一种选择是使用某种工人服务。如果某个用户更改了他的用户名或个人资料图片,您将向您的服务发出某种信号,以遍历所有帖子和评论,并更新其新用户名的所有字段
    • 第二个选项使用authord而不是author name,您将进行N+2次查询以查询注释\作者\配置文件,而不是2次查询。但是使用分页,而不是查询100条注释,取10并显示“加载更多”按钮/链接,因此您将进行12次查询
  • 希望这有帮助。

    你看到这个了吗


    听起来您所做的并不是NoSQL的好用例。使用关系数据库进行基础数据存储以支持应用程序,使用NoSQL进行缓存等。

    您是否阅读了此处讨论的选项:?有很多非常好的信息,包括各种建模模式的优缺点。您也可以经常使用
    $in
    操作符一次获取多个文档。是的,我见过,但我不记得$in操作符。你能再解释一下吗?谢谢,我明白了,使用
    $in
    操作符,我总共会有3个查询。当你不再考虑关系,而忘记了规范化时,你试图找到的NoSQL的优势变得更加明显。发生的频率更高:作者更改姓名或有人查看评论线程?那么你应该针对哪种情况进行优化呢?当然,我的只是一个例子,因为在整个网络上,似乎每个人都在对敏感数据使用noSQL。您的第一个解决方案基本上意味着释放实时数据(背景信号无论如何都会使用硬件资源,并且可能会降低系统的速度)。第二种选择是一种良好的做法,但并不总是适用。在这两种情况下,SQL都会做得更好。
    "authorID": <comment_author_id>,
    
    1 query for the post
    1 query to retrieve authors informations
    100 queries to retrieve comments' authors informations
    
    **total of 102 queries!!!**