【MongoDB】4、MongoDB的两个小东东:GridFS和mapreduce

早上继续看mongodb文档,利用早餐、交电话费、逛超市的碎片时间看了两个小东东:GridFS和mapreduce。


1、GridFS

GridFS是mongodb的分布式文件系统,可以充分利用分片和副本集的优势,善设shard key,还是不错的。

我想的shard key 是文件名,或者{类别,文件名},没细想,有了经验再细考量。对于创建日期有些犹豫,细节还不了解,应该是有价值的,还不知道怎么用。


以下凭记忆乱写,未必正确。

GridFS用两类集合保存文件,一个是db.files,保存文件元信息,和普通的集合没关系。一类是db.chunks,保存文件本身,每个chunk 20G。

对于大文件,驱动程序负责分割(需要自己写代码干预吗?看Java API文档时记着这个事情),每个文档受4M限制(新版本会扩大吧,反正再大也是不太大)。

客户端,比如Java可以建立连接,直接保存文件到mongodb,和保存普通文档从语法上区别不大。

常规操作包括:put、get、list、search。

有md5字段,可以验证文件完整性。


大概这些,感觉存小图片啥的还可以,正经存文件还是hdfs吧。当然,存海量小文件也功德无量。再想想shard和replset,也非常高大上。

2、MapReduce in MongoDB

这个也是个太监版,初步具备了象征意义。

输入方面,需要将BSON转换为JavaScript对象,额滴神啊,想想都觉得慢。

在map之前可以order by ,limit,query过滤,然后map ,emit,reduce,最后finalize。

结果集依托Connection是暂时的,可以持久保存。

JavaScript语法清晰简单。


继续看的话,找找Job、Task调度的内容。分片机制按照shard key将数据分片存储,计算的输入如果在某个分片上,map是不是也运行在那个分片上呢?


接下来还有几块内容没看:

管理角度:监控、备份;

开发角度:索引、查询。


posted on 2014-05-18 10:21  刘海龙  阅读(232)  评论(0编辑  收藏  举报

导航