一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

信息存储方法、装置、电子设备、存储介质及程序产品与流程

2021-11-03 12:53:00 来源:中国专利 TAG:


1.本公开实施例涉及大数据技术领域,具体涉及一种信息存储方法、装置、电子设备、存储介质及程序产品。


背景技术:

2.在业务系统中,为了便于信息存储以及信息查询,通常会给不同对象例如用户、商品、订单等赋予不同的编号。编号通常是字符串,并且是连续的。编号的组成部分可以按业务规则进行设计和编排,但大多数编号包含一段以数字组合而成的序列,而且往往是按照十进制数字顺序递增。
3.例如,某个业务系统中给客户编号如下:2021000000、20210000001、20210000002、20210000003...20219999998、20219999999。所有以字符串“2021”作为起始字符串的客户编号共有1000万,但是这种编号体系下,面临如下问题:基于业务分析等需求,需要从中随机挑选1000万个客户编号中50%的目标数据,并且要将筛选出的目标数据保存下来,便于业务分析。但是,如果直接将上述1000万个客户编号中的50%数据存储起来,不但占用存储空间,而且查询效率也会非常低下。
4.因此,如何在存储随机挑选出的目标数据时,能够满足存储空间和查询效率双重指标是当前需要解决的技术问题之一。


技术实现要素:

