压缩雪花ID集合的数据结构、数据压缩方法和查找方法技术

技术编号:36086568 阅读:19 留言:0更新日期:2022-12-24 11:02
本发明专利技术提供了一种压缩雪花ID集合的数据结构、数据压缩方法和查找方法,涉及数据压缩的技术领域,该压缩雪花ID集合的数据结构包括至少一个数据桶;每个数据桶均包括相应的桶索引和若干个单个压缩雪花ID;桶索引为当前数据桶相对于业务系统开始时间戳的偏移量;当前单个压缩雪花ID的数据索引为当前单个压缩雪花ID与前一单个雪花ID的偏移量;单个压缩雪花ID包括:编码数据头和编码数据体;编码数据头用于存储压缩后的时间戳数据的长度和序列号数据的长度;编码数据体用于存储时间戳数据、机器码数据和序列号数据,该结构解决了现有压缩算法应用于雪花ID时压缩效果差的技术问题,达到了提高压缩比例和压缩稳定性的技术效果。到了提高压缩比例和压缩稳定性的技术效果。到了提高压缩比例和压缩稳定性的技术效果。

【技术实现步骤摘要】
压缩雪花ID集合的数据结构、数据压缩方法和查找方法


[0001]本专利技术涉及数据压缩
,尤其是涉及一种压缩雪花ID集合的数据结构、数据压缩方法和查找方法。

技术介绍

[0002]Snowflake是Twitter开源的分布式ID生成算法,结果是64bit的Long类型的ID,有着全局唯一和有序递增的特点。目前对雪花ID进行压缩通常使用传统的数据压缩算法,现有的数据压缩算法大致可以分为以下五类:变长编码(variable

length codes,VLC)、统计压缩(statistical compression)、字典编码(dictionary encodings)、上下文模型(context modeling)和多上下文模型(multicontext modeling),每类算法的变种在输入数据、算法性能、内存要求以及输出大小方面存在细微的差别,具体包括:Huffman编码、LZ族系(如串表压缩算法LZW)、算术编码等几种常见通用的数据压缩算法。
[0003]上述比较通用的压缩算法的压缩效果很大程度上受限于压缩内容,通常依赖字符集的规模、字符的概率分布以及需要压缩内容的大小,一般情况下字符集小、字符的分布概率有明显的偏向、需要压缩的内容越大,使用上述压缩算法的压缩效果越好。也就是说,利用现有的数据压缩算法对雪花ID进行压缩,存在压缩效果稳定性差的问题。

技术实现思路

[0004]本专利技术的目的在于提供一种压缩雪花ID集合的数据结构、数据压缩方法和查找方法,以缓解现有压缩算法应用于雪花ID时压缩效果差的技术问题。
[0005]其中一个方面,提供一种压缩雪花ID集合的数据结构,包括至少一个数据桶;每个上述数据桶均包括相应的桶索引和若干个单个压缩雪花ID;上述桶索引为当前上述数据桶相对于业务系统开始时间戳的偏移量;当前单个压缩雪花ID的数据索引为当前上述单个压缩雪花ID与前一单个雪花ID的偏移量;
[0006]上述单个压缩雪花ID包括:编码数据头和编码数据体;上述编码数据头用于存储压缩后的时间戳数据占用位数和序列号数据占用位数;上述编码数据体用于存储时间戳数据、机器码数据和序列号数据。
[0007]本专利技术提供的压缩雪花ID集合的数据结构能将大量雪花ID数据装入有限的内存中,提高了雪花ID的数据压缩比例。
[0008]另一方面,提供一种雪花ID的数据压缩方法,该方法包括:
[0009]将预先定义的雪花ID进行重组,生成单个压缩雪花ID;上述单个压缩雪花ID包括编码数据头和编码数据体;上述编码数据头用于存储压缩后的时间戳数据占用位数和序列号数据占用位数;上述编码数据体用于存储时间戳数据、机器码数据和序列号数据;
[0010]基于每个上述单个压缩雪花ID生成对应的数字索引,并将若干个上述单个压缩雪花ID按照上述数字索引生成压缩雪花ID集合。
[0011]本专利技术提供的雪花ID的数据压缩方法,通过对单个雪花ID进行压缩以及对雪花ID
集合进行压缩,提高了雪花ID数据压缩的效果,使大量雪花ID数据装入有限的内存成为可能,减少了对外部数据源的依赖。
[0012]在一种实施方式中,上述将预先定义的雪花ID进行重组,生成单个压缩雪花ID,包括:
[0013]删除预先定义的雪花ID中未存储实际数据的位,生成编码数据体;
[0014]基于上述编码数据体中存储的实际数据的连续位的占用数量,生成编码数据头;
[0015]根据上述编码数据头和上述编码数据体组成上述单个压缩雪花ID。
[0016]在一种实施方式中,上述预先定义的雪花ID包括:初始时间戳数据位、初始机器码数据位和初始序列号数据位;
[0017]上述初始时间戳数据位包括:无效时间戳位和有效时间戳位;上述有效时间戳位用于存储实际时间戳数据;上述初始机器码数据位包括:无效机器码位和有效机器码位;上述有效机器码位用于存储实际机器码数据;上述初始序列号数据位包括:无效序列号位和有效序列号位;上述有效序列号位用于存储实际序列号数据;
[0018]删除预先定义的雪花ID中未存储实际数据的位,生成编码数据体的步骤,包括:
[0019]将上述初始时间戳数据位中的无效时间戳位删除,生成中间时间戳数据位;
[0020]将上述初始机器码数据位中的无效机器码位删除,生成中间机器码数据位;
[0021]将上述初始序列号数据位中的无效序列号位删除,生成中间序列号数据位;
[0022]根据上述中间时间戳数据位、上述中间机器码数据位和上述中间序列号数据位,生成编码数据体。
[0023]在一种实施方式中,基于上述编码数据体中存储的实际数据的连续位占用数量,生成编码数据头的步骤,包括:
[0024]将上述实际时间戳数据占用的连续位的数量,作为上述中间时间戳数据位的编码,生成时间戳编码数据头;
[0025]将上述实际序列号数据占用的连续位的数量,作为上述中间序列号数据位的编码,生成序列号编码数据头;
[0026]根据上述时间戳编码数据头和上述序列号编码数据头,生成单个压缩雪花ID的上述编码数据头。
[0027]在一种实施方式中,上述压缩雪花ID集合包括至少一个数据桶;每个上述数据桶均包括相应的桶索引和若干个上述单个压缩雪花ID;上述桶索引为当前上述数据桶相对于业务系统开始时间戳的偏移量;
[0028]基于每个上述单个压缩雪花ID生成对应的数字索引,并将若干个上述单个压缩雪花ID按照上述数字索引生成压缩雪花ID集合,包括:
[0029]基于上述单个压缩雪花ID的时间戳数据与当前上述桶索引的偏移量,生成当前上述数据桶的第一个ID;
[0030]基于当前上述数据桶的第N个ID存储的上述单个压缩雪花ID的时间戳数据,与第N

