网页浏览总次数

2010年11月20日星期六

MongoDB GridFS

MongoDB GridFS规范参考 http://www.mongodb.org/display/DOCS/GridFS+Specification,

使用的时候加上索引

db.fs.files.ensureIndex({filename:1}));
db.fs.chunks.ensureIndex({files_id:1, n:1}, {unique: true});
做类似于文件系统的目录扫描时,可用正则查找,查找更高级的功能见

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-ConditionalOperators

为了获取较好的性能,最好只做路径前缀扫描,且不要带其他正则标记(比如不区分大小写的i),这样可以使用filename索引,比如

db.fs.files.find( { filename: /^myfiles/ } )

GridFS的性能比本地文件系统要差很多,在台式机上测试了一下写入约2MB/s,读取约5MB/s,数据规模为1300万个10K ~ 100K的小文件,另参考

http://www.ypass.net/solaris/nginx-gridfs-benchmarks/index.html

据说读取50K以上的文件可以把千兆网卡填满。

数据每2G建一个文件,当新建文件时如果MongoDB刚好很繁忙会有超时(测试遇到的情况是有45秒钟阻塞),网上建议用ext4文件系统,这样可加速文件创建过程。

如果打算产品环境使用,建议做好数据冗余(Replication/ReplSet),由于MongoDB没有日志恢复功能(据说版本1.8支持,但目前还没稳定版释出),数据恢复过程异常缓慢。

没有评论:

发表评论