一种提高分布式数据仓库分布效率及搜索速度的方法与流程

文档序号:33192447发布日期:2023-02-04 09:09阅读:24来源:国知局

1.本发明属于数据仓库领域,涉及一种提高分布式数据仓库分布效率及搜索速度的方法,通过解决雪花算法存在的时钟回拨问题,提高分布式数据仓库分布效率及搜索速度。


背景技术:

2.分布式数据库相较于传统集中式存储数据库,它的数据采用分片的方式存储,这样减轻集中数据存储压力,且会提升数据查询速度。数据分片是按照某个维度将存放在单一数据库中的数据分散地存放至多个数据库或表中以达到提升性能瓶颈以及可用性的效果。分布式数据库考虑到其平衡性(平衡性是指哈希的结果能够尽可能分布到所有的分片节点中去,这样可以使得所有的分片节点都得到利用),常用的数据分布算法为哈希,根据哈希值将数据指定到某一分片进行存储,再在当前分片上查询数据,此过程需要提升的一是如何高效的对数据进行分片,二是如何提高数据查询速度。为保证分布式数据资源的唯一性,一般会产生全局唯一键,常用的算法是uuid,此算法可保证数据资源的唯一性。uuid不易存储(占用存储空间);信息不安全(基于mac地址生成、可能会造成泄露;uuid由于无序,查询速度会较慢。
3.雪花算法(snowflake)是由twitter开源的分布式id生成算法,以划分命名空间的方式将64位分割成4个部分,由0+毫秒级时间戳+机器id+序列号构成。
4.第1位占用1位,其值一直为0,不使用。
5.第2位开始的41位是时间戳。41位可表示2^41个数,即表示2^41-1个毫秒的值,即(1l《《41)/(1000l360024*365)=69年的时间。
6.第43位开始的10位表示机器数,即2^10=1024台机器。
7.最后12位是自增序列,可表示2^12=4096个数。即每毫秒每台机器可生产4096个有序且不重复的id。
8.由此产生的id不仅包含时间戳、有序,同时全部为数字形式,在存储和查询效率上都有所提升。
9.雪花算法提供了一个很好的设计思想,雪花算法生成的id是趋势递增,以服务的方式部署,稳定性更高,生成id的性能也是非常高的,而且可以根据自身业务特性分配bit位,非常灵活。
10.但是雪花算法强依赖机器时钟,如果机器上时钟回拨,会导致发号重复或者服务会处于不可用状态。


技术实现要素:

11.本发明的目的在于升级雪花算法现有技术,提供一种提高分布式数据仓库分布效率及搜索速度的方法,基于“有限时间等待”、“最近时间认定”、“预备位占用”、“时钟同步”的方法,解决时钟回拨的问题,更能满足分布式数据库全局唯一键的性能要求。
12.本发明的技术方案如下:
13.一种提高分布式数据仓库分布效率及搜索速度的方法,其特征在于,包括以下步骤:
14.第一步,首先,根据应用场景重新划分雪花算法的64位,其中:
15.第1位其值一直为0,不使用;
16.第2位开始的41位是时间戳,表示2
41-1个毫秒的值;
17.第43位开始的10位表示机器数,即2
10
=1024台机器;
18.最后12位,前11位表示自增序列,可表示2
11
=2048个数,即每毫秒每台机器可生产2048个有序且不重复的id,最后一位为预备位;
19.重新划分后,每毫秒产生的id数为2048个,可以满足大部分场景;
20.第二步,分阶段处置时间回拨:
21.第一阶段,若时间回拨时间较短,则直接等待,直到机器系统时间回到服务记录的上一次时间;
22.第二阶段,若回拨时间大于限制时间,不等待系统时间,而是利用最后一位预备位,在预备位加1,但是只允许1次大的时钟回拨;
23.第三阶段,若继续发生大于限制时间的时间回拨,则利用“最近时间认定”法,不再获取当前时钟毫秒数,而是使用上一次时钟加1的方式返回毫秒数;
24.第四阶段,服务器定时进行时钟同步,确保服务时间准确,使用雪花算法回归正常。
25.本发明通过解决雪花算法存在的时间回拨问题,有效提高了分布式数据仓库分布效率及搜索速度。
具体实施方式
26.普通雪花算法会因为机器的原因会发生时间回拨,又强依赖机器系统时间的,一旦时间发生回拨,id有可能重复。本发明解决上述问题的方法如下:
27.第一步,首先,根据应用场景重新划分雪花算法的64位,其中:
28.第1位其值一直为0,不使用;
29.第2位开始的41位是时间戳,表示2
41-1个毫秒的值;
30.第43位开始的10位表示机器数,即2
10
=1024台机器;
31.最后12位,11位表示自增序列,可表示2
11
=2048个数,即每毫秒每台机器可生产2048个有序且不重复的id;最后一位为预备位;
32.重新划分后,每毫秒产生的id数为2048个,可以满足大部分场景;
33.第二步,分阶段处置时间回拨:
34.第一阶段,若时间回拨时间较短,例如限制时间为10毫秒,则10毫秒内的回拨可以直接等待,直到机器系统时间回到服务记录的上一次时间。
35.第二阶段,若回拨时间大于限制时间,不等待系统时间,而是利用最后一位预备位,在预备位加1,但是只允许1次大的时钟回拨。
36.第三阶段,若继续发生大于限制时间的时间回拨,则利用“最近时间认定”的方法,不再获取当前时钟毫秒数,而是使用最近一次(即上一次)时钟加1的方式返回毫秒数。
37.第四阶段,服务器定时进行时钟同步,确保服务时间准确,使用雪花算法回归正常。


技术特征:
1.一种提高分布式数据仓库分布效率及搜索速度的方法,其特征在于,包括以下步骤:第一步,首先,根据应用场景重新划分雪花算法的64位,其中:第1位其值一直为0,不使用;第2位开始的41位是时间戳,表示2
41-1个毫秒的值;第43位开始的10位表示机器数,即2
10
=1024台机器;最后12位,前11位表示自增序列,可表示2
11
=2048个数,即每毫秒每台机器可生产2048个有序且不重复的id,最后一位为预备位;重新划分后,每毫秒产生的id数为2048个,可以满足大部分场景;第二步,分阶段处置时间回拨:第一阶段,若时间回拨时间较短,则直接等待,直到机器系统时间回到服务记录的上一次时间;第二阶段,若回拨时间大于限制时间,不等待系统时间,而是利用最后一位预备位,在预备位加1,但是只允许1次大的时钟回拨;第三阶段,若继续发生大于限制时间的时间回拨,则利用“最近时间认定”法,不再获取当前时钟毫秒数,而是使用上一次时钟加1的方式返回毫秒数;第四阶段,服务器定时进行时钟同步,确保服务时间准确,使用雪花算法回归正常。

技术总结
本发明涉及一种提高分布式数据仓库分布效率及搜索速度的方法,首先根据应用场景重新划分雪花算法的64位,其中第1位值一直为0,不使用;第2位开始的41位是时间戳;第43位开始的10位表示机器数;最后12位中,前11位表示自增序列,最后一位为预备位;然后采用“有限时间等待”、“最近时间认定”、“预备位占用”、“时钟同步”的方法,分阶段处置时间回拨问题,能有效提高分布式数据仓库分布效率及搜索速度。高分布式数据仓库分布效率及搜索速度。


技术研发人员:董雪梅
受保护的技术使用者:北京航天长峰科技工业集团有限公司北京分公司
技术研发日:2021.07.25
技术公布日:2023/2/3
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1