深入浅出学习mongo
文章平均质量分 83
深入浅出的介绍mongo,mongo文档其实已经挺全了,但是你会发现没有面向developer的文档、文章。致力于创建一个这样的专栏
方丈的寺院
公众号@方丈的寺院
展开
-
存储优化(3)-mongo大表加索引
摘要在存储优化(2)-排序引起的慢查询优化中我们提到过排序对查询选择索引的影响。但是的解决办法就是增加一个索引。在线上给mongo的大表增加一个索引要慎重。在增加索引的过程中也遇到了一些问题,这边进行相关的记录与分析。问题描述表结构_id,biz_Id,version,name索引1. 主键索引2. biz_id,version联合索引查询语句"query":{"fin...原创 2020-03-29 19:37:19 · 1073 阅读 · 0 评论 -
领导不让用mongo了
背景2018年启动的一个新项目,项目初期,作为探索项目,基于两点考虑,部分数据存储选用了mongo,理由如下早期项目需要快速迭代,mongo开发速度快mongo在数据量小的情况下,使用方式和mysql一样,性能差异不大。组员学习成本基本为0这部分数据比较稀疏,适合nosql存储项目迭代过程中肯定会频繁的变更表结构,选用mysql交由dba审核麻烦,不适合新项目到5月份的时候,...原创 2018-06-16 16:19:23 · 5073 阅读 · 0 评论 -
Mongo连接分析
摘要在前面的文章中有分析过关系型数据库的连接,以及连接池的原理。在mongo数据库同样存在,经常看到有网友在问mongo 连接了数据库要不要关,怎么关。内置的数据库连接池是单线程还是多线程,mongo服务器为什么会杀游标,杀连接诸如此类的问题,其实这类问题基本上就是连接池的问题,而很多和关系型数据库是类似的,并不是mongo独有的。 本文旨在梳理这些问题,进行一个全面的分析。Client...原创 2018-04-22 10:59:38 · 2827 阅读 · 5 评论 -
Mongo -实现自增id,数据完整性校验
摘要Mongo 的free schema,提供了灵活的数据结构,和快速开发的能力,但是也造成了松散的数据组织形式。比如说有些字段不允许为null的,需要符合一定格式的。也就是数据库的校验,validator。这个功能在mongo 3.2才提供,之前是并没有的。这里提供一种基于MongoEvent的解决方案,来实现对于数据的校验。mongo eventMongo 提供了Even...原创 2018-03-04 22:36:31 · 3964 阅读 · 1 评论 -
Spring Repository解析---以Mongo Repository为例
摘要Spring 为java web 开发领域提供了大量的优秀的框架,第三方包,大大解放了生产力,本文主要介绍Spring Repository在连接数据库这边做的一些封装,并以Mongo Repository为例,详细阐述下Repository实现机制,本文基于spring-data-mongo1.10.4问题在使用Repository的时候,相信很多人都有下面的疑问,本文就是致...原创 2018-01-01 12:23:47 · 1965 阅读 · 0 评论 -
mongo3.2 数组索引作为联合索引的一部分导致的范围查询问题
摘要在mongo索引一文中有介绍过mongo数组索引,这边主要介绍在mongo3.2中遇到的一个将array字段作为一个联合索引的字段,然后进行非array字段的范围查询遇到的问题。问题post collection{ "_id" : ObjectId("5972c7b0a98a215bd51b9f9a"), "son" : [ 1, 2原创 2017-07-23 12:03:25 · 4467 阅读 · 0 评论 -
mongo driver类加载导致的错误
摘要一次类加载导致的错误,之所以要记录下来,是因为错误的发现不是在本地开发环境或者预部署环境,而是在生产环境。这应该是个易于重现的问题,但是不知道为什么直到生产环境部署时才报错。问题Unsatisfied dependency expressed through constructor parameter 3: Could not convert argument value of type [co原创 2017-07-22 10:40:07 · 1085 阅读 · 0 评论 -
spring-data-mongo 实现aggregation
摘要mongo aggregation是mongo 的一个轻量级的map-reduce框架,可以实现一些count,sum,groupby的聚合。本身的意义就在于减少查询次数,将原本需要客户端的多次查询能够整合到db端的基于pipeline的查询。这样带来的好处就是减少请求数据库次数,坏处就是这个查询占用的数据库内存大,时间查,有可能拖垮其他查询。这个在本篇文章不讨论。概述常用的阶原创 2017-07-01 22:28:45 · 6218 阅读 · 1 评论 -
mongo connections url string 的问题
摘要driver 连接Mongo DB的url其实很简单,就是几个变量拼接成一个url,和关系型数据库没什么不同。但是因为mongo有单个instance和replicaSet不同的部署策略,还有mongo 节点有主从之分。所以配置参数容易混淆。另外Mongo NodeJs Driver版本不同,居然也会有坑。这里作个简单介绍正文mongo client 连接到db字符串格式:mongodb://u原创 2017-03-26 15:26:55 · 4731 阅读 · 0 评论 -
Cassandra与Mongo的事务实现之分布式协议
摘要NoSql不同于关系型数据库,是分布式存储,因此想要实现关系型数据库中的事务就不是那么简单了。本文结合Cassandra中的paxos和Mongo的two phase commit来谈谈Nosql如何利用分布式协议来实现事务的。CassandraCassandra的paxos机制在这篇译文中已有详细解释了。 下面时序图方便理解。 注意acceptor节点数量由replicate factor原创 2017-02-22 21:59:29 · 2586 阅读 · 0 评论 -
java程序员的NodeJS初识篇
摘要作为一个一直用java来写后端的程序员用NodeJS来写后台,实在不是很爽。这里记下这两个月的NodeJS学习所遇之坑,与java转NodeJS的同仁共勉。学习时间不长,若有理解错误,望指正。一.JS基本exports,module.exportsexports 就是module.exports的引用在module 被计算之前,会将module.exports的值赋给exports当mod原创 2017-02-28 21:47:33 · 3637 阅读 · 0 评论 -
cassandra vs mongo (1)存储引擎
摘要在MongoDB 初识篇中谈到过Mongo 与 Cassandra的区别,这边再谈谈Mongo与Cassandra的存储引擎差别概括存储引擎: 类型 功能 应用 hash 增删改、随机读、顺序扫描 Key-Value存储系统 B-Tree 增删改、随机读、顺序扫描 关系型数据库 LSM 增删改、随机读、顺序扫描 分布式存储系统,如cassandra、原创 2017-02-14 21:22:11 · 5298 阅读 · 0 评论 -
Mongo Index
摘要mongo 的索引非常强大,和关系型数据库索引没什么区别。这里主要介绍mongo索引基本知识和mongo本人在索引上的犯的错。索引种类单字段索引复合索引 复合索引各个字段的顺序应该是精确匹配字段(=xxx),排序字段(避免在内存中排序,使用index排序),范围查询字段如db.book.find({company: ‘xxx’, age:{$lt:30}).sort(...原创 2016-12-12 22:19:27 · 2611 阅读 · 0 评论 -
mongo 读分析
分布式读读冲突 分布式中数据库有多份数据,各份数据可能存在不一致性。 mongo 只会写到primary节点上,理论上来说不会有文档冲突,也就是说数据库中的数据都以primary节点为标准。但是有种情况,一个主节点的数据还没有全部replicate 到secondary 节点,它down 了,这部分数据就有不一致性了,当它重新上线后变成了一个secondary 节点,就会有冲突了。需要将之前的这原创 2016-12-03 17:31:12 · 1887 阅读 · 0 评论 -
mongo 写分析
写操作复制集mongo所有的节点都是写入到primary节点,同时写入oplog,secondary 节点会持续的从primary节点上复制oplog的信息,然后根据oplog写数据。secondary 节点的复制oplog,写数据是一个异步的过程.oplog 是一个capped collection(固定大小的集合,超过最大值后自动覆盖老的值),记录对数据库的更改操作。oplog大小默认是disk原创 2016-11-27 17:05:47 · 1631 阅读 · 0 评论 -
mongo 存储过程
摘要本文主要介绍mongo存储过程,mongo 存储过程其实就是JS方法,然后通过eval 方法来执行,但是这个方法在3.0 depreate了,也就是在未来的版本,这个功能可能不提供了。从目前的jira的issue来看,mongo官方还没有打算提供了eval的替代。介绍mongo 存储过程其实就是在database 端存储js 方法db.system.js.save({ _id:"add"原创 2016-11-16 21:52:06 · 2409 阅读 · 0 评论 -
Mongo 整体架构介绍(1)-------分片集群
摘要在mongo初识文中介绍了mongo与cassandra的主要区别,以及mongo物理部署架构图。本文接着上一篇的mongo 架构图,来继续讲分片集群。分片介绍shard keymongo 默认配置是不分片的,需要自行enable.mongo 根据shard key来对数据进行分片。有三种分片方式range 根据范围来分片,比如1-10到shardA,11-20 shardB,以此类推h原创 2016-11-05 21:08:01 · 2169 阅读 · 2 评论 -
Mongo DB 初识
前言2016年伊始,开始研究NoSql.看了couchdb,cloudant,cassandra,redis.却一直没有看过排行榜第一的mongo,实属不该。近期会花时间研究下mongo。本文是初识mongo的体验。有错误之处,还望指正。Mongo VS cassandra目前NoSql 排行版前三是Mongo,Cassandra,Redis.Redis 特点明确,key-value 形式,数据不持原创 2016-10-23 15:53:08 · 2801 阅读 · 0 评论