
mongo
mongoDB
caoPengFlying
编程,学的是思维,写的是人生!
展开
-
MongoDB学习(四)
MongoDB学习(四)Change StreamMongoDB中提供了ChangeStream的功能。此功能类似于关系型数据库中的触发器,有所区别的是Change Stream是异步的,并且只要注册了监听事件,所有的客户端都可以得到请求。 Change Stream可以监听collection的drop,rename,以及文档的增,删,改等操作。 Change Stream提供了可重复读的功能,只有大多数节点数据提交之后,才会触发事件。能够保证数据的一致性。 Change Sream原创 2020-10-14 11:52:03 · 415 阅读 · 0 评论 -
MongoDB学习(三)
MongoDB学习(三) MongoDB作为一个分布式的数据库,数据的一致性是我们必须要考虑的问题。Mongo实现了事务,解决了事务一致性写事务 MongoDB集群中只有一个primary节点可以负责接收写请求,在写入数据时会写入openlog,其他的secondary节点会将openlog数据读取从而实现同步数据。此时可能就是遇到问题,如下图所示:#mermaid-svg-xjAvhPxE70kfh4cQ .label{font-family:'trebuchet ms', verdana原创 2020-10-14 11:51:22 · 278 阅读 · 0 评论 -
MongoDB学习(二)
MongoDB学习(二) MongoDB作为一个nosql,经常会被认为,使用MongoDB不需要设计,使用一个大文档组织所有的数据,MongoDB不支持事务并且只适用于边缘化的逻辑。这些都是对MongoDB错误的理解Json文档模型设计 建模一般会经历三个阶段,概念模型 -> 逻辑模型 ->物理模型(文档模型)。尤其是传统的数据建模,有非常明确的规定,满足第三范式的要求。由于MongoDB使用Json表示的特性,可以省略掉文档模型建模,但是起码要经过概念模型到逻辑模型,所以Mon原创 2020-10-14 11:50:34 · 286 阅读 · 0 评论 -
MongoDB学习(一)
MongoDB学习(一) MongoDB是目前非常流行的nosql,尤其是在MongoDB4.0以后支持了事务操作,让MongoDB适应了更多的场景。目前我们在使用MongDB时,都会采用集群部署,主从结构(一主多从)。MongoDB集群MongoDB数据同步原理 MongoDB主节点接受所有的写请求,在发生新增,修改,删除操作时会向oplog中写入日志,MongoDB会有一个线程一直监听oplog这个集合,当监听到oplog变动时,就会读取日志,并将日志回放,以此来实现主从同步。Mong原创 2020-10-14 11:49:52 · 197 阅读 · 0 评论 -
MongoDB学习(五)
MongoDB学习(五)索引MongoDB的索引采用了B树,索引能有效的提高查询效率。创建索引的查询的时间复杂度为logN,相当于做了一次二分法。MongoDB在执行查询时,如果有索引会走一次索引的选择,选择最优的索引情况,最终去执行查询再将结果返回。在使用MongoDB时,理论上所有的查询都应该落在索引上,除非数据很少,可以不落在索引。所以在开发时,有需求到来,首先要去看一下执行计划,检查自己的语句是否有问题。以下为返回的实例,并在关键参数后面增加了注释// db.user.find({user_原创 2020-10-14 11:49:00 · 169 阅读 · 0 评论 -
mongo connect error no reachable servers
使用mgo操作mongo时遇到了上述的异常,原因是session的使用失败。func foo(){ session ,_ := mgo.Dial("mongodb://127.0.0.1") defer s.Close() session.DB("test").C("coll").Insert(bson.M{"name":"zhangsan"})}上述的函数,调用一次是能够插入成功的,但是循环1000次调用该函数就会抛出异常mongo connect error no reachabl原创 2020-10-14 11:47:13 · 1784 阅读 · 0 评论