
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
分布式编程开发是目前大多数软件开发程序员都在学习和使用的一种编程开发方式,下面我们就通过案例分析来了解一下,分布式编程分区的概念与实践方式。
适用场景:数据量⾮常⼤的时候,在单台机器上
存储和处理不再可⾏,则分区⼗分必要。
此时需要将数据进⾏分区(partitions),也称为分⽚(sharding)。
目的:分区的⽬标是在多台机器上均匀分布数据和查询负载,避免出现热点(负载不成⽐例的节点)。
分区与复制:
分区通常与复制结合使⽤,使得每个分区的副本存储在多个节点上。这意味着,即使每条记录属于⼀个分区,它仍然可以存储在多个不同的节点上以获得容错能⼒。
两种主要的分区⽅法:
键范围分区
核心思想:为每个分区指定⼀块连续的键范围(从⼩值到⼤值),如纸百科全书的卷)。如果知道范围之间的边界,则可以轻松确定哪个分区包含某个值。
优点:键是有序的,并且分区拥有从某个⼩值到某个⼤值的所有键。可以进⾏有效的范围查询。
缺点:如果应⽤程序经常访问相邻的主键,则存在热点和偏斜的⻛险。
散列分区
核心思想:散列进⾏分区,通常先提前创建固定数量的分区,为每个节点分配多个分区,并在添加或删除节点时将整个分区从⼀个节点移动到另⼀个节点。也可以使⽤动态分区。
优点:可以将将偏斜的数据均匀分布
缺点:散列分区破坏了键的排序,使得范围查询效率低下
键范围&散列组合分区
两种⽅法搭配使⽤也是可⾏的,例如使⽤复合主键:使⽤键的⼀部分来标识分区,⽽使⽤另⼀部分作为排序顺序。
分区与二级索引:分区和⼆级索引之间的相互作⽤。二级索引也需要分区,有两种分区⽅法:
方法1:按⽂档分区(本地索引)。特点:
1.⼆级索引存储在与主键和值相同的分区中。
2.这意味着只有⼀个分区需要在写⼊时更新,
3.但是读取⼆级索引需要在所有分区之间进⾏分散/收集。
方法2:按关键词Term分区(全局索引)。
特点:
⼆级索引存在不同的分区。辅助索引中的条⽬可以包括来⾃主键的所有分区的记录。
2.当⽂档写⼊时,需要更新多个分区中的⼆级索引;
3.但是可以从单个分区中进⾏读取。
分区再平衡
定义:随着时间的推移,数据库会有各种变化。如查询吞吐量增加、数据集大小增加、节点机器故障下线等,此时需要数据和请求从⼀个节点移动到另⼀个节点。将负载从集群中的⼀个节点向另⼀个节点移动的过程称为再平衡(reblancing)。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。