Update MongoDB_分片.md
This commit is contained in:
parent
d3d5636733
commit
8f2d12d971
@ -45,7 +45,7 @@
|
||||
+ 散列分片:对分片键进额行哈希散列然后分配到某个数据块;
|
||||
+ 范围分片:对分片键按照范围分配到某个数据块上。
|
||||
|
||||
散列分片有利于数据更加均匀的分布,但是在按照范围进行查询的场景下性能比较低 (如查询编号范围内的订单信息),因为按照这种分片规则相邻的数据通常不在同一个数据块上,此时需要在整个集群范围内进行广播和查询。
|
||||
散列分片有利于数据更加均匀的分布,但是在按照范围进行查询的场景下性能比较低 (如查询某个编号范围内的订单信息),因为按照这种分片规则相邻的数据通常不在同一个数据块上,此时需要在整个集群范围内进行广播和查询。
|
||||
|
||||
范围查询则反之,在范围查询的场景下性能比较好,但是数据可能出现分布不均匀的情况。假设分片键恰好是单调递增的,此时数据可能长期驻留在最后一个数据段,所以范围分片更适合于那些分片键长期稳定在某个区间范围内的数据,如年龄等。
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
|
||||
### 1.6 非分片集合
|
||||
|
||||
以上的所有讲解都是针对分片集合的,而在实际开发中并非每个集合都需要进行分片,MongoDB 允许在同一数据库下混合使用分片和非分片集合。每个数据库都有自己的主分片,所有非分片集合同一存储在主分片上。需要特别说明的是主分片和复本集中的主节点没有任何关系,在新数据库创建时程序会自动选择当前集群中最少数据量的分片作为主分片。如下图所示: Shard A 为主分片,集合 Collection1 是分片集合,而集合 Collection2 是非分片集合。
|
||||
以上的所有讲解都是针对分片集合的,而在实际开发中并非每个集合都需要进行分片,MongoDB 允许在同一数据库下混合使用分片和非分片集合。每个数据库都有自己的主分片,所有非分片集合统一存储在主分片上。需要特别说明的是主分片和复本集中的主节点没有任何关系,在新数据库创建时程序会自动选择当前集群中最少数据量的分片作为主分片。如下图所示: Shard A 为主分片,集合 Collection1 是分片集合,而集合 Collection2 是非分片集合。
|
||||
|
||||
<div align="center"> <img src="../pictures/mongodb-非分片集合.png"/> </div>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user