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

2024-02-02 20:58

本文主要是介绍【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是不是也运行在那个分片上呢?


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

管理角度:监控、备份;

开发角度:索引、查询。


这篇关于【MongoDB】4、MongoDB的两个小东东:GridFS和mapreduce的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/671929

相关文章

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

生产mongodb 分片与集群 方案

链接:http://my.oschina.net/pwd/blog/411439#navbar-header 注:主要是有一键安装的脚本可以借鉴

mongodb基本命令和Java操作API示例

1.Mongo3.2 java API示例:http://www.cnblogs.com/zhangchaoyang/articles/5146508.html 2.MongoDB基本命:http://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html 3.java MongoDB查询(一)简单查询: http://www.cnblogs

使用jetty和mongodb做个简易文件系统

使用jetty和mongodb做个简易文件系统 - ciaos 时间 2014-03-09 21:21:00   博客园-所有随笔区 原文   http://www.cnblogs.com/ciaos/p/3590662.html 主题  MongoDB  Jetty  文件系统 依赖库: 1,jetty(提供http方式接口) 2,mongodb的java驱动(访问mo

mongodb简单入门

一篇较好的mongodb常用操作命令:http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongodb的java操作:http://www.cnblogs.com/cyhe/p/5451421.html

mongodb自启动脚本.md

可粘贴文本(不全): #!/bin/sh##chkconfig: 2345 80 90#description:mongodb#processname:mongodbif test -f /sys/kernel/mm/transparent_hugepage/enabled; thenecho never > /sys/kernel/mm/transparent_hugepage/e

两个长数字相加

1.编程题目 题目:要实现两个百位长的数字直接相加 分析:因为数字太长所以无法直接相加,所以采用按位相加,然后组装的方式。(注意进位) 2.编程实现 package com.sino.daily.code_2019_6_29;import org.apache.commons.lang3.StringUtils;/*** create by 2019-06-29 19:03** @autho

创建一个大的DIV,里面的包含两个DIV是可以自由移动

创建一个大的DIV,里面的包含两个DIV是可以自由移动 <body>         <div style="position: relative; background:#DDF8CF;line-height: 50px"> <div style="text-align: center; width: 100%;padding-top: 0px;"><h3>定&nbsp;位&nbsp;

在二叉树中找到两个节点的最近公共祖先(基于Java)

如题  题解 public int lowestCommonAncestor(TreeNode root, int o1, int o2) {//记录遍历到的每个节点的父节点。Map<Integer, Integer> parent = new HashMap<>();Queue<TreeNode> queue = new LinkedList<>();parent.put(roo