NoSQL之mongodb我见
Posted 马哥Linux运维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NoSQL之mongodb我见相关的知识,希望对你有一定的参考价值。
NoSQL介绍:
NoSQL数据管理系统是目前非常流行的一种非关系性、分布式、不支持ACID设计规范式的数据库;NoSQL简单的数据模型、元数据和数据分离、弱一致 性、高吞吐量、高水平扩展能力和低端硬件集群使其流行的主要原因,而mongodb就是NoSQL数据库一种非常流行的实现方式。
常见的NoSQL数据存储模型 | |
列式模型 |
文档类型 |
应用场景:在分布式文件系统之上提供支持随机读写分离的分布式数据库 典型产品:HBase、Hypertable、Cassandra |
应用场景:非强事务的web应用 |
键值模型 | 图式模型 |
应用场景: |
应用场景:社交网络、推荐系统、关系图谱 |
MongoDB的复制功能有两种类型:
- 第一种类型:master/slave模型,这类模型与mysql模型基本相同
- 第二种模型:replica set复制集、副本集;服务于同一数据集的多个mongodb实例;与mysql的主从类似,但是要比mysql主从工作效率要高
特性:
+ (1)至少三个节点,至少为奇数个节点- (2)当节点数不足时,使用arbiter(仲裁者)来参与
- (3)heartbeat每2s中的信息监测以及自动失效转移
MongoDB复制集中特殊节点的类型:
- (1)0优先级的节点:冷备节点,不会被选举成为主节点,但可以参与选举
- (2)被隐藏的节点:首先是一个0优先级的从节点,且对客户端不可见
- (3)延迟复制的节点:首先是一个0优先级的从节点,且复制时间落后于主节点一个固定时长
- (4)arbiter:仲裁者,没有数据,只负责仲裁
MongoDB的复制架构:
(1)oplog:
是存储在local数据库中,最小为1G,大小为固定的文件;同时又只有主节点才可以有写入操作,而从节点不会有写入操作;而local数据存放了数据 集的所有元数据和oplog,用于存储oplog的是一个名为oplog.rs的collection,oplog.rs的大小依赖于OS和文件系统;但 其大小可以自定义(oplogSize)(2)heartbeat: 用于监测各个节点复制时的信息
MongoDB复制过程:
(1)初时同步:initial sync
首先克隆所有数据库
其次应用数据集的所有改变;复制oplog并应用于本地
最后为所有collection构建索引(2)回滚后追赶:post-rollback catch-up
- (3)切分块迁移: sharding chunk mingratings
MongoDB的索引类型:
- 单字段索引、组合索引(多字段索引)、多键索引、空间索引、文本索引、hash索引
以上是关于NoSQL之mongodb我见的主要内容,如果未能解决你的问题,请参考以下文章