5.本公开实施例提供一种信息存储方法、装置、电子设备、存储介质及程序产品。
6.第一方面,本公开实施例中提供了一种信息存储方法,包括:
7.获取待保存的多个目标数据;所述目标数据为连续多个序列数据中的其中一部分;
8.确定所述目标数据在所述序列数据中的区间范围;
9.基于所述区间范围确定比特数组的长度,以及生成所述比特数组;所述比特数组中的一位表示所述序列数据中位于所述区间范围内的其中一个数据;
10.基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中每一位的值能够表示出对应于所述目标数据还是非目标数据;
11.将所述比特数组存储至存储空间中。
12.进一步地,所述方法还包括:
13.从所述存储空间中读取所述比特数组;
14.基于所述比特数组中每一位的值确定所述目标数据。
15.进一步地,所述方法还包括:
16.统计所述目标数据的总数量;
17.基于所述总数量以及所述区间范围确定所述目标数据在所述序列数据中的集中度;
18.在所述集中度小于或等于预设阈值时,直接将所述目标数据记录在存储空间中。
19.进一步地,基于所述区间范围确定比特数组的长度,以及生成所述比特数组,包括:
20.将所述比特数组的长度设置为大于或等于所述区间范围的长度。
21.进一步地,基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中每一位的值能够表示出对应于所述目标数据还是非目标数据,包括:
22.确定所述目标数据中的每一个在所述区间范围内的位置,将所述比特数组中相对应位置处的比特位赋值为第一预设值;
23.将所述比特数组中对应于所述区间范围内的其他位置处的比特位赋值为第二预设值。
24.进一步地,将所述比特数组存储至存储空间中,包括:
25.将所述区间范围以及所述比特数组关联存储在存储空间中。
26.进一步地,所述比特数组中的每一位被赋值为第一预设值或者第二预设值,基于所述比特数组中每一位的值确定所述目标数据,包括:
27.遍历所述比特数组中的每一位;
28.确定所述比特数组中值为第一预设值的比特位在所述比特数组中的相对位置;
29.基于所述相对位置以及所述区间范围的两个端值之一确定所述目标数据。
30.第二方面,本公开实施例中提供了一种信息存储方法,包括:
31.获取待保存的多个目标数据;所述目标数据为连续多个序列数据中的其中一部分;
32.确定所述目标数据在所述连续多个序列数据中的集中度;
33.在所述集中度大于预设阈值时,利用比特数组记录所述目标数据,以及将所述比特数组存储至存储空间;
34.在所述集中度小于或等于预设阈值时,直接将所述目标数据存储至所述存储空间。
35.进一步地,确定所述目标数据在所述连续多个序列数据中的集中度,包括:
36.确定所述目标数据在所述序列数据中的区间范围;
37.统计所述目标数据的总数量;
38.基于所述总数量以及所述区间范围确定所述目标数据在所述序列数据中的集中度。
39.进一步地,在所述集中度大于预设阈值时,利用比特数组记录所述目标数据,以及将所述比特数组存储至存储空间,包括:
40.在所述集中度大于预设阈值时,基于所述区间范围确定比特数组的长度,以及生成所述比特数组;
41.基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中的至少一位表示所述目标数据中的其中一个;
42.将所述比特数组存储至存储空间中。
43.进一步地,所述方法还包括:
44.从所述存储空间中读取所述比特数组;
45.基于所述比特数组中每一位的值确定所述目标数据。
46.进一步地,基于所述区间范围确定比特数组的长度,以及生成所述比特数组,包括:
47.将所述比特数组的长度设置为大于或等于所述区间范围的长度。
48.进一步地,基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中的至少一位代表所述目标数据中的其中一个,包括:
49.确定所述目标数据中的每一个在所述区间范围内的位置,将所述比特数组中相对应位置处的比特位赋值为第一预设值;
50.将所述比特数组中对应于所述区间范围内的其他位置处的比特位赋值为第二预设值。
51.进一步地,将所述比特数组存储至存储空间中,包括:
52.将所述区间范围以及所述比特数组关联存储在存储空间中。
53.进一步地,所述比特数组中的每一位被赋值为第一预设值或者第二预设值,基于所述比特数组中每一位的值确定所述目标数据,包括:
54.遍历所述比特数组中的每一位;
55.确定所述比特数组中值为第一预设值的比特位在所述比特数组中的相对位置;
56.基于所述相对位置以及所述区间范围的两个端值之一确定所述目标数据。
57.第三方面,本公开实施例中提供了一种信息存储装置,包括:
58.获取模块,被配置为获取待保存的多个目标数据;所述目标数据为连续多个序列数据中的其中一部分;
59.第一确定模块,被配置为确定所述目标数据在所述序列数据中的区间范围;
60.第二确定模块,被配置为基于所述区间范围确定比特数组的长度,以及生成所述比特数组;所述比特数组中的一位表示所述序列数据中位于所述区间范围内的其中一个数据;
61.赋值模块,被配置为基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中每一位的值能够表示出对应于所述目标数据还是非目标数据;
62.第一存储模块,被配置为将所述比特数组存储至存储空间中。
63.第四方面,本公开实施例中提供了一种信息存储装置,包括:
64.第二获取模块,被配置为获取待保存的多个目标数据;所述目标数据为连续多个序列数据中的其中一部分;
65.第三确定模块,被配置为确定所述目标数据在所述连续多个序列数据中的集中度;
66.记录模块,被配置为在所述集中度大于预设阈值时,利用比特数组记录所述目标数据,以及将所述比特数组存储至存储空间;
67.第二存储模块,被配置为在所述集中度小于或等于预设阈值时,直接将所述目标数据存储至所述存储空间。
68.所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
69.在一个可能的设计中,上述装置的结构中包括存储器和处理器,所述存储器用于
存储一条或多条支持上述装置执行上述对应方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。上述装置还可以包括通信接口,用于上述装置与其他设备或通信网络通信。
70.第五方面,本公开实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条支持上述任一装置执行上述对应方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。上述任一装置还可以包括通信接口,用于与其他设备或通信网络通信。
71.第六方面,本公开实施例提供了一种计算机可读存储介质,用于存储上述任一装置所用的计算机指令,其包含用于执行上述任一方法所涉及的计算机指令。
72.第七方面,本公开实施例提供了一种计算机程序产品,其包含计算机指令,该计算机指令被处理器执行时用于实现上述任一方面所述方法的步骤。
73.本公开实施例提供的技术方案可包括以下有益效果:
74.本公开实施例针对连续多个序列数据中的部分目标数据进行存储时,通过确定目标数据在连续多个序列数据中的区间范围,进而再基于该区间范围确定比特数组的长度,并生成相应长度的比特属性,并基于目标数据对比特数组的每一位赋值,使得比特数组中的每一位能够表示出其对应于所述目标数据还是非目标数据。通过这种方式,对于连续多个序列数据中随机挑选的部分目标数据进行存储时,可以不直接将目标数据存储至存储空间中,而是利用一占空间较小的比特数组来存储,能够节省存储空间的同时,提高对目标数据的业务统计分析等处理效率。
75.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开实施例。
附图说明
76.结合附图,通过以下非限制性实施方式的详细描述,本公开实施例的其它特征、目的和优点将变得更加明显。在附图中:
77.图1示出根据本公开一实施方式的信息存储方法的流程图;
78.图2示出根据本公开另一实施方式的信息存储方法的流程图;
79.图3示出根据本公开一实施方式的信息存储方法的应用场景示意图;
80.图4示出根据本公开一实施方式的信息存储装置的结构框图;
81.图5示出根据本公开另一实施方式的信息存储装置的结构框图;
82.图6是适于用来实现根据本公开一实施方式的信息存储方法的计算机系统的结构示意图。
具体实施方式
83.下文中,将参考附图详细描述本公开实施例的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
84.在本公开实施例中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其
他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
85.另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开实施例。
86.上文提及,在业务系统中,为了便于信息存储以及信息查询,通常会给不同对象例如用户、商品、订单等赋予不同的编号。编号通常是字符串,并且是连续的。编号的组成部分可以按业务规则进行设计和编排,但大多数编号包含一段以数字组合而成的序列,而且往往是按照十进制数字顺序递增。
87.例如,某个业务系统中给客户编号如下:2021000000、20210000001、20210000002、20210000003...20219999998、20219999999。所有以字符串“2021”作为起始字符串的客户编号共有1000万,但是这种编号体系下,面临如下问题:基于业务分析等需求,需要从中随机挑选1000万个客户编号中50%的目标数据,并且要将筛选出的目标数据保存下来,便于业务分析。但是,如果直接将上述1000万个客户编号中的50%数据存储起来,不但占用存储空间,而且查询效率也会非常低下。
88.而计算保存数据的内存占用空间在使用不同的开发语言时或许有一定的差异,但是基本上不会有较大出入。
89.下面以java平台为例测算上述1000万个客户编号中的50%数据的实际内存使用情况。
90.为了计算对象内存的使用情况,需要引入以下依赖包:
91.<dependency>
92.<groupid>org.apache.lucene</groupid>
93.<artifactid>lucene

