当前位置:  开发笔记 > 后端 > 正文

评论系统rdbms vs nosql

如何解决《评论系统rdbmsvsnosql》经验,为你挑选了1个好方法。

实施评论系统(大量数据写作)的最佳方式是什么?

1)使用一个RDBMS数据库,如MySQL,2个表一个用于主题,一个用于评论 优点是新注释的插入是快速,有效和简单,高效的索引.缺点 是缩小(水平缩放)很难.

2)使用一个nosql数据库,如couchdb或mongodb,优点是扩展(水平扩展)很容易,支持大量数据写入,无模式缺点 我认为插入新数据并不像RDBMS那样快速有效

例如,要更新couchdb文档,您需要获取整个文档,在本地更新它再次提交,文档大小将是巨大的,因此它将消耗带宽.

另外我认为couchdb就地更新,Mongodb更新会很慢,并且不像RDBMS那样高效

此外,当您想要在各种主题中获取每个用户的注释时,我认为在RDBMS中搜索比在nosql系统中更快.

这是couchdb数据库文档的示例[每个主题的文档示例]

{"_id":"doc id",
 "_rev":"45521231465421"
 "topic_title":"the title of the topic"
 "topic_body":"the body of the topic"
 "comments":[
           {"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla1"}, {"user":"user1"}
           {"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla2"}, {"user":"user2"}
           {"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla3"}, {"user":"user3"}
           {"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla4"}, {"user":"user4"}
           {"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla5"}, {"user":"user5"}
           {"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla6"}, {"user":"user6"}
            ]
}

Sammaye.. 5

我认为插入新数据并不像RDBMS那样快速有效

你在那里打了一些东西.NoSQL数据库的插入速度取决于您的场景.我不能说得那么清楚,所以很多人都希望MongoDB能够比SQL更快地执行,并且当它不适合它们时非常失望,事实上在此之前,mongodb用户谷歌组已经被这些人所填充.

例如,更新couchdb

不仅如此,CouchDB还使用版本控制和JSON,效率不如将其存储在SQL中,并且每条记录占用的空间更多.

Mongodb更新速度很慢,并且在RDBMS中效率不高

架构,查询,架构,查询......

这就是它归结为什么.问自己一个问题.

我会期待每篇文章都有很多评论吗?

如果是这样的内存(是的,在内存中)$push,$pull以及其他子文档运营商可能会慢上一大子文档(说实话,会).

不仅如此,而且不断增长的文档可能会成为一个问题,并且可能导致严重的碎片和空间使用,从而产生"瑞士奶酪"效应,从而大大降低系统速度(使其停止运转).此演示文稿应有助于更多地了解存储如何真正起作用:http://www.10gen.com/presentations/storage-engine-internals

所以你已经知道,如果使用错误,子文档可能是个坏主意.这就是说你可以用2大小分配的力量来部分补救它:http://docs.mongodb.org/manual/reference/command/collMod/#usePowerOf2Sizes但是如果你得到太多的评论插入那么它就不会帮助太多了.

我个人不会嵌入这种关系.

所以我会选择与RDBMS相同的设置,现在你开始看到问题了.如果不是MongoDBs fsync队列,插入可能会大致相同的速度,不像SQL直接写入磁盘.您可以使用日志编写来设置MongoDB,但是您可能会在一天结束时从SQL获得相同的性能指标.

至于查询,这是MongoDB仍然可以在顶部出现的地方,提供适合RAM的工作集.最后一点我不能大胆!

与SQL不同,MongoDB将所有内容(您的整个数据)映射到虚拟内存,而不是RAM,绝对不要与RAM混淆.这确实使更大的查找速度更快,对于较小的查找,速度将大致相同,因为两者都将从内存缓存中提供.

此外,当您想要在各种主题中获取每个用户的注释时,我认为在RDBMS中搜索比在nosql系统中更快.

如果主题id在评论文档中,那么在MongoDB中肯定会更快,只要你的工作集在RAM中就绪.

工作集是什么意思?这是一个很好的答案:将"工作集"安装到MongoDB的RAM中意味着什么?

希望这可以帮助,



1> Sammaye..:

我认为插入新数据并不像RDBMS那样快速有效

你在那里打了一些东西.NoSQL数据库的插入速度取决于您的场景.我不能说得那么清楚,所以很多人都希望MongoDB能够比SQL更快地执行,并且当它不适合它们时非常失望,事实上在此之前,mongodb用户谷歌组已经被这些人所填充.

例如,更新couchdb

不仅如此,CouchDB还使用版本控制和JSON,效率不如将其存储在SQL中,并且每条记录占用的空间更多.

Mongodb更新速度很慢,并且在RDBMS中效率不高

架构,查询,架构,查询......

这就是它归结为什么.问自己一个问题.

我会期待每篇文章都有很多评论吗?

如果是这样的内存(是的,在内存中)$push,$pull以及其他子文档运营商可能会慢上一大子文档(说实话,会).

不仅如此,而且不断增长的文档可能会成为一个问题,并且可能导致严重的碎片和空间使用,从而产生"瑞士奶酪"效应,从而大大降低系统速度(使其停止运转).此演示文稿应有助于更多地了解存储如何真正起作用:http://www.10gen.com/presentations/storage-engine-internals

所以你已经知道,如果使用错误,子文档可能是个坏主意.这就是说你可以用2大小分配的力量来部分补救它:http://docs.mongodb.org/manual/reference/command/collMod/#usePowerOf2Sizes但是如果你得到太多的评论插入那么它就不会帮助太多了.

我个人不会嵌入这种关系.

所以我会选择与RDBMS相同的设置,现在你开始看到问题了.如果不是MongoDBs fsync队列,插入可能会大致相同的速度,不像SQL直接写入磁盘.您可以使用日志编写来设置MongoDB,但是您可能会在一天结束时从SQL获得相同的性能指标.

至于查询,这是MongoDB仍然可以在顶部出现的地方,提供适合RAM的工作集.最后一点我不能大胆!

与SQL不同,MongoDB将所有内容(您的整个数据)映射到虚拟内存,而不是RAM,绝对不要与RAM混淆.这确实使更大的查找速度更快,对于较小的查找,速度将大致相同,因为两者都将从内存缓存中提供.

此外,当您想要在各种主题中获取每个用户的注释时,我认为在RDBMS中搜索比在nosql系统中更快.

如果主题id在评论文档中,那么在MongoDB中肯定会更快,只要你的工作集在RAM中就绪.

工作集是什么意思?这是一个很好的答案:将"工作集"安装到MongoDB的RAM中意味着什么?

希望这可以帮助,

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有