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

本文介绍了MongoDB中的GridFS和MapReduce两大特性。GridFS作为分布式文件系统,适用于存储海量小文件,支持文件的完整性校验。MapReduce则提供了一种在MongoDB中进行数据聚合的方法,尽管其实现方式较为原始,但仍然具有一定的实用价值。
摘要由CSDN通过智能技术生成

早上继续看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是不是也运行在那个分片上呢?


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

管理角度:监控、备份;

开发角度:索引、查询。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值