core</artifactid>
94.<version>4.0.0</version>
95.</dependency>
96.用java的hashset随机保存50%的客户编号,代码如下:
97.@test
98.public void test1(){
99.set<string>cifnoset=new hashset<>();
100.random r=new random();
101.for(int i=0;i<10000000;i ){
102.if(r.nextboolean()){
103.cifnoset.add("2021" format(i));
104.}
105.}
106.system.out..println(ramusageestimator.humansizeof(cifnoset));
107.}
108.private string format(int i){
109.string tmp="0000000";
110.string si=string.valueof(i);
111.return tmp.substring(0,si.length()) si;
112.}
113.打印结果:
114.489.8m
115.也就是说,使用的hashset随机保存50%的客户编号,实际所需要的内存高达489.8m,这对于一般jvm设置在2g左右的应用系统而言,是难以接受的。
116.因此,本公开实施例提出了一种信息存储方法。该信息存储方法包括:获取待保存的多个目标数据;所述目标数据为连续多个序列数据中的其中一部分;确定所述目标数据在所述序列数据中的区间范围;基于所述区间范围确定比特数组的长度,以及生成所述比特数组;基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中的至少一位表示所述目标数据中的其中一个;将所述比特数组存储至存储空间中。该方法中,以比特数组的形式保存连续序列数据中的一部分数据,并且这部分数据可以是连续序列数据中随机挑选的数据。通过这种方式,可以节省随机挑选的一部分序列数据的存储空间,在应用系统中,能够通过将随机挑选的序列数据保持在内存中,并高效地对这些保存在内存中的序列数据进行分析等处理。
117.图1示出根据本公开一实施方式的信息存储方法的流程图,如图1所示,所述信息存储方法包括以下步骤:
118.在步骤s101中,获取待保存的多个目标数据;所述目标数据为连续多个序列数据中的其中一部分;
119.在步骤s102中,确定所述目标数据在所述序列数据中的区间范围;
120.在步骤s103中,基于所述区间范围确定比特数组的长度,以及生成所述比特数组;所述比特数组中的一位表示所述序列数据中位于所述区间范围内的其中一个数据;
121.在步骤s104中,基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中每一位的值能够表示出对应于所述目标数据还是非目标数据;
122.在步骤s105中,将所述比特数组存储至存储空间中。
123.上文提及,在业务系统中,为了便于信息存储以及信息查询,通常会给不同对象例如用户、商品、订单等赋予不同的编号。编号通常是字符串,并且是连续的。编号的组成部分可以按业务规则进行设计和编排,但大多数编号包含一段以数字组合而成的序列,而且往往是按照十进制数字顺序递增。
124.例如,某个业务系统中给客户编号如下:2021000000、20210000001、20210000002、20210000003...20219999998、20219999999。所有以字符串“2021”作为起始字符串的客户编号共有1000万,但是这种编号体系下,面临如下问题:基于业务分析等需求,需要从中随机挑选1000万个客户编号中50%的目标数据,并且要将筛选出的目标数据保存下来,便于业务分析。但是,如果直接将上述1000万个客户编号中的50%数据存储起来,不但占用存储空间,而且查询效率也会非常低下。
125.在本公开一实施方式中,该信息存储方法可适用于业务系统上执行。
126.在本公开一实施方式中,目标数据可以是从连续多个序列数据中随机筛选出的一部分数据,该序列数据中的每一个可以由一串数字构成,并且多个序列数据在数值上可以是连续的。也即,连续多个序列数据可以是在数值上连续的数字串数据。
127.在一些实施例中,多个序列数据可以是用于为业务对象比如用户、商户、商品等进
行编号的数据,目标数据可以是其中一部分对象的编号数据。为了统计分析或者其他目的,需要对一部分对象进行处理时,业务系统可以从所有对象中随机或者其他筛选方式挑选出一部分目标对象,并将该部分目标对象的编号数据也即目标数据存储在存储空间比如内存中,以便做进一步处理。
128.为了将目标数据存储在存储空间中,可以先获取筛选出的多个目标数据,并确定目标数据在序列数据中的区间范围,该区间范围的两个端值可以是目标数据中的最大序列值和最小序列值。由于多个目标数据为连续多个序列数据中的一部分数据,且多个序列数据为在数值上连续的数据,因此多个目标数据在数值上具有一定的序列关系。目标数据的序列最大值可以是多个目标数据中数值最大的数据,或者从排序上看位于最后的数据,而目标数据的序列最小值可以是多个数据中数值最小的数据,或者从排序上看位于最前面的数据。基于序列最大值以及序列最小值可以确定多个目标数据在连续多个序列数据中的区间范围,进而可以根据该区间范围确定需要多少个比特位来存储多个目标数据。
129.为了确定比特数组的长度,可以先确定序列最大值以及序列最小值之间的第一数量,需要说明的是,该第一数量可以为包括序列最大值和序列最小值在内的数量。例如,多个序列数据包括10个,分别为20210000000

20210000009中的各个序列数据;基于某项业务需求,从中随机抽取了5个目标数据,分别为20210000000、20210000001、20210000004、20210000005、20210000007,该5个目标数据中序列最大值为20210000007,序列最小值为20210000000,可以确定20210000000与20210000007之间的包括8个数据,该5个目标数据在序列数据中的区间范围为0

