一种数组构建、数组查询的方法、装置及电子设备制造方法及图纸

技术编号:18302196 阅读:21 留言:0更新日期:2018-06-28 12:04
本申请公开了一种数组构建的方法、装置、一种电子设备、一种数组查询的方法、装置以及另一种电子设备。其中,所述数组构建的方法包括:根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;将比特位数作为数组元素的容量建立数组;将各字段的取值存储到数组的数组元素内。采用上述方法通过键值对的键值所占用的最大空间,将bitmap数组中数组元素的容量进行扩容,将常规的数组元素的容量从一个bit位扩展到能存放下键值所占用的最大内存空间的bit位数,并以扩展容量后的数组元素为单位创建数组,扩展了使用bitmap数组查询的使用场景,这种结构相对于hash表查询,不进行hash值的函数的计算,也无hash值的冲突处理,只需要O(1)的时间复杂度,查询效率高。

Array construction, array query method, device and electronic device

The application discloses a method for constructing an array, a device, an electronic device, an array inquiry method, a device and another electronic device. Among them, the method of constructing the array consists of determining the bits required to store the values of each field according to the values of the fields to be stored; and setting up an array of bits as the capacity of the array elements; storing the values of each field into the array element of the array. By using the above method, the capacity of the array elements in the bitmap array is expanded to expand the capacity of the array elements in the array, and the capacity of the conventional array elements is extended from one bit bit to the bit digits of the maximum memory space occupied by the key value, and the number of array elements after the extended capacity is created as a unit. Group, extended use of the use of bitmap array query scenario, which is relative to the hash table query, no hash value function calculation, nor the hash value conflict processing, only need O (1) time complexity, high query efficiency.

【技术实现步骤摘要】
一种数组构建、数组查询的方法、装置及电子设备
本申请涉及数据处理
,具体涉及一种数组构建的方法以及一种数组查询的方法;本申请同时涉及一种数组构建的装置、一种电子设备、一种数组查询的装置以及另一种电子设备。
技术介绍
随着计算机信息技术的快速发展,越来越多的用户对数据的存储和查询提出了更高的要求。目前在大量数据信息中进行特定数据元素的查询时,常使用bitmap(位图)数据结构实现快速查询以及存储数据。bitmap数据结构以key-value(键值对)的数据存储都是基于一个字段作为key,将bitmap中每一个bit位来表示一个key对应的value,key不单独占用存储空间,通过在bitmap中的偏移bit来表示。由于bitmap是使用每一个bit位单独存放value,所以value的值为只能为0或1,例如:用数字表示的用户ID时,key可以表示为int类型,而且value只有两个值可以表示为用户在线或不在线,此时使用bitmap数组来查询非常高效。而当value为字符或字符串类型,不能使用数值类型来表达时,就无法使用bitmap数据结构来查询数据元素,此时常使用hashtable(hash表)来提高查询效率。使用hash表来进行查询时,在数据元素的数目较大的情况下,由于对key进行hash值计算时,计算出的hash值可能会存在冲突,在hash值冲突以及hash桶遍历都需要一些计算资源,即使增加表项容量,也并不能改善冲突率,同时也增加了内存消耗。由此可见,在现有的快速查询方案下,如果使用bitmap数据结构来查询数据元素,则要求value只能包含0或1两个值,使用场景有限;对于不能使用bitmap数据结构来查询数据元素的情况下,使用hash表作为替代方案时,计算hash值以及在hash冲突时查询的计算代价高,相对于bitmap的时间复杂度较高。
技术实现思路
本申请提供了一种数组构建的方法以及一种数组查询的方法,以解决现有技术中的上述问题。本申请同时提供了一种数组构建的装置、一种电子设备、一种数组查询的装置以及另一种电子设备。本申请实施例提供了一种数组构建的方法,所述数组构建的方法,包括:根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;将所述比特位数作为数组元素的容量建立数组;将各字段的取值存储到所述数组的数组元素内。可选的,所述字段,包括:键值对。可选的,所述根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数,包括:根据待存储的各键值对的键值,确定存储最大键值占用的比特位数;或者根据待存储的各键值对预设的键值容量,确定所述键值容量占用的比特位数。可选的,所述将所述比特位数作为数组元素的容量建立数组时,包括:按照所述数组元素在所述数组内的偏移位置,为所述数组元素设置下标。可选的,所述将各字段的取值存储到所述数组的数组元素内,包括:将各键值对的键值存储到所述数组中下标与各键值对的键名相对应的数组元素内。可选的,若所述键值对的键值类型为文本型时,则为所述键值创建键值映射数组;所述键值映射数组用于存储各键值对的键值。可选的,通过键值映射数组实现数组的构建,需要采取以下步骤:将各键值对的键值,与存储所述键值的键值映射数组的数组元素的下标,建立映射关系;在所述根据待存储的各字段的取值的步骤中,所述待存储的各键值对的键值为:存储所述键值的键值映射数组的数组元素的下标。可选的,若所述键值对的键名类型为文本型时,则为所述键名创建键名映射数组;所述键名映射数组用于存储各键值对的键名。可选的,通过键名映射数组实现数组的构建,需要采取以下步骤:将各键值对的键名,与存储所述键名的键名映射数组的数组元素的下标,建立映射关系;在所述将各字段的取值存储到所述数组的数组元素内的步骤中,包括:将各键值对的键值存储到所述数组中下标与各键值对的键名相对应的数组元素内;所述各键值对的键名为:存储所述键名的键名映射数组的数组元素的下标。可选的,所述数组为bitmap数组。相应的,本申请实施例还提供了一种数组构建的装置,所述数组构建的装置,包括:比特位确定单元,用于根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;数组建立单元,用于将所述比特位数作为数组元素的容量建立数组;字段存储单元,用于将各字段的取值存储到所述数组的数组元素内。此外,本申请实施例还提供了一种电子设备,包括:显示器;处理器;存储器,用于存储数组构建程序,所述程序在被所述处理器读取执行时,执行如下操作:根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;将所述比特位数作为数组元素的容量建立数组;将各字段的取值存储到所述数组的数组元素内。此外,本申请实施例还提供了一种数组查询的方法,所述数组查询的方法,包括:获取待查询的字段信息;根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;从所述数组中获取与所述字段信息相对应的数组元素。可选的,所述字段信息,包括:键值对的键名。可选的,所述根据所述字段信息查询相应的数组,包括:根据键值对的键名,获取所述键名在所述数组内的偏移值;确定所述数组内下标与所述偏移值相对应的数组元素。可选的,若所述待查询的字段信息的类型为文本型时,则获取所述数组在构建时创建的键名映射数组。可选的,在所述根据所述字段信息查询相应的数组的步骤之前,包括:根据所述键值对的键名查询键名映射数组;获取存储所述键名的键名映射数组的数组元素的下标;将所述字段信息替换为所述数组元素的下标。可选的,在所述从所述数组中获取与所述字段信息相对应的数组元素的步骤之后,包括:若所述数组在构建时,创建了键值映射数组,则根据所述数组元素,获取所述数组元素在所述键值映射数组内的偏移值;在所述键值映射数组内确定下标与所述偏移值相对应的数组元素,获取键值。可选的,所述数组为bitmap数组。相应的,本申请实施例还提供了一种数组查询的装置,所述数组查询的装置,包括:字段获取单元,用于获取待查询的字段信息;数组查询单元,用于根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;元素获取单元,用于从所述数组中获取与所述字段信息相对应的数组元素。此外,本申请实施例还提供了另一种电子设备,包括:显示器;处理器;存储器,用于存储数组查询程序,所述程序在被所述处理器读取执行时,执行如下操作:获取待查询的字段信息;根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;从所述数组中获取与所述字段信息相对应的数组元素。与现有技术相比,本申请具有以下优点:本申请提供的一种数组构建的方法、装置以及电子设备,通过根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;将所述比特位数作为数组元素的容量建立数组;将各字段的取值存储到所述数组的数组元素内。所述技术方案通过键值对的键值所占用的最大内存空间,将bitmap数组中数组元素的容量进行扩容,将常规的数组元素的容量从一个bit位扩展到能存放下所述键值所占用的最大内存空间的bit位数,并以扩展容量后的数组元素为单位创建数组,扩展了使用bitmap数组查询的使用场景;并通过创建映射数组,将键名或键值不能转化为整数类型的键值对进行映射,将映本文档来自技高网
...
一种数组构建、数组查询的方法、装置及电子设备

