【技术实现步骤摘要】
基于字节数组的整数变长有序编码方法、装置及存储介质
本申请涉及数据存储领域,特别是涉及一种基于字节数组的整数变长有序编码方法、装置及存储介质。
技术介绍
目前,NoSQL数据库中,如HBase、RocksDB、LevelDB等底层都是主要支持字节数组的数据格式,其他数据类型需要转换为字节数组再进行存储。对于整数,一般是按整数类型转换为固定长度的字节数组,比如整型(Integer)转换为4个字节的数组,而长整型(Long)转换为8个字节的数组。转换为固定长度字节数组可以实现通过直接对字节数组的比较来比较整数的大小,不需要将值字节数组提前转换为整数。但是,很多时候由于不确定整数是否超过4个字节(即最大值4294967295),又需要直接比较的情况下,会统一采用长整型,即8个字节来存储整数,在整数值大部分比较小的情况下,会出现占用空间浪费的情况。在一些数据库或者存储引擎中,通过将整数最低到高每7位编码到一个字节的后7位里,同时以该字节的首位是否置为1来区分该字节是否最后一个字节。这种编码方式既实现了变长字节存储,又实现了根据字节特征识别整数编码边界的作用,即根据字节最高位来判断字节数组中编码为某一个整数的字节长度,这种场景适用于将整数与其他值编码到一起的场景。但这种编码方式无法实现按字节数组直接对整数进行排序。因此,亟待设计一种方案将整数数据转换为字节数组,使得根据字节数组首字节即可知道整数所占用的字节长度,并可以直接按字节数组对整数大小进行排序。
技术实现思路
基于变长编码、字 ...
【技术保护点】
1.一种基于字节数组的整数变长有序编码方法,用于数据库中的整数数据存储,其特征在于,所述基于字节数组的整数变长有序编码方法包括如下步骤:/n接收输入到数据库的整数数据;/n将接收的所述整数数据转换为字节数组,在所述字节数组的第1个字节中,第1位表示所述整数数据属于非负整数或负整数,之后的位数用来编码补字节长度,所述补字节长度的编码方式为:位数从所述补字节占用的最高位开始计算,当出现位数值置0时,则为补字节长度结束的位置,其中所述补字节长度为从所述补字节占用的最高位开始到结束的位置,位值置1的位数,所述补字节长度结束之后的位数则为所述整数数据的最高几位,所述字节数组的长度等于所述第1个字节中的补字节长度加1,所述整数数据的绝对值由补值和差值相加组成,所述字节数组除第1个字节外,后续的字节与所述第1个字节中表示整数数据的最高几位一起组成所述整数的差值,所述补值根据所述补字节长度来决定,其中将所有整数数据对应的字节长度由小到大进行排序,每个字节长度的补值为上一个字节长度所表达的最大值加1,其中最短字节数组的长度为1个字节;/n将转换为字节数组的所述整数数据存入所述数据库中。/n
【技术特征摘要】
1.一种基于字节数组的整数变长有序编码方法,用于数据库中的整数数据存储,其特征在于,所述基于字节数组的整数变长有序编码方法包括如下步骤:
接收输入到数据库的整数数据;
将接收的所述整数数据转换为字节数组,在所述字节数组的第1个字节中,第1位表示所述整数数据属于非负整数或负整数,之后的位数用来编码补字节长度,所述补字节长度的编码方式为:位数从所述补字节占用的最高位开始计算,当出现位数值置0时,则为补字节长度结束的位置,其中所述补字节长度为从所述补字节占用的最高位开始到结束的位置,位值置1的位数,所述补字节长度结束之后的位数则为所述整数数据的最高几位,所述字节数组的长度等于所述第1个字节中的补字节长度加1,所述整数数据的绝对值由补值和差值相加组成,所述字节数组除第1个字节外,后续的字节与所述第1个字节中表示整数数据的最高几位一起组成所述整数的差值,所述补值根据所述补字节长度来决定,其中将所有整数数据对应的字节长度由小到大进行排序,每个字节长度的补值为上一个字节长度所表达的最大值加1,其中最短字节数组的长度为1个字节;
将转换为字节数组的所述整数数据存入所述数据库中。
2.一种如权利要求1所述的方法,其特征在于:当所述补字节长度超过7时,所述补字节长度编码所占的位数延续到所述字节数组第1字节之后的字节中。
3.一种如权利要求1所述的方法,其特征在于:所述将所有整数数据对应的字节长度由小到大进行排序表示相同符号下的整数数据的排序,所述符号包括非负整数和负整数。
4.一种如权利要求3所述的方法,其特征在于:对不同符号下的整数数据分开进行由小到大的排序,非负整数以顺序进行排序,负整数以逆序进行排序,以实现相同符号下的整数的有序比较。
5.一种基于字节数组的整数变长有序编码装置,用于数据库中的整数数据存储,其特征在于,所述基于字节数组的整数变长有序编码装置包括:
接收装置,其用于接收输入到数据库的整数数据;
转换装置,其用于将接...
【专利技术属性】
技术研发人员:胡俊飞,
申请(专利权)人:北京微步在线科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。