8,共包括8个数据。
130.考虑到需要由比特数组来表示所挑选出的5个目标数据,因此可以将比特数组的长度设置为8。当然,可以理解的是也可以将比特数组的长度设置为其他值,只要该比特数组能够表示出目标数据为序列数据中的哪些数据即可。
131.在一些实施例中,可以将比特数组的长度设置成与目标数据在序列数据中所占的区间范围一致,通过这种方式可以由比特数组中的每一位表示所述区间范围内的每一个序列数据。因此,可以通过对比特数组中的每一位赋予相应的值来表示序列数据中的目标数据或者非目标数据。
132.将比特数组存储至存储空间中,由于比特数组中的每一位代表序列数据中的一个数据,并且通过比特数组中每一位的值可以确定哪个是比特数据,故而通过将该比特数组存储在存储空间的方式,能够实现对目标数据的存储。
133.本公开实施例针对连续多个序列数据中的部分目标数据进行存储时,通过确定目标数据在连续多个序列数据中的区间范围,进而再基于该区间范围确定比特数组的长度,并生成相应长度的比特属性,并基于目标数据对比特数组的每一位赋值,使得比特数组中的每一位能够表示出其对应于所述目标数据还是非目标数据。通过这种方式,对于连续多个序列数据中随机挑选的部分目标数据进行存储时,可以不直接将目标数据存储至存储空间中,而是利用一占空间较小的比特数组来存储,能够节省存储空间的同时,提高对目标数据的业务统计分析等处理效率。
134.在本公开一实施方式中,所述方法还包括:
135.从所述存储空间中读取所述比特数组;
136.基于所述比特数组中每一位的值确定所述目标数据。
137.该可选的实施方式中,利用比特数组存储目标数据后,在对目标数据进行分析处理时,可以从存储空间读取出该比特数组,并基于比特数组中每一位的赋值确定目标数据为序列数据中的哪些数据,进而再对目标数据进行处理。
138.在本公开一实施方式中,所述方法还包括:
139.统计所述目标数据的总数量;
140.基于所述总数量以及所述区间范围确定所述目标数据在所述序列数据中的集中度;
141.在所述集中度小于或等于预设阈值时,直接将所述目标数据记录在存储空间中。
142.该可选的实现方式中,统计目标数据的总数量,之后再根据该目标数据的总数量与区间范围之间的关系确定目标数据在连续多个序列数据中的集中度。可以理解的是,目标数据的总数量较大,在区间范围内占据密度较高,则可以认为该目标数据的集中度高,而目标数据的总数量较小,在区间范围内占据的密度较低,则可以认为该目标数据的集中度低。
143.在一种实施方式中,可以如下计算目标数据的集中度:
144.目标数据的集中度=目标数据的总数量/区间范围内的数据量。
145.预设阈值可以根据实际需要选择设置,在此不做具体限制。
146.在本公开一实施方式中,步骤103,即基于所述区间范围确定比特数组的长度,以及生成所述比特数组,包括:
147.将所述比特数组的长度设置为大于或等于所述区间范围的长度。
148.该可选的实施方式中,所述区间范围的长度可以是从序列最大值到序列最小值之间序列数据的个数,包括序列最大值和序列最小值在内。为了能够使得比特数据中的比特位表示区间范围内的每一个序列数据,可以将比特数组的长度设置成与区间范围一致,或者大于区间范围的长度。再将比特数组的长度设置大于区间范围的长度时,比特数组中多余的比特位可以用于存储其他数据。
149.在本公开一实施方式中,步骤s103,即基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中每一位的值能够表示出对应于所述目标数据还是非目标数据的步骤,进一步可以包括以下步骤:
150.确定所述目标数据中的每一个在所述区间范围内的位置,将所述比特数组中相对应位置处的比特位赋值为第一预设值;
151.将所述比特数组中对应于所述区间范围内的其他位置处的比特位赋值为第二预设值。
152.该可选的实施方式中,比特数组的长度可以设置为与区间范围的长度一致或者大于区间范围的长度。在对比特数组进行赋值时,可以从比特数组的第0位开始,对区间范围内的多个比特位进行赋值,并且可以将该多个比特位与区间范围内的序列数据进行一一关联,将对应于区间范围内的序列数据中目标数据的比特位设置为第一预设值,如二进制“1”,而将对应于区间范围内序列数据中非目标数据的比特位设置为第二预设值,如二进制“0”。
153.上文例子中提到的5个目标数据,分别为20210000000、20210000001、20210000004、20210000005、20210000007的区间范围为8,因此可以设置一比特数组,假如
将该比特数组的长度也设置为8,则该比特数组中的每一个比特位对应于上述区间范围20210000000

20210000007中的每一个序列数据,目标数据与比特数组中每一位的对应关系如下:
154.第0位:20210000000
155.第1位:20210000001
156.第2位:
157.第3位:
158.第4位:20210000004
159.第5位:20210000005
160.第6位:
161.第7位:20210000007
162.假如将对应于目标数据的比特位设置为1,而将对应于非目标数据的比特位设置为0,则该比特数组最终被赋值成“11001101”。在内存中可以通过存储比特数组“11001101”的方式来替代上述5个目标数据,可见能够节省存储空间。并且数据量较大时,还能够提高查询效率。
163.在本公开一实施方式中,步骤s104,即将所述比特数组存储至存储空间中的步骤,进一步可以包括以下步骤:
164.将所述区间范围以及所述比特数组关联存储在存储空间中。
165.该可选的实现方式中,在读取到比特数组后,为了能够确定比特数组中的每一位表示哪个序列数据,可以将区间范围也关联存储在内存中。例如,可以存储区间范围的两个端值或者该区间范围在整个序列数据中的相对位置。
166.在本公开一实施方式中,所述比特数组中的每一位被赋值为第一预设值或者第二预设值;所述基于所述比特数组中每一位的值确定所述目标数据的步骤,进一步可以包括以下步骤:
167.遍历所述比特数组中的每一位;
168.确定所述比特数组中值为第一预设值的比特位在所述比特数组中的相对位置;
169.基于所述相对位置以及所述区间范围的两个端值之一确定所述目标数据。
170.该可选的实现方式中,通过对比特数组进行遍历,确定每一个第一预设值在比特数组中的相对位置,以及基于区间范围的两个端值之一确定目标数据。
171.上文中提到的例子中,针对随机挑选出的5个目标数据,生成了8个比特位的比特数组,并且该比特数组被赋值为“11001101”,在存储的时候将“11001101”以及区间范围的两个端值之一“20210000007”或“20210000000”来确定目标数据,假如预先设定将区间范围的最小端值与比特数组关联存储,并且比特数组的第1位对应于最小端值,则可以确定目标数据包括比特数组中的第1位、第2位、第5位、第6位以及第7位对应的序列数据,而由于知道第1位对应的目标数据是“20210000000”,且预先知道该序列数据是按顺序递增的数据,因此可以确定第2位对应的目标数据为“20210000000”加1,则为“20210000001”,依次可以得到后面三位目标数据。
172.图2示出根据本公开另一实施方式的信息存储方法的流程图,如图2所示,所述信息存储方法包括以下步骤s201

