Loading... <p>NoSQL介绍:</p> <p> NoSQL数据管理系统是目前非常流行的一种非关系性、分布式、不支持ACID设计规范式的数据库;NoSQL简单的数据模型、元数据和数据分离、弱一致性、高吞吐量、高水平扩展能力和低端硬件集群使其流行的主要原因,而mongodb就是NoSQL数据库一种非常流行的实现方式。 </p> <p></p> <table> <tbody> <tr class="firstRow"> <td valign="top" rowspan="1" colspan="2">常见的NoSQL数据存储模型</td> </tr> <tr> <td width="393" valign="top" rowspan="1" colspan="1"> <p>列式模型</p> </td> <td width="394" valign="top"> <p>文档类型</p> </td> </tr> <tr> <td colspan="1" valign="top" align="null" width="393" rowspan="4"> <p style="margin-top: 0px;margin-bottom: 0px;padding: 0px;line-height: normal">应用场景:在分布式文件系统之上提供支持随机读写分离的分布式数据库</p> <p style="margin-top: 0px;margin-bottom: 0px;padding: 0px;line-height: normal">典型产品:HBase、Hypertable、Cassandra<br />数据模型:以“列”为中心进行存储,将相同的列存储在一起<br />优点:快速查询、高可扩展性、易于实现分布式扩展</p> </td> <td width="394" valign="top" rowspan="4" colspan="1"> <p>应用场景:非强事务的web应用<br />典型产品:MongoDB、Elasticsearch、CouchDB<br />数据模型:键值模型,以文档存储<br />优点:数据模型无须事先定义<br /> </p> </td> </tr> <tr></tr> <tr></tr> <tr></tr> <tr> <td width="394" valign="top">键值模型</td> <td width="394" valign="top">图式模型</td> </tr> <tr> <td valign="top" colspan="1" rowspan="1"> <p>应用场景:<br /> 内容缓存,用于大量并发数据访问的高负载场景<br />典型产品:DynamoDB、Redis、Riak<br />数据模型:基于hash表实现的key-value<br />优点:查询速度快</p> </td> <td valign="top" colspan="1" rowspan="1"> <p>应用场景:社交网络、推荐系统、关系图谱<br />典型产品:Neo4j、Infinite Graph、TITAN<br />数据模型:图式结构<br />优点:适用于图式场景计算</p> </td> </tr> </tbody> </table> <p> </p> <p>MongoDB的复制功能有两种类型:</p> <p> 第一种类型:master/slave模型,这类模型与MySQL模型基本相同</p> <p> 第二种模型:replica set复制集、副本集;服务于同一数据集的多个mongodb实例;与mysql的主从类似,但是要比mysql主从工作效率要高</p> <p> 特性:(1)至少三个节点,至少为奇数个节点</p> <p> (2)当节点数不足时,使用arbiter(仲裁者)来参与</p> <p> (3)heartbeat每2s中的信息监测以及自动失效转移</p> <p> MongoDB复制集中特殊节点的类型:</p> <p> (1)0优先级的节点:冷备节点,不会被选举成为主节点,但可以参与选举</p> <p> (2)被隐藏的节点:首先是一个0优先级的从节点,且对客户端不可见</p> <p> (3)延迟复制的节点:首先是一个0优先级的从节点,且复制时间落后于主节点一个固定时长</p> <p> (4)arbiter:仲裁者,没有数据,只负责仲裁</p> <p> MongoDB的复制架构:<br /> (1)oplog:<br /> 是存储在local数据库中,最小为1G,大小为固定的文件;同时又只有主节点才可以有写入操作,而从节点不会有写入操作;而local数据存放了数据集的所有元数据和oplog,用于存储oplog的是一个名为oplog.rs的collection,oplog.rs的大小依赖于OS和文件系统;但其大小可以自定义(oplogSize)</p> <p> (2)heartbeat: 用于监测各个节点复制时的信息</p> <p> </p> <p> MongoDB复制过程:</p> <p> (1)初时同步:initial sync</p> <p> 首先克隆所有数据库</p> <p> 其次应用数据集的所有改变;复制oplog并应用于本地</p> <p> 最后为所有collection构建索引</p> <p> (2)回滚后追赶:post-rollback catch-up</p> <p> (3)切分块迁移: sharding chunk mingratings</p> <p> </p> <p>MongoDB的索引类型:</p> <p> 单字段索引、组合索引(多字段索引)、多键索引、空间索引、文本索引、hash索引</p> <p></p> <p>以上是本人对学习mongodb的一些总结,只总结了一些基础知识,常用命令没有总结。大家有什么好的建议多给提一下。O(∩_∩)O</p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信