我正在接近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")
},
...
]
}
到目前为止一切顺利。
如果author_of_the_post
没有改变他的名字(不考虑个人资料图片和说明),一切正常。
所有comment_authors
都是一样的。
因此,如果我想考虑这种情况,我必须使用关系:
"authorID": <author_of_the_post_id>,
对于帖子的作者和
"authorID": <comment_author_id>,
评论作者。
但MongoDB在查询时不允许连接。因此,每个authorID
都会有不同的查询。
如果我的博客文章中有100条评论会怎样?
1 query for the post
1 query to retrieve authors informations
100 queries to retrieve comments' authors informations
**total of 102 queries!!!**
我是对的吗?
在这里使用noSQL的优势在哪里? 在我的理解中,102使用连接查询VS 1更大的查询。
或者我错过了什么,有不同的方法来模拟这种情况?
感谢您的贡献!
答案 0 :(得分:3)
http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/
听起来你正在做的事情并不是NoSQL的一个很好的用例。使用关系数据库进行基本数据存储以支持应用程序,使用NoSQL进行缓存等。
答案 1 :(得分:2)
希望这有帮助。