时间:2021-07-01 10:21:17 帮助过:3人阅读
分片是将数据分配到不同机器的方法。
拥有很大数据量的数据库系统或者高吞吐量的应用会挑战单机的能力上限。比如,高的查询率会耗尽服务器的 CPU 能力,大于系统内存的工作集会对磁盘设备的 IO 造成压力。
MongoDB 通过分片支持水平扩容。水平扩容指将系统的数据集和负载分割到不同的服务器,通过增加服务器来提高系统的能力上限。虽然一台机器的性能可能不高,但通过使每台机器处理总体负载的子集,可以比一个高配置机器提供更高的性能。提高能力上限的部署只需要增加额外的服务器,这小于给单机增加高配置硬件的成本。与此而来的是更复杂的架构以及部署。
分片集群由以下组件构成:
MongoDB 分割 collection 级别的数据,将其分配到集群的分片中。
MongoDB 根据分片键分割 collection 中的文档。详情见 MongoDB 分片键。
MongoDB 将数据分割到 chunks。每个 chunk 有一个基于分片键的左闭右开的区间。分片可以含有多个 chunks。
MongoDB 使用分片集群平衡器在分片集群中迁移 chunks。这个平衡器尝试让 chunks 在分片集群中均匀分布。
在 chunks 数目不同的分片间迁移 chunks:
MongoDB 不能移动文件数超过 250000 或者超过 设置的 chunk 大小 / 平均文件大小
1.3 倍的 chunk。
MongoDB 分片
标签:图片 技术 支持 gpo 大数据 不能 应用 src blog