数据库 | 优点 | 缺点 | ||
mongodb | ||||
hdfs(hbase) | 借助hadoop这个生态系统得以比较稳定。另外还有一个优势就是他是用 java写的,这样一帮java程序员也可以号称自己在搞文件系统了, 1、大数据批量读写,吞吐量高; 2、一次写入,多次读取,顺序读写 |
实在太简单,太粗糙。甚至连搞个append接口都搞了老半天,到现在应该还不支持随机读写之类的文件系统最基本的功能, 1、交互式应用,低延迟很难满足; 2、不支持多用户并发写相同文件。 |
||
mysql | ||||
lustre | Oracle公司的企业级产品,非常庞大,对内核和ext3深度依赖, 1、 开源 2、 支持POSIX 3、 文件被分割成若干的Chunk,每个chunk是一般为1MB-4MB |
|||
moosefs | 支持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,性能相对较差,国内用的人比较多 | |||
glusterfs | 支持FUSE,比mooseFS庞大 | |||
Katta | ||||
CEPH | 支持FUSE,客户端已经进入了linux-2.6.34内核,也就是说可以像ext3/rasierFS一样,选择ceph为文件系统。彻底的分布式,没有单点依赖,用C编写,性能较好。基于不成熟的btrfs,其本身也非常不成熟 | |||
mogilefs | Key-Value型元文件系统,不支持FUSE,应用程序访问它时需要API,主要用在web领域处理海量小图片,效率相比mooseFS高很多 |
|
||
fastdfs | 国人在mogileFS的基础上进行改进的key-value型文件系统,同样不支持FUSE,提供比mogileFS更好的性能, 1、 开源 2、 适合以文件为载体的在线服务 3、 FastDFS没有对文件做分块存储 4、 不需要二次开发即可直接使用 5、 比mogileFS更易维护和使用 6、 直接使用socket通信方式,相对于MogileFS的HTTP方式,效率更高。 |
|
||
tfs | 开源,
|
1、小于1M的文件 2、TFS内部是没有任何数据的内存缓冲的 |
||
Swift | 流行得益于openstack,它应该是目前最流行的对象存储系统,印象中有在生产环节跑到上百PB的case。但总感觉这玩意用python写的,有点粗糙,似乎就是一堆脚本的拼凑 | |||
GridFS | ||||
SurFS |
||||
GFS |
|
|||
系统整体对比
对比说明 /文件系统 |
TFS |
FastDFS |
MogileFS |
MooseFS |
GlusterFS |
Ceph |
开发语言 |
C++ |
C |
Perl |
C |
C |
C++ |
开源协议 |
GPL V2 |
GPL V3 |
GPL |
GPL V3 |
GPL V3 |
LGPL |
数据存储方式 |
块 |
文件/Trunk |
文件 |
块 |
文件/块 |
对象/文件/块 |
集群节点通信协议 |
私有协议(TCP) |
私有协议(TCP) |
HTTP |
私有协议(TCP) |
私有协议(TCP)/ RDAM(远程直接访问内存) |
私有协议(TCP) |
专用元数据存储点 |
占用NS |
无 |
占用DB |
占用MFS |
无 |
占用MDS |
在线扩容 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
冗余备份 |
支持 |
支持 |
- |
支持 |
支持 |
支持 |
单点故障 |
存在 |
不存在 |
存在 |
存在 |
不存在 |
存在 |
跨集群同步 |
支持 |
部分支持 |
- |
- |
支持 |
不适用 |
易用性 |
安装复杂,官方文档少 |
安装简单,社区相对活跃 |
- |
安装简单,官方文档多 |
安装简单,官方文档专业化 |
安装简单,官方文档专业化 |
适用场景 |
跨集群的小文件 |
单集群的中小文件 |
- |
单集群的大中文件 |
跨集群云存储 |
单集群的大中小文件 |
开源协议说明
GPL:不允许修改后和衍生的代码做为闭源的商业软件发布和销售,修改后该软件产品必须也采用GPL协议;
GPLV2:修改文本的整体就必须按照GPL流通,不仅该修改文本的源码必须向社 会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制;
GPLV3:要求用户公布修改的源代码,还要求公布相关硬件;LGPL:更宽松的GPL
TFS
TFS(Taobao File System)是由淘宝开发的一个分布式文件系统,其内部经过特殊的优化处理,适用于海量的小文件存储,目前已经对外开源;
TFS采用自有的文件系统格式存储,因此需要专用的API接口去访问,目前官方提供的客户端版本有:C++/JAVA/PHP。
§ 特性
1)在TFS文件系统中,NameServer负责管理文件元数据,通过HA机制实现主备热切换,由于所有元数据都是在内存中,其处理效率非常高效,系统架构也非常简单,管理也很方便;
2)TFS的DataServer作为分部署数据存储节点,同时也具备负载均衡和冗余备份的功能,由于采用自有的文件系统,对小文件会采取合并策略,减少数据碎片,从而提升IO性能;
3)TFS将元数据信息(BlockID、FileID)直接映射至文件名中,这一设计大大降低了存储元数据的内存空间;
§ 优点
1)针对小文件量身定做,随机IO性能比较高;
2&#x