mongo
文章平均质量分 82
小卒曹阿瞒
这个作者很懒,什么都没留下…
展开
-
mongodb两地中心
双活的技术组件应用层解决方案数据库解决方案-数据跨中心同步原创 2020-07-01 19:52:32 · 482 阅读 · 0 评论 -
mongo读写性能机制
一次数据库请求过程中发生了什么应用端选择节点排队等待连接与认证数据库端排队等待执行读请求执行写请求合并结果网络的考量性能瓶颈总结问题诊断工具mongostatmongod日志mtools...原创 2020-06-30 21:33:26 · 799 阅读 · 0 评论 -
mongodb索引
比如想要firstName lastName,gender,age这四个字段, 同时这个四个建立了索引,就可以不再需要从数据页加载数据了。ixscan: index scan 索引扫描collscan: collection scan 集合扫描给ln建立一个单键索引,带ln的查询最多只会查询10条有时候mongodb会选用不合适的索引,可以使用hint强制选择某个索引按第2种方式建索引,根据ESR原则组合索引工作模式精确查询...原创 2020-06-30 20:55:04 · 456 阅读 · 0 评论 -
mongodb运维相关
获取监控数据serverStatus()输出指标serverStatus()主要信息监控报警的考量建议监控指标备份备份的目的1、延迟节点备份全量备份+oplog复制文件全量备份注意事项文件系统快照注意事项mongodump全量备份注意事项解决方案:幂等性mongodb安全架构用户认证方式集群节点认证。。。。。。...原创 2020-06-28 20:40:13 · 373 阅读 · 0 评论 -
mongodb分片集群设计
如何用好分片集群合理的架构-分片大小正确的姿势选择分布均匀的片键定向性好一个Email系统的片键例子所有的写会固定到某一区域,不好利用id哈希去分片, 定向查询比较查,很少用objectid去查基数不够大足够的资源...原创 2020-06-28 19:46:00 · 286 阅读 · 0 评论 -
mongodb分片集群机制及原理
mongodb常见部署架构为什么使用分片集群分片最多1024片完整的分片集群mongos配置节点数据节点mongodmongodb分片集群特点mongodb分片方式基于范围基于哈希自定义Zone小结...原创 2020-06-27 21:01:53 · 1027 阅读 · 0 评论 -
mongodb最佳实践
连接mongodb常见连接字符串参数连接字符串节点和地址使用域名连接集群不要在mongos前面使用负载均衡游标使用关于查询及索引关于写入关于文档结构处理分页问题-避免使用count处理分页问题-巧分页关于事务...原创 2020-06-27 20:44:34 · 332 阅读 · 0 评论 -
mongodb change stream
change stream 与可重复读change stream 变更过滤change stream示例maxAwaitTimeMS:30000 ms后没有事件发生就关闭打开配置change stream故障恢复使用场景注意事项原创 2020-06-27 20:25:31 · 1316 阅读 · 0 评论 -
mongodb事务
写操作什么是writeConcern?majority:超过半数以上的节点才算成功,常用于经常被扩容的节点默认行为写入x=1立即返回,并没有等到从节点复制完成使用majority写入x=1,等到从节点1完成复制,再返回, 因为3个节点,所以2个节点成功就可以返回了j:true写到journal文件才返回注意事项读操作什么是readPreferencereadPreference场景举例readPreference与Tag原创 2020-06-23 17:41:21 · 1367 阅读 · 0 评论 -
mongodb文档模型
逻辑模型-json模型关系模型与文档模型一个联系人管理应用的例子第二步:根据读写工况细化解决方案:Group使用单独的集合引用模式下的关联查询什么时候该使用引用方式?mongodb引用设计的限制解决方案:列转行列转行:模型灵活了,如何管理文档不同版本统计网页点击流量问题:业绩排名,游戏排名,商品统计等精确统计聚合会花比较多的时间,...原创 2020-06-22 20:36:51 · 401 阅读 · 0 评论 -
mongodb复制集
复制集的作用注:一般都是奇数节点oplog是一个特别的集合,记录操作日志, 有一个线程监听这个变动, 同步到从节点上通过选举完成故障恢复1.如果是7个 >=4个存活2.优先级:多数据中心时,将主数据中心的节点优先级高于备数据中心的节点,这样一旦出现故障,会优先主数据中心当做主节点...原创 2020-06-22 17:30:19 · 283 阅读 · 0 评论 -
mongodb聚合
project$project:指定返回哪些字段按照价钱price分组, boundaries:0-10, 10-20 。。。 分组多个维度分桶原创 2020-06-17 11:27:35 · 111 阅读 · 0 评论 -
二叉搜索树,B树,B+树,索引
mongodb的默认存储引擎WiredTiger使用了B树索引mysql的默认存储引擎InnoDB索引使用了B+树实现,那么各自为什么这样实现呢?二叉搜索树如上图是一个简单的二叉搜索树,是最为大家熟知的一种数据结构,它为什么不适合用作数据库索引?(1)当数据量大的时候,树的高度会比较高,数据量大的时候,查询会比较慢(2)每个节点只存储一个记录,可能导致一次查询有很多次磁盘I...转载 2020-01-13 01:14:46 · 294 阅读 · 0 评论 -
mongo——分片(sharding)
概念随着应用系统规模的增长,成本会变得越来越高,而且有时候无法实现使用单台机器来处理负载压力。这种问题的一个解决方案就是汇聚大量低价、低处理能力的机器来解决问题。mongodb的分片就是为解决这种问题而设计的:把超大数据使用更小的片进行分区存储,这样就不需要在单个机器上存储所有的数据或者承担全部压力。mongodb分片对于应用系统是透明的,这意味着对于分片集群的查询与可复制或者单个mongo服...原创 2019-12-15 17:39:38 · 1913 阅读 · 0 评论 -
mongo——复制
复制复制是跨多个mongodb服务器(节点)分布和维护数据的方法。mongodb可以把数据从一个节点复制到其他节点并在修改时进行同步。这种类型的复制通过一个叫可复制集的机制提供。集群中的节点配置为自动同步数据,并且在服务器出错时自动灾备。mongodb也提供对于旧的复制方法的支持。这个旧方法叫做主从模式,现在已经过时了,但是主从复制仍然可以在mongodb3.0里使用。两种方法类似,主节点接受...原创 2019-12-14 20:52:58 · 544 阅读 · 0 评论 -
mongo读书笔记——索引
索引:类似于书籍的目录,在索引中找到条目以后,就可以直接跳转到目标文档的位置,这能使查找速度提高几个数量级。不使用索引的查询称为全表扫描,即服务器必须查找完一整本书才能找到查询结果。速度测试:在表中插入一百万条数据> for(i=0;i<1000000;i++){... db.users.insert(... {... "i":i,... "username":"use...原创 2018-11-07 21:01:55 · 195 阅读 · 0 评论 -
mongo读书笔记——索引二
索引类型唯一索引唯一索引可以确保集合的每一个文档的指定建都有唯一值。例如:如果想保证不同文档的username键拥有不同的值,创建一个唯一索引就好了。db.users.getIndexes() // 查看所有索引> db.users.dropIndex("username_1")//删除之前建立的索引{ "nIndexesWas" : 3, "ok" : 1 }db.u...原创 2018-11-12 20:37:25 · 153 阅读 · 0 评论 -
mongodb的explain分析执行过程
numbers集合里有2000个{"_id":XXXX, "num":XXX}这样的文档。执行如下查询语句db.numbers.find({num:{"$gt":1995}}).explain("executionStats") //execution-stats 3.0以后新增的输出以下:{ "queryPlanner" : { "plannerVersio.翻译 2019-01-20 17:17:07 · 1551 阅读 · 0 评论 -
mongo——索引四
检查慢查询没加索引前> db.values.find({}).sort({close:-1}).limit(1).explain("executionStats"){ "queryPlanner" : { "plannerVersion" : 1, "namespace" : "stocks.value...原创 2019-02-27 23:55:49 · 302 阅读 · 0 评论 -
mongo——索引三
一、索引规则(1)索引可以大大减少要处理的文档数量,没有适当的索引,唯一满足条件的查询方式就是扫描全部文档,直到找到满足条件的查询。(2)唯一的单键索引将会用来处理查询。对于包含多个键查询,包含这些键的复合索引是最好的解决方案(3)如果有一个复合索引a-b,那么a上的单键索引就是多余的,b上的不多余(4)复合索引的键值顺序很重要example1:db.products.fi...原创 2019-02-24 22:52:31 · 371 阅读 · 0 评论 -
mongodb索引——五
查询模式单键索引(1)精确匹配。 无论是返回0,1个还是多个结果,都使用索引。在这些查询里使用精确匹配,返回所有收盘价为100的入口db.values.find({close:100})(2)排序:在索引字段上排序db.values.find({}).sort({close:1})(3)范围查询:范围查询可能在同一个字段上使用或者不使用排序。例如:查询所有的收盘价格大于或...原创 2019-03-17 01:08:33 · 119 阅读 · 0 评论 -
mongodb复制
锁在mongo早期版本中,每个链接都会有锁,在服务器级别,使用互斥锁(互相排序)这种允许多个客户端或者多线程访问相同资源的机制。这种情况下的资源是数据库服务器。但是不是同时并行的。这是最坏的锁,尤其是需要大数据数据库引擎时,同时可能有几千个客户端并发访问在版本2.2以后做了改变,实现了数据库级别的锁。互斥锁应用在数据库级别而不是整个mongodb服务器实例上,这是个重大的改进。但是mong...原创 2019-03-17 20:17:52 · 522 阅读 · 0 评论 -
mongodb不停机迁移库思路
背景随着业务量上升,原本一台机器上的多个相关业务去查询不同的db,这时想把其中一个或者db独立出去,迁移到新机器上去,但是要求不能停掉业务。方法一.最先想到的就是将新的db设置为准备要迁移的db的副本集,待同步完成后,将新的db独立出来提供服务,但后来了解到,独立的期间需要修改配置,此时是处于下线的,不能写,所以就会丢掉几十分钟的数据,这是不能接受的。二.建立后新的db集群后,双写...原创 2019-04-23 22:34:03 · 1362 阅读 · 0 评论 -
mongo 慢日志分析
一、背景mongodb版本 3.2.5说到mongo的慢日志分析,就不得不提到profile分析器,profile分析器将记录的慢日志写到system.profile集合下,这个集合是一个固定的集合。我们可以通过这个集合的查询,来了解当前的慢日志,进而对数据库进行优化二、分析在查询system.profile的时候,我们能够观察到所有的操作,包括remove,update,find...原创 2019-05-18 22:34:50 · 2379 阅读 · 0 评论 -
分页查询的几种思路
背景:今天发现一个获取list的接口返回空的数据,一看日志发现是超时了,不由得就分析起来了原因,看了代码发现应该是怀疑两个地方有些问题,一个是获取数据的地方,一个是获取count的地方。于是连上只读库测试查询语句,发现了count那里真的很慢,我用的是mongo,因为符合查询结果的条件就很多,所以count就很慢,索引也不能减少时间,奇怪了,难道mongo的count真的要一条条数吗。。。...原创 2019-10-09 01:33:00 · 574 阅读 · 0 评论 -
mongo读书笔记(一)
show dbs 显示所有库 use db_name 切换到db_name库 show collections 显示当前库的所有文档集合 db.user_table.insert({"bar":"baz"}) 插入文档,会自动生成一个objectID db.user_table.insert([{"_id":0},{"_id":1},{"_id":2}]) 批量插...原创 2018-10-25 19:23:26 · 197 阅读 · 0 评论