s205:
173.在步骤s201中,获取待保存的多个目标数据;所述目标数据为连续多个序列数据中的其中一部分;
174.在步骤s202中,确定所述目标数据在所述连续多个序列数据中的集中度;
175.在步骤s203中,在所述集中度大于预设阈值时,利用比特数组记录所述目标数据,以及将所述比特数组存储至存储空间;
176.在步骤s204中,在所述集中度小于或等于预设阈值时,直接将所述目标数据存储至所述存储空间。
177.上文提及,在业务系统中,为了便于信息存储以及信息查询,通常会给不同对象例如用户、商品、订单等赋予不同的编号。编号通常是字符串,并且是连续的。编号的组成部分可以按业务规则进行设计和编排,但大多数编号包含一段以数字组合而成的序列,而且往往是按照十进制数字顺序递增。
178.例如,某个业务系统中给客户编号如下:2021000000、20210000001、20210000002、20210000003...20219999998、20219999999。所有以字符串“2021”作为起始字符串的客户编号共有1000万,但是这种编号体系下,面临如下问题:基于业务分析等需求,需要从中随机挑选1000万个客户编号中50%的目标数据,并且要将筛选出的目标数据保存下来,便于业务分析。但是,如果直接将上述1000万个客户编号中的50%数据存储起来,不但占用存储空间,而且查询效率也会非常低下。
179.在本公开一实施方式中,该信息存储方法可适用于业务系统上执行。
180.在本公开一实施方式中,目标数据可以是从连续多个序列数据中随机筛选出的一部分数据,该序列数据中的每一个可以由一串数字构成,并且多个序列数据在数值上可以是连续的。也即,连续多个序列数据可以是在数值上连续的数字串数据。
181.在一些实施例中,多个序列数据可以是用于为业务对象比如用户、商户、商品等进行编号的数据,目标数据可以是其中一部分对象的编号数据。为了统计分析或者其他目的,需要对一部分对象进行处理时,业务系统可以从所有对象中随机或者其他筛选方式挑选出一部分目标对象,并将该部分目标对象的编号数据也即目标数据存储在存储空间比如内存中,以便做进一步处理。
182.本公开实施例对于目标数据的存储采用了两种方式:一种是利用比特数组表示目标数据,并将比特数组存储至存储空间;另外一种是直接将目标数据存储至存储空间。本公开实施例中,所要存储的目标数据在序列数据中的集中度较高的情况下,采用第一种方式,也即利用比特数据表示目标数据,将比特数组存储至存储空间中;而所要存储的目标数据在序列数据中的集中度较低时,采用第二种方式,也即直接将目标数据存储至存储空间中。
183.因此,本公开实施例首先确定目标数据在多个序列数据中的集中度,并在集中度大于预设阈值时利用比特数组记录目标数据,进而将比特数组存储至存储空间,而在集中度小于或等于预设阈值时,直接将目标数据存储至存储空间中。预设阈值可以根据实际情况或者经验等进行设置,在此不做具体限制。
184.本公开实施例在存储序列数据中随机挑选出的部分目标数据时,基于目标数据的集中度选用两种方式中的一种进行存储,能够最大程度地节省目标数据的存储空间,以及能够提高目标数据的存储效率和查询效率。
185.在本公开一实施方式中,所述步骤s202,即确定所述目标数据在所述连续多个序
列数据中的集中度的步骤,进一步包括以下步骤:
186.确定所述目标数据在所述序列数据中的区间范围;
187.统计所述目标数据的总数量;
188.基于所述总数量以及所述区间范围确定所述目标数据在所述序列数据中的集中度。
189.该可选的实现方式中,为了将目标数据存储在存储空间中,可以先获取筛选出的多个目标数据,并确定目标数据在序列数据中的区间范围,该区间范围的两个端值可以是目标数据中的最大序列值和最小序列值。由于多个目标数据为连续多个序列数据中的一部分数据,且多个序列数据为在数值上连续的数据,因此多个目标数据在数值上具有一定的序列关系。目标数据的序列最大值可以是多个目标数据中数值最大的数据,或者从排序上看位于最后的数据,而目标数据的序列最小值可以是多个数据中数值最小的数据,或者从排序上看位于最前面的数据。基于序列最大值以及序列最小值可以确定多个目标数据在连续多个序列数据中的区间范围,进而可以根据该区间范围确定需要多少个比特位来存储多个目标数据。
190.为了确定比特数组的长度,可以先确定序列最大值以及序列最小值之间的第一数量,需要说明的是,该第一数量可以为包括序列最大值和序列最小值在内的数量。例如,多个序列数据包括10个,分别为20210000000

20210000009中的各个序列数据;基于某项业务需求,从中随机抽取了5个目标数据,分别为20210000000、20210000001、20210000004、20210000005、20210000007,该5个目标数据中序列最大值为20210000007,序列最小值为20210000000,可以确定20210000000与20210000007之间的包括8个数据,该5个目标数据在序列数据中的区间范围为0

