1 MongoDB逻辑结构
MongoDB 与 MySQL 中的架构相差不多,底层都使⽤了可插拔的存储引擎以满⾜⽤户的不同需要。⽤户可以根据程序的数据特征选择不同的存储引擎,在最新版本的 MongoDB 中使⽤了 WiredTiger 作为默认的存储引擎,WiredTiger 提供了不同粒度的并发控制和压缩机制,能够为不同种类的应⽤提供了最好的性能和存储率。在存储引擎上层的就是 MongoDB 的数据模型和查询语⾔了,由于 MongoDB 对数据的存储与 RDBMS 有较⼤的差异,所以它创建了⼀套不同的数据模型和查询语⾔。
2 MongoDB的数据模型
2.1 描述数据模型
内嵌
内嵌的⽅式指的是把相关联的数据保存在同⼀个⽂档结构之中。MongoDB的⽂档结构允许⼀个字段或者⼀个数组内的值作为⼀个嵌套的⽂档。
引⽤
引⽤⽅式通过存储数据引⽤信息来实现两个不同⽂档之间的关联,应⽤程序可以通过解析这些数据引⽤来访问相关数据。
2.2 如何选择数据模型
选择内嵌:
1.数据对象之间有包含关系 ,⼀般是数据对象之间有⼀对多或者⼀对⼀的关系 。
2.需要经常⼀起读取的数据。
3.有 map-reduce/aggregation 需求的数据放在⼀起,这些操作都只能操作单个 collection。
选择引⽤:
1.当内嵌数据会导致很多数据的重复,并且读性能的优势⼜不⾜于覆盖数据重复的弊端 。
2.需要表达⽐较复杂的多对多关系的时候 。
3.⼤型层次结果数据集 嵌套不要太深。
3 MongoDB 存储引擎
存储引擎是MongoDB的核⼼组件,负责管理数据如何存储在硬盘和内存上。MongoDB⽀持的存储引擎有MMAPv1,WiredTiger和InMemory。InMemory存储引擎⽤于将数据只存储在内存中,只将少量的元数据(meta-data)和诊断⽇志(Diagnostic)存储到硬盘⽂件中,由于不需要Disk的IO操作,就能获取所需的数据,InMemory存储引擎⼤幅度降低了数据查询的延迟(Latency)。从mongodb3.2开始默认的存储引擎是WiredTiger,3.2版本之前的默认存储引擎是MMAPv1,mongodb4.x版本不再⽀持MMAPv1存储引擎。
3.1 WiredTiger存储引擎优势
3, 复制集集群架构原理
⼀个复制集中Primary节点上能够完成读写操作,Secondary节点仅能⽤于读操作。Primary节点需要记录所有改变数据库状态的操作,这些记录保存在 oplog 中,这个⽂件存储在 local 数据库,各个Secondary节点通过此 oplog 来复制数据并应⽤于本地,保持本地的数据与主节点的⼀致。oplog 具有幂等性,即⽆论执⾏⼏次其结果⼀致,这个⽐mysql 的⼆进制⽇志更好⽤。
oplog组成结构
选举
MongoDB的Primary节点选举基于⼼跳触发。⼀个复制集N个节点中的任意两个节点维持⼼跳,每个节点维护其他N-1个节点的状态。
主节点选举触发的时机:
当触发选举时,Secondary节点尝试将⾃身选举为Primary。主节点选举是⼀个⼆阶段过程+多数派协议
复制集搭建

1.主节点配置 mongo_37017.conf


2.初始化节点配置


节点的动态增删
.复制集操作演示
复制集成员的配置参数

版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sqlbc/41236.html