以下是我从官方网站、论坛,以及网站等获取的信息。总体看来,MongoDB是一个新的宠儿,性能优越。但是用的人少,文档资料过于少。FastDFS是国人改编,目前有20多家企业在用,高效简洁(更少的资源投入,获得更好的效果)。MFS比较成熟,用的人多。但也有一些性能瓶颈的限制。
分布式文件系统性能对比 | ||||||||
最大文件限制 | 文件数的限制 | 最大存储容量(1PB) | 冗余备份 | 集群 | 优点 | 缺点 | 其他 | |
Mongodb | 32bit: MongoDB <= 2G 64bit: MongoDB无限制 |
Wordnik 是一个在线辞典和百科文档库,据其使用经验: 超过120亿的文档存储在MongoDB中,每个Mongo 结点存储大约3TB的数据 | 据一个Nosql的国外网站介绍,可以轻松实现PB级别的存储。原文:(it’s extermly scalable – up to petabytes with little effort (we don’t need the space for a petabyte, but 10 terrabytes) ) http://www.catify.com/2010/10/19/nosql-vs-sql/ |
通过同步复制,可以解决分布式文件的备份问题. 通过ARP-ping可以实现一个双机热备切换,类mysql的mysql master master replic |
MongoDB 集群中包含一个自动分片模块 (“mongos”). 自动分片可以用于构建一个大规模的可扩展的数据库集群,这个集群可以并入动态增加的机器。自动建立一个水平扩展的数据库集群系统,将数据库分表存储在sharding的各个节点上。 | 1、可以存储上百万的文件而无需担心扩容性,据CSDN一篇博客里写道可以轻松实现PB级别的数据存储 2、快速!(它比一般的关系型数据库快5位左右。) | Mongodb不支持内建的事务 http://www.xueit.com/usenetwork/show-6777-2.aspx |
目前使用GridFS有以下三种方式:
1. 使用脚本读取,这时文件数据会全部读取到脚本中,再调用脚本客户端的输出功能输出给页面。毫无疑问,这种使用方式是效率非常低下的。 |
FastDFS | 20+公司在使用 规模最大的一家:集群中的存储group数有45个,存储服务器90台,存储容量达到900TB,文件数达到4000万个。Group持续增长中。。。预计下周上线20个Group,到时总容量可以达到1200TB |
国人在mogileFS的基础上进行改进的key-value型文件系统,同样不支持FUSE,提供比mogileFS更好的性能。简洁高效 | FastDFS与MogileFS比较 | |||||
FastDFS比MogileFS更高效。表现在如下几个方面: 1)参见上面的第2点,FastDFS和MogileFS相比,没有文件索引数据库,FastDFS整体性能更高; 2)从采用的开发语言上看,FastDFS比MogileFS更底层、更高效。FastDFS用C语言编写,代码量不到2万行,没有依赖其他开源软件或程序包,安装和部署特别简洁;而MogileFS用perl编写; 3)FastDFS直接使用socket通信方式,相对于MogileFS的HTTP方式,效率更高。并且FastDFS使用sendfile传输文件,采用了内存零拷贝,系统开销更小,文件传输效率更高。 5. FastDFS有着详细的设计和使用文档,而MogileFS的文档相对比较缺乏。 6. FastDFS的日志记录非常详细,系统运行时发生的任何错误信息都会记录到日志文件中,当出现问题时方便管理员定位错误所在。 7. FastDFS还对文件附加属性(即meta data,如文件大小、图片宽度、高度等)进行存取,应用不需要使用数据库来存储这些信息。 8. FastDFS从V1.14开始支持相同文件内容只保存一份,这样可以节省存储空间,提高文件访问性能。 9.由网络的测试结果(http://hi.baidu.com/leolance/blog/item/8e818815b1522e6fca80c4ae.html)来看。MooseFS的性能效果不理想。I/O的读写速度比较慢。 因此,综上所说,我个人认为,选择FastDFS更加简洁高效。 |
||||||||
MOOSEFS | Master性能瓶颈 master本身的性能瓶颈:类似mysql 主从复制,从的可以扩展,主的不容易扩展。 体系架构存储文件总数的瓶颈: mfs把文件系统的结构缓存到master的内存中,文件越多,master的内存消耗越大,8G对应 2500kw的文件数,2亿文件就得64GB内存 |
1、支持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,性能相对较差,国内用的人比较多(豆辩在用),适合数量少的大文件 2、高可用性(数据可以存储在多个机器上的多个副本) 3、3.通用文件系统,不需要修改上层应用就可以使用(那些需要专门api的dfs好麻烦哦!)。 |