8,共包括8个数据。
191.目标数据的集中度主要取决于目标数据之间的密集程度。在一些实施例中,可以统计目标数据的总数量,之后再根据该目标数据的总数量与区间范围之间的关系确定目标数据在连续多个序列数据中的集中度。可以理解的是,目标数据的总数量较大,在区间范围内占据密度较高,则可以认为该目标数据的集中度高,而目标数据的总数量较小,在区间范围内占据的密度较低,则可以认为该目标数据的集中度低。
192.在一种实施方式中,可以如下计算目标数据的集中度:
193.目标数据的集中度=目标数据的总数量/区间范围内的数据量。
194.预设阈值可以根据实际需要选择设置,在此不做具体限制。
195.在本公开一实施方式中,所述步骤s203,即在所述集中度大于预设阈值时,利用比特数组记录所述目标数据,以及将所述比特数组存储至存储空间的步骤,进一步包括以下步骤:
196.在所述集中度大于预设阈值时,基于所述区间范围确定比特数组的长度,以及生成所述比特数组;
197.基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中的至少一位表示所述目标数据中的其中一个;
198.将所述比特数组存储至存储空间中。
199.该可选的实施方式中,
200.在一些实施例中,可以将比特数组的长度设置成与目标数据在序列数据中所占的
区间范围一致,通过这种方式可以由比特数组中的每一位表示所述区间范围内的每一个序列数据。因此,可以通过对比特数组中的每一位赋予相应的值来表示序列数据中的目标数据或者非目标数据。以上文中的例子说明,考虑到需要由比特数组来表示所挑选出的5个目标数据,因此可以将比特数组的长度设置为8。当然,可以理解的是也可以将比特数组的长度设置为其他值,只要该比特数组能够表示出目标数据为序列数据中的哪些数据即可。
201.将比特数组存储至存储空间中,由于比特数组中的每一位代表序列数据中的一个数据,并且通过比特数组中每一位的值可以确定哪个是比特数据,故而通过将该比特数组存储在存储空间的方式,能够实现对目标数据的存储。
202.本公开实施例针对连续多个序列数据中的部分目标数据进行存储时,通过确定目标数据在连续多个序列数据中的区间范围,进而再基于该区间范围确定比特数组的长度,并生成相应长度的比特属性,并基于目标数据对比特数组的每一位赋值,使得比特数组中的每一位能够表示出其对应于所述目标数据还是非目标数据。通过这种方式,对于连续多个序列数据中随机挑选的部分目标数据进行存储时,可以不直接将目标数据存储至存储空间中,而是利用一占空间较小的比特数组来存储,能够节省存储空间的同时,提高对目标数据的业务统计分析等处理效率。
203.在本公开一实施方式中,所述方法还进一步包括以下步骤:
204.从所述存储空间中读取所述比特数组;
205.基于所述比特数组中每一位的值确定所述目标数据。
206.该可选的实施方式中,利用比特数组存储目标数据后,在对目标数据进行分析处理时,可以从存储空间读取出该比特数组,并基于比特数组中每一位的赋值确定目标数据为序列数据中的哪些数据,进而再对目标数据进行处理。
207.在本公开一实施方式中,所述基于所述区间范围确定比特数组的长度,以及生成所述比特数组的步骤,进一步包括以下步骤:
208.将所述比特数组的长度设置为大于或等于所述区间范围的长度。
209.该可选的实施方式中,所述区间范围的长度可以是从序列最大值到序列最小值之间序列数据的个数,包括序列最大值和序列最小值在内。为了能够使得比特数据中的比特位表示区间范围内的每一个序列数据,可以将比特数组的长度设置成与区间范围一致,或者大于区间范围的长度。再将比特数组的长度设置大于区间范围的长度时,比特数组中多余的比特位可以用于存储其他数据。
210.在本公开一实施方式中,所述基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中每一位的值能够表示出对应于所述目标数据还是非目标数据的步骤,进一步可以包括以下步骤:
211.确定所述目标数据中的每一个在所述区间范围内的位置,将所述比特数组中相对应位置处的比特位赋值为第一预设值;
212.将所述比特数组中对应于所述区间范围内的其他位置处的比特位赋值为第二预设值。
213.该可选的实施方式中,比特数组的长度可以设置为与区间范围的长度一致或者大于区间范围的长度。在对比特数组进行赋值时,可以从比特数组的第0位开始,对区间范围内的多个比特位进行赋值,并且可以将该多个比特位与区间范围内的序列数据进行一一关
联,将对应于区间范围内的序列数据中目标数据的比特位设置为第一预设值,如二进制“1”,而将对应于区间范围内序列数据中非目标数据的比特位设置为第二预设值,如二进制“0”。
214.上文例子中提到的5个目标数据,分别为20210000000、20210000001、20210000004、20210000005、20210000007的区间范围为8,因此可以设置一比特数组,假如将该比特数组的长度也设置为8,则该比特数组中的每一个比特位对应于上述区间范围20210000000

