文章目录
- 分片集群
-
- 分片部署架构
- 分片工作机制
-
- 分片
- 集群平衡器
- 集群的读与写架构
- 片键选择策略
- 小结
分片集群
上一章的分析复制集解决了数据库的备份与自动故障转移,但是围绕数据库的业务中当前还有两个方面的问题变得越来越重要,一是海量数据如何存储,二是如何高效地读写海量数据。尽管复制集也可以实现读写分析,如在 primary 节点上写,在 secondary 节点上读,但在这种方式下客户端读出来的数据有可能不是最新的,因为 primary 节点到secondary 节点间的数据同步会带来一定延迟,而且这种方式也不能处理大量数据。MongoDB 从设计之初就考虑了上面所提到的两个问题,引入了分片机制,实现了海量数据的分布式存储与高效的读写分离。复制集中的每个成员是一个mongod实例,但在分片部署上,每一个片可能就是一个复制集。
上面谈到了分片的优点,但分片的使用会使数据库系统变得复杂。什么时候使用分片也是需要考虑的问题。MongoDB 使用内存映射文件的方式来读写数据库,对内存的管理由操作系统来负责。随着运行时间的推移,数据库的索引和数据文件会变得越来越大,对于单节点的机器来说