问题一:是否collection越少越好,尽量把关系数据库中分表表示的关系嵌套进文档里?
问题二:如果这样的话,一句SQL能搞定的复杂查询,mongodb也许要查询多次。mongodb的查询速度是否还比sql数据库快?
问题三:那mongodb的优势体现在哪?超大规模数据的mapreduce?方便拓展?
我来举个栗子吧:
假设mysql中是这样的(意思意思):
那么MongoDB中就可能是这个样子:
•只有一个authors collection
问题来了,如果我要单独查出所有作者的文章,并按浏览量来排序,要如何做?
•于是有了第二种设计方法,这也是nosql = not only sql的体现。有authors和articles两个collection
现在的问题是,如果我要把文章和作者的名字一起返回要怎么办?
在这里栗子中,总结一下我们需要的东西:
•所有作者旗下的文章可以全部聚合返回,并按某种方式排序
•文章可以和与之匹配的作者名一起返回
•作者可以编辑自己的资料
•文章和作者都可以单独插入
可能比较啰嗦,大家谅解。
要是有人能总结一下mongodb数据库设计的一些原则就更好了
mongodb不是rdbms。你尽可以随意发起任何select类型查询。比如
for ($i=0,$j<100000000;$i<$j;$i++)
$author = $mongo->getCollection('db','table')->findOne(array('author_id'=>id),array('author_name'=>1));
echo $author['author_name'];
mysql,这样你就是疯了。mongodb,这样,很好。
你要根本的观念上认为:mongodb是绝对有别于MySQL的。
当然,不可否认的是,查询越少越好-
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。