20210000007中的每一个序列数据,目标数据与比特数组中每一位的对应关系如下:
215.第0位:20210000000
216.第1位:20210000001
217.第2位:
218.第3位:
219.第4位:20210000004
220.第5位:20210000005
221.第6位:
222.第7位:20210000007
223.假如将对应于目标数据的比特位设置为1,而将对应于非目标数据的比特位设置为0,则该比特数组最终被赋值成“11001101”。在内存中可以通过存储比特数组“11001101”的方式来替代上述5个目标数据,可见能够节省存储空间。并且数据量较大时,还能够提高查询效率。
224.在本公开一实施方式中,步骤s104,即将所述比特数组存储至存储空间中的步骤,进一步可以包括以下步骤:
225.将所述区间范围以及所述比特数组关联存储在存储空间中。
226.该可选的实现方式中,在读取到比特数组后,为了能够确定比特数组中的每一位表示哪个序列数据,可以将区间范围也关联存储在内存中。例如,可以存储区间范围的两个端值或者该区间范围在整个序列数据中的相对位置。
227.在本公开一实施方式中,所述比特数组中的每一位被赋值为第一预设值或者第二预设值;所述基于所述比特数组中每一位的值确定所述目标数据的步骤,进一步可以包括以下步骤:
228.遍历所述比特数组中的每一位;
229.确定所述比特数组中值为第一预设值的比特位在所述比特数组中的相对位置;
230.基于所述相对位置以及所述区间范围的两个端值之一确定所述目标数据。
231.该可选的实现方式中,通过对比特数组进行遍历,确定每一个第一预设值在比特数组中的相对位置,以及基于区间范围的两个端值之一确定目标数据。
232.上文中提到的例子中,针对随机挑选出的5个目标数据,生成了8个比特位的比特数组,并且该比特数组被赋值为“11001101”,在存储的时候将“11001101”以及区间范围的两个端值之一“20210000007”或“20210000000”来确定目标数据,假如预先设定将区间范围的最小端值与比特数组关联存储,并且比特数组的第1位对应于最小端值,则可以确定目标数据包括比特数组中的第1位、第2位、第5位、第6位以及第7位对应的序列数据,而由于知道
第1位对应的目标数据是“20210000000”,且预先知道该序列数据是按顺序递增的数据,因此可以确定第2位对应的目标数据为“20210000000”加1,则为“20210000001”,依次可以得到后面三位目标数据。
233.图2所示及相关实施方式中涉及的技术术语和技术特征与图1所示及相关实施方式中提及的技术术语和技术特征相同或相似,对于图2所示及相关实施方式中涉及的技术术语和技术特征的解释和说明可参考上述对于图1所示及相关实施方式的解释的说明,此处不再赘述。
234.图3示出根据本公开一实施方式的信息存储方法的应用场景示意图。如图3所示,交易系统301中每天均发生大量的交易,该交易涉及用户和商户,也即用户消费过程中向商户付款所产生的交易,这些交易相关数据均存储在数据库302中;交易系统为每个商户赋予id,且这些id均是连续递增的序列数据。统计服务器303为了分析每天产生交易的商户的分布情况,可以从数据库302中随机选取一部分商户进行统计分析。统计服务器303可以从商户id中随机选取一些id进行统计分析,假如商户id为以“2021”作为起始字符串的编号,且这些编号在数值上递增,商户id共有1000万个。可以从中选取50%也即500万个商户进行分析,为了能够实现对选中上述的分析,首先需要将选中的上述id存储至内存304中,以便后续提取商户数据时通过遍历存储内存中的id提取相应数据。统计服务器利用本公开实施例提出的方法将随机提取的500万个商户id以比特数组的形式进行存储,利用本公开实施例中的方法,一个字节的比特数组能够存储8个商户id,那么1兆的比特数组则可以存储大概100万个商户id,那么500万个商户id则只需要5兆的比特数据即可存储起来。
235.下面以java平台为例,测算利用本公开实施例提出的上述方法存储上述1000万个客户编号中的50%数据的实际内存使用情况,代码实现如下:
236.@test
237.public void test1(){
238.set<string>cifnoset=new hashset<>();
239.list<string>others=new arraylist<>();
240.cifnorepo cifnorepo=new cifnorepo("2021",0,9999999);
241.random r=new random();
242.for(int i=0;i<10000000;i ){
243.string cifno="2021" format(i);
244.if(r.nextboolean()){
245.cifnoset.add(cifno);
246.cifnorepo.add(cifno);
247.}else{
248.others.add(cifno);
249.}
250.}
251.system.out.println(ramusageestimator.humansizeof(cifnoset));
252.system.out.println(ramusageestimator.humansizeof(cifnorepo));
253.}
254.private string format(int i){
255.string tmp="0000000";
256.string si=string.valueof(i);
257.return tmp.substring(si.length()) si;
258.}
259.其中,cifnoset.add(cifno)为现有技术所采用的存储方式,也即直接存储商户id至内存的方式,而cifnorepo.add(cifno)为本公开实施例利用比特数组存储上述id的方式。
260.上述代码的执行结果如下:
261.打印结果:
262.489.8m
263.4.8m
264.可见,直接存储商户id需占用489.8m的内存空间,而本公开实施例中的方案保存近500万的商户id所使用的内存为4.8m,比现有的处理方式节省了近99%的内存。
265.下述为本公开装置实施例,可以用于执行本公开方法实施例。
266.图4示出根据本公开一实施方式的信息存储装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图4所示,所述信息存储装置包括:
267.获取模块401,被配置为获取待保存的多个目标数据;所述目标数据为连续多个序列数据中的其中一部分;
268.第一确定模块402,被配置为确定所述目标数据在所述序列数据中的区间范围;
269.第二确定模块403,被配置为基于所述区间范围确定比特数组的长度,以及生成所述比特数组;所述比特数组中的一位表示所述序列数据中位于所述区间范围内的其中一个数据;
270.赋值模块404,被配置为基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中每一位的值能够表示出对应于所述目标数据还是非目标数据;
271.第一存储模块405,被配置为将所述比特数组存储至存储空间中。
272.在本公开一实施方式中,所述装置还包括:
273.从所述存储空间中读取所述比特数组;
274.基于所述比特数组中每一位的值确定所述目标数据。
275.在本公开一实施方式中,所述装置还包括:
276.统计所述目标数据的总数量;
277.基于所述总数量以及所述区间范围确定所述目标数据在所述序列数据中的集中度;
278.在所述集中度小于或等于预设阈值时,直接将所述目标数据记录在存储空间中。
279.在本公开一实施方式中,基于所述区间范围确定比特数组的长度,以及生成所述比特数组,包括:
280.将所述比特数组的长度设置为大于或等于所述区间范围的长度。
281.在本公开一实施方式中,基于所述目标数据为所述比特数组的每一位赋值,以使
所述比特数组中每一位的值能够表示出对应于所述目标数据还是非目标数据,包括:
282.确定所述目标数据中的每一个在所述区间范围内的位置,将所述比特数组中相对应位置处的比特位赋值为第一预设值;
283.将所述比特数组中对应于所述区间范围内的其他位置处的比特位赋值为第二预设值。
284.在本公开一实施方式中,将所述比特数组存储至存储空间中,包括:
285.将所述区间范围以及所述比特数组关联存储在存储空间中。
286.在本公开一实施方式中,所述比特数组中的每一位被赋值为第一预设值或者第二预设值,基于所述比特数组中每一位的值确定所述目标数据,包括:
287.遍历所述比特数组中的每一位;
288.确定所述比特数组中值为第一预设值的比特位在所述比特数组中的相对位置;
289.基于所述相对位置以及所述区间范围的两个端值之一确定所述目标数据。
290.图5示出根据本公开另一实施方式的信息存储装置的流程图,如图5所示,所述信息存储装置包括以下步骤:
291.第二获取模块501,被配置为获取待保存的多个目标数据;所述目标数据为连续多个序列数据中的其中一部分;
292.第三确定模块502,被配置为确定所述目标数据在所述连续多个序列数据中的集中度;
293.记录模块503,被配置为在所述集中度大于预设阈值时,利用比特数组记录所述目标数据,以及将所述比特数组存储至存储空间;
294.第二存储模块504,被配置为在所述集中度小于或等于预设阈值时,直接将所述目标数据存储至所述存储空间。
295.在本公开一实施方式中,确定所述目标数据在所述连续多个序列数据中的集中度,包括:
296.确定所述目标数据在所述序列数据中的区间范围;
297.统计所述目标数据的总数量;
298.基于所述总数量以及所述区间范围确定所述目标数据在所述序列数据中的集中度。
299.在本公开一实施方式中,在所述集中度大于预设阈值时,利用比特数组记录所述目标数据,以及将所述比特数组存储至存储空间,包括:
300.在所述集中度大于预设阈值时,基于所述区间范围确定比特数组的长度,以及生成所述比特数组;
301.基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中的至少一位表示所述目标数据中的其中一个;
302.将所述比特数组存储至存储空间中。
303.在本公开一实施方式中,所述装置还包括:
304.从所述存储空间中读取所述比特数组;
305.基于所述比特数组中每一位的值确定所述目标数据。
306.在本公开一实施方式中,基于所述区间范围确定比特数组的长度,以及生成所述
比特数组,包括:
307.将所述比特数组的长度设置为大于或等于所述区间范围的长度。
308.在本公开一实施方式中,基于所述目标数据为所述比特数组的每一位赋值,以使所述比特数组中的至少一位代表所述目标数据中的其中一个,包括:
309.确定所述目标数据中的每一个在所述区间范围内的位置,将所述比特数组中相对应位置处的比特位赋值为第一预设值;
310.将所述比特数组中对应于所述区间范围内的其他位置处的比特位赋值为第二预设值。
311.在本公开一实施方式中,将所述比特数组存储至存储空间中,包括:
312.将所述区间范围以及所述比特数组关联存储在存储空间中。
313.在本公开一实施方式中,所述比特数组中的每一位被赋值为第一预设值或者第二预设值,基于所述比特数组中每一位的值确定所述目标数据,包括:
314.遍历所述比特数组中的每一位;
315.确定所述比特数组中值为第一预设值的比特位在所述比特数组中的相对位置;
316.基于所述相对位置以及所述区间范围的两个端值之一确定所述目标数据。
317.上述装置实施例所涉及的技术特征及其对应的解释和说明与上文所描述的方法实施例所涉及的技术特征及其对应的解释和说明相同、相应或相似,对于上述装置实施例所涉及的技术特征及其对应的解释和说明可参考上述方法实施例所涉及的技术特征及其对应的解释和说明,本公开在此不再赘述。
318.本公开实施例还公开了一种电子设备,所述电子设备包括存储器和处理器;其中,
319.所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现上述任一方法步骤。
320.图6是适于用来实现根据本公开一实施方式的信息存储方法的计算机系统的结构示意图。
321.如图6所示,计算机系统600包括处理单元601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行上述实施方式中的各种处理。在ram603中,还存储有计算机系统600操作所需的各种程序和数据。处理单元601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
322.以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。其中,所述处理单元601可实现为cpu、gpu、tpu、fpga、npu等处理单元。
323.特别地,根据本公开的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行所述数据传输方法的程序代码。在这样的实
施方式中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
324.本公开实施例还公开了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述任一方法步骤。
325.附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
326.描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
327.作为另一方面,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开实施例的方法。
328.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献