【技术保护点】
1.一种数组构建的方法,其特征在于,包括:根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;将所述比特位数作为数组元素的容量建立数组;将各字段的取值存储到所述数组的数组元素内。

【技术特征摘要】
1.一种数组构建的方法,其特征在于,包括:根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;将所述比特位数作为数组元素的容量建立数组;将各字段的取值存储到所述数组的数组元素内。2.根据权利要求1所述的数组构建的方法,其特征在于,所述字段,包括:键值对。3.根据权利要求2所述的数组构建的方法,其特征在于,所述根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数,包括:根据待存储的各键值对的键值,确定存储最大键值占用的比特位数;或者根据待存储的各键值对预设的键值容量,确定所述键值容量占用的比特位数。4.根据权利要求3所述的数组构建的方法,其特征在于,所述将所述比特位数作为数组元素的容量建立数组时,包括:按照所述数组元素在所述数组内的偏移位置,为所述数组元素设置下标。5.根据权利要求4所述的数组构建的方法,其特征在于,所述将各字段的取值存储到所述数组的数组元素内,包括:将各键值对的键值存储到所述数组中下标与各键值对的键名相对应的数组元素内。6.根据权利要求2所述的数组构建的方法,其特征在于,若所述键值对的键值类型为文本型时,则为所述键值创建键值映射数组;所述键值映射数组用于存储各键值对的键值。7.根据权利要求6所述的数组构建的方法,其特征在于,通过键值映射数组实现数组的构建,需要采取以下步骤:将各键值对的键值,与存储所述键值的键值映射数组的数组元素的下标,建立映射关系;在所述根据待存储的各字段的取值的步骤中,所述待存储的各键值对的键值为:存储所述键值的键值映射数组的数组元素的下标。8.根据权利要求2所述的数组构建的方法,其特征在于,若所述键值对的键名类型为文本型时,则为所述键名创建键名映射数组;所述键名映射数组用于存储各键值对的键名。9.根据权利要求8所述的数组构建的方法,其特征在于,通过键名映射数组实现数组的构建,需要采取以下步骤:将各键值对的键名,与存储所述键名的键名映射数组的数组元素的下标,建立映射关系;在所述将各字段的取值存储到所述数组的数组元素内的步骤中,包括:将各键值对的键值存储到所述数组中下标与各键值对的键名相对应的数组元素内;所述各键值对的键名为:存储所述键名的键名映射数组的数组元素的下标。10.根据权利要求1-10任意一项所述的数组构建的方法,其特征在于,所述数组为bitmap数组。11.一种数组构建的装置,其特征在于,包括:比特位确定单元,用于根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;数组建立单元,用于将所述比特位数作为数组元素的容量建立数组;...

【专利技术属性】
技术研发人员:代兵
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1