我们的网站需要内容管理类型系统。例如,管理员希望动态创建促销页面。他们将为页面提供一些文本和图像以及页面需要的URL。我们需要一个数据存储。数据存储的标准很简单,定义如下。我不熟悉CouchDB或MongoDB,但认为它们可能比MySQL更适合这种情况,但我正在寻找对MongoDB和CouchDB有更多了解的人来加入。
在1到10的范围内,您如何评价MongoDB,CouchDB和MySQL以下内容:
在这种情况下你会选择哪种?
答案 0 :(得分:6)
每种都适合不同的用例。但在低流量站点,mysql / postgresql更好。
Java客户端:所有客户端都有客户端
跟踪网络点击:mongo和cassandra更适合这种高写入情况
存储上传的文件:mongo with gridfs是合适的。 cassandra可以存储最多2gb,每列分成1 mb。 mysql不适合。仅存储文件位置并将文件存储在文件系统中是为cassandra和mysql提供的。
易于设置故障转移:cassandra是最好的,mongo第二
支持:都有很好的支持,mysql拥有最大的社区,mongo是第二个文档:第一个mysql,第二个mongo
我更喜欢使用MongoDB进行分析(网页点击,计数器,日志)(需要64位系统)和mysql或postgresql来获取主数据。在mongo网站上使用mongo页面的公司,您可以看到他们中的大多数都使用mongo进行分析。 mongo适用于1.8版之后的主要数据。 cassandra的问题是查询能力差(不适合cms)。并且mysql的问题并不那么容易扩展& HA作为cassandra& mongo和mysql特别是在写入时更慢。我不推荐couchdb,它是最慢的。
我最好的
Serdar Irmak
答案 1 :(得分:5)
根据我对Mongo的经验,这里有一些快速的答案。
Java客户端
不确定,但它确实存在并得到很好的支持。 Lots of docs,甚至多个POJO wrappers,以便轻松完成。
跟踪网络点击次数
8或9.由于“火与忘记”,插入和更新都非常容易。 MongoDB有内置的工具来映射 - 减少数据和简单的工具,将数据导出到SQL进行分析(如果Mongo不够好)。
CMS like system
8或9.可以轻松存储整个网页内容。 “挂钩”额外的列真的很容易。这真是Mongo的“面包和黄油”。
存储上传的文件
这里有一个学习曲线,但Mongo有一个专为保存和提供二进制数据而设计的GridFS系统。
轻松设置故障转移
启动主服务器:./mongo --bindip 1.2.3.4 --dbpath /my/data/files --master
启动你的奴隶:./mongo --bindip 1.2.3.5 --dbpath /my/data/files --slave --source 1.2.3.4
支持
10gen有一个邮件列表:http://groups.google.com/group/mongodb-user。他们也得到了支持。
他们的回应时间通常介于优秀和令人敬畏之间。
文档
平均。它就在那里,但它仍然有点消失。在最后一次进行了很多新的开发。
答案 2 :(得分:2)
我对CouchDB的看法:
Java客户端:很棒,使用ektorp非常简单且完整的对象映射。无论如何,所有的API都只是基于HTTP的Json,所以很容易。
跟踪网络点击次数:也许redis是一个更好的工具。 CouchDB不是更好的选择。
CMS like system:它非常棒,因为您可以轻松地组合模板,动态表单,数据等,并使用视图对它们进行整理。
存储上传的文件:couchdb中的任何文档都可以包含任意附件,因此非常适合。
易于设置故障转移:主/主复制确保您始终可以读取,数据库永远不会破坏,因此如果发生故障,只需再次启动沙发,它将接管停止的地方(最短的停机时间)和复制将捕获更改。
支持:拥有邮件列表和付费支持。
文档:使用打开的书籍http://guide.couchdb.org和wiki。
答案 3 :(得分:0)
我认为还有很多与此主题相关的帖子。但是,自从我离开mysql并转移到mongodb之后,我会说。它速度快,速度非常快,但这并不意味着它是完美的。我的建议,使用你感觉舒服的东西。如果你需要更长时间来重构代码以使其适合mongo或沙发,那么坚持使用mysql,如果这是你熟悉的。如果这是你想要作为技能组拿起的东西,那么一定要学习mongodb或couchdb。
对我来说,我选择mongodb有几个原因,通过gridfs和geolocation存储文件。是的,我可以使用mysql,但我想看看所有的大惊小怪。我必须说,我印象深刻,我还有很长的路要走,才能说我对mongo很满意。
根据您列出的内容,我可以告诉您mongo将满足您的大多数需求。
答案 4 :(得分:0)
我在这里看不到任何类似“必须处理数百万req / s”的内容,这表明滚动自己会比使用像Drupal这样的现成品更好。