NoSql-Mongo
文章平均质量分 81
方丈的寺院
公众号@方丈的寺院
展开
-
存储优化(2)-排序引起的慢查询优化
摘要排序引起的慢查询,通常不是那么容易发现,经常和数据分布有关系。往往在业务刚开始时并没有什么问题,但是随着业务的发展,数据分布呈现一种特定的规律,导致了慢查询,或者并不是什么慢查询,但是随着并发请求数增加,数据库的IOPS使用率变高,进一步导致cpu/内存使用率飙高。造成线上故障。问题因为排序引起的问题遇到很多次例1:某日收到线上cpu告警然后查看慢sql日志大量的慢查询指向了这个查...原创 2020-03-16 21:19:19 · 829 阅读 · 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 评论 -
spring-data-mongo 实现aggregation
摘要mongo aggregation是mongo 的一个轻量级的map-reduce框架,可以实现一些count,sum,groupby的聚合。本身的意义就在于减少查询次数,将原本需要客户端的多次查询能够整合到db端的基于pipeline的查询。这样带来的好处就是减少请求数据库次数,坏处就是这个查询占用的数据库内存大,时间查,有可能拖垮其他查询。这个在本篇文章不讨论。概述常用的阶原创 2017-07-01 22:28:45 · 6216 阅读 · 1 评论 -
Mongo Index
摘要mongo 的索引非常强大,和关系型数据库索引没什么区别。这里主要介绍mongo索引基本知识和mongo本人在索引上的犯的错。索引种类单字段索引复合索引 复合索引各个字段的顺序应该是精确匹配字段(=xxx),排序字段(避免在内存中排序,使用index排序),范围查询字段如db.book.find({company: ‘xxx’, age:{$lt:30}).sort(...原创 2016-12-12 22:19:27 · 2609 阅读 · 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 · 1084 阅读 · 0 评论 -
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 · 4730 阅读 · 0 评论 -
mongo 写分析
写操作复制集mongo所有的节点都是写入到primary节点,同时写入oplog,secondary 节点会持续的从primary节点上复制oplog的信息,然后根据oplog写数据。secondary 节点的复制oplog,写数据是一个异步的过程.oplog 是一个capped collection(固定大小的集合,超过最大值后自动覆盖老的值),记录对数据库的更改操作。oplog大小默认是disk原创 2016-11-27 17:05:47 · 1631 阅读 · 0 评论