网站制作收费标准,二维码怎么制作出来的,阿里云建立网站,asp网站建设实录pdfMongoDB 分片
高数据量#xff08;消耗内存#xff09;和高吞吐量#xff08;消耗CPU#xff09;的数据库应用会对单机的性能造成较大压力#xff0c;为了解决这些问题#xff0c;一般采用两种方法#xff1a;水平扩展#xff08;将数据集分布在多个服务器上#xff…MongoDB 分片
高数据量消耗内存和高吞吐量消耗CPU的数据库应用会对单机的性能造成较大压力为了解决这些问题一般采用两种方法水平扩展将数据集分布在多个服务器上和垂直扩展增加更多的CPU和存储资源。
当MongoDB存储海量数据时一台机器可能不足以存储数据也可能不足以提供可接受的读写吞吐量。这时我们可以通过分割数据使得数据分布在多个服务器上。
1. 分片集群架构
Config Server存储集群所有节点、分片数据数据信息等元数据信息默认需要配置3个Config Server节点Mongos专用路由进程提供对外应用访问将客户端发来的请求准确无误的路由到集群中的一个或一组服务器上同时会把接收到的响应拼装起来发回客户端Shard存储数据以chunk为单位存储数据
1.1 Chunk
在Shard内部MongoDB还会把数据分为chunks每个chunk包含shard的一部分数据chunk的产生有两个用途
Splitting当chunk的大小超过配置的chunk size默认为64M时MongoDB的后台进程会把这个chunk切分成更小的chunkBalancingbalancer时一个后台进程负责chunk的迁移从而均衡各个shard的负载 chunk size的选择小的chunk size数据均衡时迁移速度快数据分布更均匀但数据分裂频繁路由节点消耗更多资源大的chunk size数据分裂少但数据块迁移消耗IO资源大通常选择100M200M
2. 数据区分
2.1 分片键 shard key
MongoDB中的数据分片是以集合为基本单位的集合中的数据通过shard key被分成多个部分。其实shard key就是在集合中选一个键用该键作为数据拆分的依据。
注意
shard key是不可变的shard key必须有索引shard key大小限制512bytesshard key用于路由查询
2.2 以范围为基础的分片 Sharded Cluster
Sharded Cluster支持将单个集合的数据分散存储到多个shard上用户可以指定根据集合内文档的某个字段shard key来进行范围分片。 在使用shard key做范围划分的系统中拥有”相近”shard key的文档很可能存储在同一个数据块中因此也会存储在同一个分片中。
2.3 基于哈希的分片
对于基于哈希的分片MongoDB计算一个字段的哈希值并用这个哈希值来创建数据块。在使用基于哈希分片的系统中拥有”相近”shard key的文档很可能不会存储在同一个数据块中因此数据的分离性更好一些。