我们的网站需要一个内容管理类型系统.例如,管理员希望动态创建促销页面.他们将为页面提供一些文本和图像以及页面需要的URL.我们需要一个数据存储.数据存储的标准很简单,定义如下.我不熟悉CouchDB或MongoDB,但认为它们可能比MySQL更适合这个,但我正在寻找对MongoDB和CouchDB有更多了解的人.
在1到10的范围内,您如何评价MongoDB,CouchDB和MySQL以下内容:
Java客户端
跟踪网络点击
CMS喜欢系统
存储上传的文件
易于设置故障转移
支持
文档
在这种情况下你会选择哪个?
每一个都适合不同的用例.但在低流量站点,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的问题不像cassandra和mongo那样容易扩展和HA,而且mysql特别是在写入时更慢.我不推荐couchdb,它是最慢的.
我最好的
Serdar Irmak
根据我对Mongo的经验,这里有一些快速的答案.
Java客户端
不确定,但它确实存在并得到很好的支持.大量的文档,甚至几个POJO包装器,使其变得简单.
跟踪网络点击
8或9.由于"火与忘记",插入和更新都非常容易.MongoDB具有内置工具来映射 - 减少数据和简单工具将数据导出到SQL进行分析(如果Mongo不够好).
CMS喜欢系统
存储整个网页内容很容易."挂钩"额外的列真的很容易.这真是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.他们也得到了支持.
他们的响应时间通常介于优秀和令人敬畏之间.
文档
平均.它就在那里,但它仍然有点消失.在最后一次进行了很多新的开发.