摘要: 1. 同步 复制是指多台服务器保持相同的数据副本。MongoDB通过保存操作日志(oplog)实现复制功能。 oplog存在于主节点local数据库中的一个固定集合,包含了主节点执行的每一次写操作。 每个节点维护自己的oplog,用来记录它从主节点复制的每个操作,从节点停止运行重启后,会从oplog 阅读全文
posted @ 2022-10-16 18:26 算法小生 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 1. 如何设计副本集 大多数:选取主节点时需要由大多数决定,主节点只有在得到大多数支持时才能继续作为主节点,写操作被复制到大多数成员时就是安全的写操作。这里的大多数定义为“副本集中一半以上的成员”,由此可看一般设置为奇数,如3个节点 2. 如何进行选举 MongoDB在3.2版本中引入了第一版复制协 阅读全文
posted @ 2022-10-16 18:26 算法小生 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 1. 复制简介 在MongoDB中,创建副本集后就可以使用复制功能了,副本集是一组服务器,其中一个是用于处理写操作的主节点,还有多个用于保存主节点的数据副本的从节点,如果主节点崩溃了,则从节点会从中选举中一个新的主节点 2. 创建副本集 mongod --replSet study --dbpath 阅读全文
posted @ 2022-10-16 18:25 算法小生 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 1. 地理空间索引及全文搜索 与Elasitcsearch一样,MongoDB同样支持地理空间索引及全文搜索,由于选型常用ES而非MongoDB此处略过 2. TTL索引 首先先了解下固定集合,其类似于循环队列 ,当满的时候,最旧的文档会被覆盖。而TTL索引允许允许为每个文档设置一个超时时间,当一个 阅读全文
posted @ 2022-10-16 13:40 算法小生 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 1. $运算符如何使用索引 1.1 低效的运算符 $ne、$not查询可以使用索引,但不是很有效,尽量避免 1.2 范围查询 范围查询其实是多值查询,根据复核索引规则,尽可能先等值精确匹配,然后范围查询 1.3 OR查询 $or实际执行两个索引查询然后合并,应尽可能使用$in,而非$or 2. 索引 阅读全文
posted @ 2022-10-16 13:39 算法小生 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 1. 执行计划查看 db.getCollection('users').find({'username': 'shenjian'}).explain('executionStats') 结果查看,先大致看一遍,后续慢慢来深入理解 { "queryPlanner": { "plannerVersion 阅读全文
posted @ 2022-10-16 13:39 算法小生 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 1. find简介 // 查询所有文档 db.users.find({}) // 查询指定条件文档 db.users.find({'name': 'shenjian'}) // 查询指定字段,1查询键 0剔除键 db.users.find({'name': 'shenjian'}, {'name': 阅读全文
posted @ 2022-10-16 13:38 算法小生 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 1. 插入文档 // 单条插入 db.getCollection('blog').insertOne({'type': 'mongodb'}) // 批量 插入 db.getCollection('blog').insertMany([{'type': 'elasticsearch'}, {'typ 阅读全文
posted @ 2022-10-16 13:37 算法小生 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 1. 编写docker-compose.yaml文件 version: "3" services: mongo: image: mongo:4.2.6 ports: - 27017:27017 volumes: - ./data:/data/db:rw - ./configdb:/data/conf 阅读全文
posted @ 2022-10-16 13:36 算法小生 阅读(24) 评论(0) 推荐(0) 编辑