首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大数据开发-什么是MongoDB?优缺点是哪些?

9.支持RUBY,PYTHON,JAVA,C ,PHP,C#等多种语言。 10.文件存储格式为BSON(一种JSON的扩展)。 11.可通过网络访问。...mongodb-2020-logo.png 三、优点 mongodb的优势就是文档存储: 1....嵌套文档,业务数据比较复杂,适合嵌套文档式存储,那么mongodb非常合适,这个关系型数据库比较难搞,虽然MySQL和pg也有文档存储,但MySQL的不成熟,pg毕竟现在生产中使用还是偏少 3. upsert...如果采用MySQL存储,每次查询需要使用外键查询多个表,从这些表中拉取数据,性能肯定要下降很多,比不上只在一个表查询,而且只拉取少两个数量级的数据。...但使用mongodb存储只需要update一条数据,对相应的嵌套文档中内容更新,可以做到原子性,是不是很方便?

2.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MongoDB简介与安装步骤

    查看安装目录 4.1.4 启动MongoDB服务 4.1.5 客户端连接 4.2 Docker方式安装 4.2.1 拉取mongodb镜像 4.2.2 运行mongo镜像 4.2.3 进入mongo...容器 1、简介 1.1 说明 官方说法 MongoDB是一个文档数据库,旨在简化开发和扩展。...总结: mongoDB 是一个非关系型文档数据库 1.2 文档数据库   MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。...2、特点 面向集合存储,易存储对象类型的数据 支持查询,以及动态查询 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言 文件存储格式为BSON(一种JSON的扩展) 支持复制和故障恢复和分片.../mongo --port=27017 4.2 Docker方式安装 4.2.1 拉取mongodb镜像 docker pull mongo:latest 查看下载好的镜像 4.2.2 运行mongo

    1.2K31

    最佳案例分享 | MongoDB读写分离异常案例分析

    超时,因为second节点压力大,进行跑批操作,没有响应备库拉取oplog】 ☐ mongod主库慢日志分析 备注:正常节点与异常节点,SQL执行时间基本上差不多,主要是执行次数不一样多。...,磁盘IOPS在40000-60000之间,所有机器性能差不多,没有特别大的异常,包括cpu都是相对稳定 并发--从监控来,17点到17.30出现连接翻倍的情况,这个可能会影响备库拉取oplog性能 写关注...查询官方文档以及mongodb官方博客,mongodb 4.0之前版本备库写会阻塞读,平时没有延迟所以备库阻塞读的时间非常短。...☐ 备库拉取oplog失败 4.4版本之前都是备库主动取获取日志,如果主库忙、网络出现问题以及磁盘等问题,会导致拉取失败的,从而导致从库不能及时应用日志,如果开始级联复制(默认开启),那么此时备库可能从其他备库拉取日志...相对从库主动拉取能够提高效率。

    2K20

    MongoDB 读写分离异常案例分析

    tag等frist节点日志,一直拉取oplogs超时,因为second节点压力大,进行跑批操作,没有响应备库拉取oplog】 mongod主库慢日志分析 备注:正常节点与异常节点,SQL执行时间基本上差不多...磁盘IOPS在40000-60000之间,所有机器性能差不多,没有特别大的异常,包括cpu都是相对稳定 并发--从监控来,17点到17.30出现连接翻倍的情况,这个可能会影响备库拉取oplog性能 写关注...查询官方文档以及mongodb官方博客,mongodb 4.0之前版本备库写会阻塞读,平时没有延迟所以备库阻塞读的时间非常短。...备库拉取oplog失败 4.4版本之前都是备库主动去同步源获取日志,如果主库忙、网络出现问题,会导致拉取失败的,从而导致从库不能及时应用日志,如果开始级联复制(默认开启),那么此时备库可能从其他备库拉取日志...相对从库主动拉取能够提高效率,降低复制延迟。

    61110

    一文读懂MongoDB chunk 迁移

    命令批量拉取chunk中的文档并将拉取的文档进行批量插入,即进行文档的全量拷贝。...3)接收方拉取增量修改:文档全量拷贝完成后,接收方通过不断重复发送transferMods命令拉取chunk的增量修改(包括插入、更新、删除),并将其应用到自身。...批量拉取函数会通过chunk中的文档id来查询对应文档,达到批量拉取的大小限制后一并将这些文档进行返回。...批量拉取的大小由默认配置指定,但其最大值不能超过mongoDB的限制,其中最核心的代码如下: Snapshotted doc; //定义一个空文档 //通过...(doc.value()); } insertBatchFn函数实现解析:批量插入函数主要的流程也比较简单,通过不断消费批量拉取函数拉取的文档,接收方依次将这些文档通过insert命令来进行插入

    2.4K31

    MongoDB 读写分离异常案例分析

    等frist节点日志,一直拉取oplogs超时,因为second节点压力大,进行跑批操作,没有响应备库拉取oplog】 mongod主库慢日志分析 备注:正常节点与异常节点,SQL执行时间基本上差不多...,磁盘IOPS在40000-60000之间,所有机器性能差不多,没有特别大的异常,包括cpu都是相对稳定 并发--从监控来,17点到17.30出现连接翻倍的情况,这个可能会影响备库拉取oplog性能 写关注...查询官方文档以及mongodb官方博客,mongodb 4.0之前版本备库写会阻塞读,平时没有延迟所以备库阻塞读的时间非常短。...【备库拉取oplog失败】 4.4版本之前都是备库主动去同步源获取日志,如果主库忙、网络出现问题,会导致拉取失败的,从而导致从库不能及时应用日志,如果开始级联复制(默认开启),那么此时备库可能从其他备库拉取日志...相对从库主动拉取能够提高效率,降低复制延迟。

    1.1K20

    VOP消息仓库演进之路|如何设计一个亿级企业消息平台

    消息系统中,一般有两种消费模式:服务端推送和客户端拉取。本文除了对于消息仓库的技术架构演进做对应叙述,重点介绍当前客户端拉取的消息仓库建设实践经验。...无效客户管控(LoadingCache),由于其他端外界客户接入VOP,存在部分不消费消息的无效客户,需进行主动屏蔽,以此解决无效客户消息中转存储的问题;缓存,减少耗时操作等。 3....主动降级队列:前面有提到MongoDB设置租户id的分片规则,所以在单客户频繁进行大量商品池操作时,会发出该客户的大量商品出入池消息,由于当前整个系统吞吐性能极佳,所以在写入MongoDB时,会造成单分片的热点写问题...具体实现为在消息仓库多租户场景下,不影响整体客户的情况下,配置化(某客户+配置项消息类型)的进行异常客户的过载流量隔离,来保证底层存储介质的服务质量,即异常流量超过阈值则进入降级队列;JMQ消费线程调优等...消息数据治理:无论消息推送还是消息拉取方面都有一个极其明显的特征。在客户系统消费水平足够好的情况下,大部分数据是会在几秒内进行写删各一次,两次操作完成这条数据就失去了意义。

    36220

    MongoDB副本集初始化实例方式以及注意事项

    【背景】 最近线上一套集群出现一个服务器故障导致闪存卡异常,经过抢救后无效,只能更换新闪存卡,导致这个节点上数据丢失,只能进行初始化来恢复.执行初始化动作很简单,启动空实例即可.全量复制很顺利...目标端对应逻辑: 更新失败--->去源端拉取同样失败-->本地填充--->接着删除--->串行操作--->很慢--->直到应用日志到T1时之后才恢复正常,4.4版本开始改变逻辑不去源端拉取....对应原因: 因为在初始化全量时,源端还在进行DML操作,但克隆复制不是基于一致性拉取导致读到这个集合时数据已经修改删除.类似MYSQL DUMP可以基于一致性来备份做备库.虽然mongodump支持...apply update,为了保证幂等操作,此时去源端拉取数据,同样拉取不到.missing object not found on source. presumably deleted later...in oplog.这个是串行操作,所以更慢.此时如果源端配置连接数少,那么此时去源端拉取数据时。

    1.5K30

    MongoDB内核:主从同步之源码剖析

    导语:前面文章提到了MongoDB的复制集协议是一种raft-like的协议。其中一点差别就是关于log的拉取和回放。本文将尝试结合代码深入探究主从同步中一些细节。...也就是说从节点定期去主节点的oplog集合中拉取最新的操作并应用到自身中。...由于这里是$gte,所以应始终至少返回一个文档 每次拉取要么满足一批的大小限制,要么满足一批的时间限制。...如果在同步源中找不到刚刚拉取的操作的optime,则会返回OplogStartMissing的错误; validateDocuments()检验文档的合法性,在这里检查oplog乱序等问题; BackgroundSync...(指insert,delete,update),通过getIdElement()取出其操作的文档_id并计算hash值,当然对于update命令需要去o里面取。

    2.6K40

    一次心跳引发的请求阻塞

    一部分来源于心跳交互携带的信息;另外一部分来自于每次拉取oplog中携带的元数据信息otherfields.meta._lastOpVisible。...3.2默认是关闭的,所以这个值无效。 综合上面的分析,当前同步源的 OpTime 完全依赖心跳来获取。心跳信息是否可能存在误差,导致误判呢?...有一个方法是:使用从同步源拉取的 oplog 中最新的 OpTime进行判断。但是单纯使用 oplog 中的 OpTime 进行判断也有缺陷,比如考虑如下 2 种情形: 1....主从延迟比较大如下图所示,此时从节点从心跳信息看到的主节点OpTime是T3998,但是拉取的 oplog 中 OpTime 是T310,比较旧。此时心跳时间更能准确反映主节点的 OpTime。...主从延迟很小如下图所示,此时从节点拉取的 oplog 中有最新的OpTime T4000,相比于心跳时间更能准确反映主节点的 OpTime。

    51010

    一次MongoDB故障的复盘

    此时的现象透露着一个信息,该MongoDB集群存在异常,但是由于第一时间无法获取集群状态,具体的异常暂时无从得知。...,影响了从节点上producer thread拉取oplog的效率,从而导致延迟(最有可能) 接下来我们将目光聚焦到了local.oplog.rs的慢查询上。...此前该业务出现过异常,从而导致服务不断异常与重启,累积了7200k+个notimeout的cursor,而每个cursor是有额外内存的消耗,从而导致主节点内存被无效的cursor占用(此处占用的内存不是...此时从节点producer thread来拉取oplog的效率降低,进一步造成了主从延迟的产生。 验证与总结 在初步获取到了结论后,我们开始进行相应的验证。...避免对local库内表的操作,如果有骚操作的需求,必须明白自己在做什么,同时将骚操作安排在隐藏节点中进行(如果此次最初我们的业务使用的是隐藏节点,该问题就不会直接影响到业务)且新版本可以使用changestream

    1.3K20

    启动设置mongodb

    三:基本操作      由于是开篇,就大概的说下基本的“增删查改“,我们再开一个cmd,输入mongo命令打开shell,其实这个shell就是mongodb的客户端, 同时也是一个js的编译器,默认连接的是...  insert 操作              好,数据库有了,下一步就是集合,这里就取集合名为“person”,要注意的就是文档是一个json的扩展(Bson)形式。  ...② 严格的按照Bson的形式书写文档,不过也没关系,错误提示还是很强大的。  ... update操作       update方法的第一个参数为“查找的条件”,第二个参数为“更新的值”,学过C#,相信还是很好理解的。... remove操作       remove中如果不带参数将删除所有数据,呵呵,很危险的操作,在mongodb中是一个不可撤回的操作,三思而后行。

    1.4K130

    MongoDB mongoshake 迁移分片到复制集合

    10 mongo_connect_mode 这个部分和上面的链接部分是兼容的,这里secondaryPreferred 是默认的一个设置,如果这里拉取的是分片集合,则这里建议为primary 避免孤儿文档...13 关于并发 full_sync.reader.collection_parallel =6 这个参数默认为 6 为一次最大并发拉取的表的数目,拉取一次过多,会导致IOPS 升高影响业务。...full_sync.reader.write_document_parallel = 8 ,对于一个表进行拉取的过程中,产生多少线程,来同时进行数据的拉取,这里注意要有主键。...,分别对于单 collation 拉取是并发的拉取数进行设置,这里默认为 1 对于分片的部分,目前不建议设置此参数,默认为1 full_sync.reader.parallel_thread full_sync.reader.parallel_index...在迁移前还要对mongodb的分片集合,做关闭balancer 的操作,通过mongos 进入到数据库中.

    41610

    MongoDB 4.0 系列之 —— 事务实现解析(二)

    MongoDB 4.0 引入的事务功能,支持多文档ACID特性,例如使用 mongo shell 进行事务操作。 ?...Part.3 事务与复制 复制集配置下,MongoDB 整个事务在提交时,会记录一条 oplog(oplog 是一个普通的文档,所以目前版本里事务的修改加起来不能超过文档大小 16MB的限制),包含事务里所有的操作...,备节点拉取oplog,并在本地重放事务操作。...整个重放过程如下: 获取当前 Batch (后台不断拉取 oplog 放入 Batch) 设置 OplogTruncateAfterPoint 时间戳为 Batch里第一条 oplog 时间戳 (存储在...Batch 里最后一条 oplog 时间戳,标识下一次重启后,从该位置重新同步,如果本步骤之前失败,重启恢复时,会从 ApplyThrough 上一次的值(上一个 Batch 最后一条 oplog)拉取

    1.4K20

    本人为巨杉数据库(开源NoSQL)写的C#驱动,支持Linq,全部开源,已提交github

    另外在电子病历应用之中,病历文档也是直接存入NoSQL之中。    ...在接触巨杉数据库之前,我们一直使用MongoDB这款NoSQL产品,这是一款广为人知的NoSQL产品,使用者众多,C#的驱动也非常完善,案例也比比皆时。...根据网上所公开的一些信息,巨杉(sequoiadb)数据库和MongoDB非常的接近,都是文档型数据库,同样的设计思路,集合和文档,同样的文档格式,Json/Bson。...所以完善SequoiaDB的C#的思路就变成了结合SequoiaDB的原始驱动和MongoDB的官方驱动,提供一个类似于MongoDB驱动的操作风格的驱动,在SequoiaDB驱动的基础上提供了,直接操作... /// 取记录数。 /// 查询结构。

    1.6K00

    搞会这个索引添加法,十亿级时延敏感集群想抖动都难

    作者介绍 杨亚洲,前滴滴出行专家工程师,现任OPPO文档数据库mongodb负责人,负责数万亿级数据量文档数据库mongodb内核研发、性能优化及运维工作,一直专注于分布式缓存、高性能服务端、数据库、...一、业务背景 某业务存储公司核心数据,集群异常会影响公司流水收入,该业务对时延非常敏感,稍有抖动就容易引起客户端超时异常,该业务场景如下: 数据量很小,10亿级 核心业务 时延敏感 分片模式,单个分片...如上面分析,虽然业务是串行的方式一个索引添加成功后再添加下一个background后台索引,由于主从索引构建执行时间的长短不同,从节点通过拉取对应oplog重放,最终引起某一时刻开始三个索引在所有从节点同时运行...如上,从节点拉取Oplog获取到第三个索引执行的时候IO负载进一步增加,最终触发了20ms访问时延阀值。 为何只有从节点抖动,主节点时延一切正常?...说明:mongodb高版本中对后台添加索引做了优化,从节点拉取建索引对应oplog重放的时候,只有第一个索引执行完成,才会执行第二个索引,从而避免了同时多个索引同时执行引起的抖动。

    49130

    Change Stream源码解读

    但是通常情况下,对于同步工具来说,拉取不同shard是一个并发的过程,以MongoShake举例,假设此时线程1拉取shard1,线程2拉取shard2,由于shard1的cpu/带宽/内存/网络io等多种原因...,导致shard2的拉取进度快于shard1了,先拉取ts=102进行回放产生的结果是{_id:1, a:3},然后是ts=100,最后{_id:1}对应的结果就是{_id:1, a:1}。...这显然是不符合预期,破坏了因果序,所以MongoShake中,用户如果采用oplog进行拉取,那么对于源端MongoDB是分片集群,必须关闭balancer以规避这种情况。...对比oplog拉取,Change Stream可以解决事务、DDL等集群版比较难处理的问题。...后面MongoDB官方也会继续优化此类功能。从使用来说,Change Stream使用的门槛比较低,不像oplog拉取需要自己处理复杂的对接和断点续传。

    2.5K20

    开发人员常用Docker指令

    docker pull:从远程仓库拉取镜像到本地。 docker push:将本地镜像推送到远程仓库。 docker images:列出本地存在的镜像列表。...Docker中运行Nginx 要在Docker中运行Nginx,可以按照以下步骤进行操作: 拉取Nginx镜像:首先,需要从Docker Hub或其他镜像仓库中拉取Nginx的官方镜像。...可以使用以下命令拉取最新版本的Nginx镜像: docker pull nginx 创建并运行容器:使用docker run命令创建并运行一个Nginx容器。...Docker中运行MongoDB 要在Docker中运行MongoDB,可以按照以下步骤进行: 拉取MongoDB镜像:首先,从Docker Hub上拉取MongoDB的官方镜像。...可以使用以下命令拉取最新版本的MongoDB镜像: docker pull mongo 创建并运行MongoDB容器:使用docker run命令创建并运行一个MongoDB容器。

    18330
    领券