2020年下半年高级架构设计师论文
2020年11月7日我参加了高级架构设计师的考证,以前在私企工作时,时间都比较紧,大家都不太会去关注一系列的考证。2018年到了国企工作,有一定的自由时间,为了不在游戏和头条中荒废度日,我决定去考证,一来可以申请减免个税,二来可以加强理论知识的掌握,给自己充充电。
本次高级架构设计师考证下午论文题目之一:论数据库分库常用算法hash算法,一致性算hash法,range分段算法。考后查询了一下资料,我居然答对了,希望自己能过吧。
1:什么是hash算法
hash算法是指对某一字段取hash值来确定你的数据应该落在那个分库上,常用的hash算法就是对某一字段求模取余。
1.1:hash算法优点
第一:数据分布相对比较均匀,不容易出现热点和并发访问的瓶颈。
第二:算法简单,一眼就知道数据落入那个分库。使用分库字段进行范围查
找时,可快速定位分库进行快速查询,有效避免跨分库查询的问题。
1.2:hash算法缺点
第一:后期分库集群扩容时,需要迁移旧的数据很难,往往需要重新计算和
移动数据,数据抖动太厉害。
第二:容易面临跨库查询的复杂问题(解决这个问题的较好处理方式是针对
业务的一个唯一标记做hash,保证涉及这个业务的所有数据都落入
同一个分库来避免跨库操作)。
2:什么是一致性hash算法
一致性hash算法描述起来比较复杂,大家可以百度下“一致性hash环”,了解其原理也就了解一致性hash算法。本文主要分析下优缺点
2.1:一致性hash算法优点
第一:数据冷热分别均匀,不会出现数据库瓶颈问题
第二:数据集群扩展或者分库宕机,造成的数据抖动较小
3:什么是range分段算法
range分段算法比较简单,就是针对某一数值字段做分段,比如1-1000落入分库1,1001-2000落入分库2,2001-3000落入分库3.....
3.1:range分段算法优点
第一:算法简单,一眼就知道数据落入那个分库,使用分库字段进行范围查
找时,连续分库可快速定位分库进行快速查询,有效避免跨分库查询
的问题。
第二:表大小可控
第三:利于水平扩展
3.2:range分段算法缺点
缺点亦很明显,数据冷热分布不均衡,热点数据容易产生瓶颈问题。例如按时间字段分库,有些分库存储最近时间段内的数据,可能会被频繁的读写,而有些分库存储的历史数据,则很少被查询。