1个ID存储的上述单个压缩雪花ID的时间戳数据的偏移量,生成当前上述数据桶的第N个ID;其中,N为大于1的整数。
[0031]另一方面,提供一种雪花ID的数据查找方法,应用于上述第一方面中的压缩雪花ID集合,该数据查找方法包括:
[0032]利用索引函数index确定查找目标所在的目标数据桶;
[0033]将上述查找目标相对于上述索引函数进行压缩,并与上述目标数据桶内的第一个ID进行比较;
[0034]如果上述查找目标与上述目标数据桶内的第一个ID相同,则确定上述查找目标为最终目标雪花ID。
[0035]本专利技术提供的雪花ID的数据查找方法,首先利用索引函数查找目标所在的数据桶,缩小查找范围,然后采用将查找目标压缩后与目标数据桶内的ID逐个进行比较的方法进行查找,提高了数据查询的性能,提升了关键服务的稳定性。
[0036]在一种实施方式中,该数据查找方法还包括:如果上述查找目标与上述目标数据桶内的第一个ID不相同,则将上述查找目标相对于上述目标数据桶内的第一个ID进行压缩,并与上述目标数据桶内的第二个ID进行比较;
...

【技术保护点】

【技术特征摘要】
1.一种压缩雪花ID集合的数据结构,其特征在于,包括至少一个数据桶;每个所述数据桶均包括相应的桶索引和若干个单个压缩雪花ID;所述桶索引为当前所述数据桶相对于业务系统开始时间戳的偏移量;当前单个压缩雪花ID的数据索引为当前所述单个压缩雪花ID与前一单个雪花ID的偏移量;所述单个压缩雪花ID包括:编码数据头和编码数据体;所述编码数据头用于存储压缩后的时间戳数据占用位数和序列号数据占用位数;所述编码数据体用于存储时间戳数据、机器码数据和序列号数据。2.一种雪花ID的数据压缩方法,其特征在于,包括:将预先定义的雪花ID进行重组,生成单个压缩雪花ID;所述单个压缩雪花ID包括编码数据头和编码数据体;所述编码数据头用于存储压缩后的时间戳数据占用位数和序列号数据占用位数;所述编码数据体用于存储时间戳数据、机器码数据和序列号数据;基于每个所述单个压缩雪花ID生成对应的数字索引,并将若干个所述单个压缩雪花ID按照所述数字索引生成压缩雪花ID集合。3.根据权利要求2所述的方法,其特征在于,将预先定义的雪花ID进行重组,生成单个压缩雪花ID,包括:删除预先定义的雪花ID中未存储实际数据的位,生成编码数据体;基于所述编码数据体中存储的实际数据的连续位的占用数量,生成编码数据头;根据所述编码数据头和所述编码数据体组成所述单个压缩雪花ID。4.根据权利要求3所述的方法,其特征在于,所述预先定义的雪花ID包括:初始时间戳数据位、初始机器码数据位和初始序列号数据位;所述初始时间戳数据位包括:无效时间戳位和有效时间戳位;所述有效时间戳位用于存储实际时间戳数据;所述初始机器码数据位包括:无效机器码位和有效机器码位;所述有效机器码位用于存储实际机器码数据;所述初始序列号数据位包括:无效序列号位和有效序列号位;所述有效序列号位用于存储实际序列号数据;删除预先定义的雪花ID中未存储实际数据的位,生成编码数据体的步骤,包括:将所述初始时间戳数据位中的无效时间戳位删除,生成中间时间戳数据位;将所述初始机器码数据位中的无效机器码位删除,生成中间机器码数据位;将所述初始序列号数据位中的无效序列号位删除,生成中间序列号数据位;根据所述中间时间戳数据位、所述中间机器码数据位和所述中间序列号数据位,生成编码数据体。5.根据权利要求4所述的方法,其特征在于,基于所述编码数据体中存储的实际数据的连续位占用数量,生成编码数据头的步骤,包括:将所述实际时间戳数据占用的连续位的数量,作为所述中间时间戳数据位的编码,生成时间戳编码数据头;将所述实际序列号数据占用的连续位的数量,作为所述中...

【专利技术属性】
技术研发人员:常玉春张文杰
申请(专利权)人:宁波小遛共享信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1