mongodb原理

本文参考:图解MongoDB原理_Vince的修炼之路-CSDN博客_mongodb原理MongoDB是一款非常常用的面向文档型非关系数据库,主要应用在微博、博客、IM等的消息存储业务中,由于存储的数据与金融等行业比起来并不是那么重要,而且对事务也没什么要求,所以在这种场景下,MongoDB要比关系型数据库更适合,因为传统的关系型数据库的每次操作都会有ACK,而MongoDB的设计去掉了这个步骤,大大提高了存储的性能,而且MongoDB的设计考虑了设备故障经常出现的场景,所以在设计时https://blog.csdn.net/zhaowen25/article/details/41871383?spm=1001.2014.3001.5506


1. mongo集群部署和分片方式

        mongo集群部署需要:

  • 路由接入节点
  • 配置文件存储节点
  • 实际数据存储节点

一次访问流程:

从mongo客户端进录入路由节点,从配置节点查询数据,根据查询结果到实际的存储结点上查询和存储数据。如下图所示:

mongo 部署方式同其他分布式组件一致,为单机部署,副本部署(也叫主从部署),分片部署,主从与分片混合部署

对于副本部署,写数据的过程是只写到主结点中,由主结点以异步的方式同步到从结点中。

而读数据,只要从任一结点中读取,具体到哪个结点读取是可以指定的。


分片:(参考mysql垂直分库)

对于MongoDB的分片,假设我们以某一索引键(ID)为片键,ID的区间[0,50],划分成5个chunk,分别存储到3个片服务器中,如图所示:

 假如数据量很大,需要增加片服务器时可以只要移动chunk来均分数据即可。

存储配置文件的服务器其实存储的是片键与chunk以及chunk与server的映射关系,用上面的数据表示的配置结点存储的数据模型如图:

 

路由结点:

路由角色的结点在分片的情况下起到负载均衡的作用。

2. mongo持久化

mongodb在启动时,专门初始化一个线程不断循环(除非应用crash掉),用于在一定时间周期内来从defer队列中获取要持久化的数据并写入到磁盘的journal(日志)和mongofile(数据)处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值