CN110209348B - 数据存储方法、装置、电子设备及存储介质 - Google Patents
数据存储方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110209348B CN110209348B CN201910308373.8A CN201910308373A CN110209348B CN 110209348 B CN110209348 B CN 110209348B CN 201910308373 A CN201910308373 A CN 201910308373A CN 110209348 B CN110209348 B CN 110209348B
- Authority
- CN
- China
- Prior art keywords
- data
- stored
- partition
- target
- bitmap
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据存储方法、装置、终端及存储介质。该方法包括:获取目标业务的待存储数据;当目标业务的数据总量小于预设阈值时,按照分区方式存储待存储数据;其中,数据总量是指待存储数据的数量与目标业务的已存储数据的数量之和,预设方式是指通过存储在分区中的数值,以及分区来表示数据的方式;当数据总量大于或等于预设阈值时,按照位图方式存储待存储数据。本申请实施例提供的技术方案,可以避免在数据量小且稀疏时采用位图方式所造成的空间浪费问题,节省电子设备的内存空间。
Description
技术领域
本申请实施例涉及存储技术领域,特别涉及一种数据存储方法、装置、电子设备及存储介质。
背景技术
目前,电子设备在执行某项业务的过程中会产生大量数据。上述数据需要存储在电子设备中,以对业务的执行过程进行记录、存档。
相关技术中,电子设备通过位图(Bitmap)算法存储数据。具体地,终端根据待存储数据的取值范围获取相应大小的字节空间,之后根据上述取值范围,以及每个数据的取值确定每个数据在上述字节空间中的存储位置,并将该存储位置设置为1。
示例性地,电子设备需要存储0到7内的5个元素(4,7,2,5,3),首先电子设备开辟一个字节的空间,对于第1个元素4,其在0到7内位于第五位,此时电子设备将上述空间中的第五个位置设置为1,电子设备按照同样的方式处理上述其它四个元素,得到“00111101”。
Bitmap算法存在如下缺点:当数据的取值范围较大,但数据量较小时,容易造成空间浪费。
发明内容
本申请实施例提供了一种数据存储方法、装置、电子设备及存储介质,可用于解决相关技术中当数据的取值范围较大,但数据量较小时采用Bitmap算法造成空间浪费的问题。
一方面,本申请实施例提供了一种数据存储方法,所述方法包括:
获取目标业务的待存储数据;
当所述目标业务的数据总量小于预设阈值时,按照分区方式存储所述待存储数据;其中,所述数据总量是指所述待存储数据的数量与所述目标业务的已存储数据的数量之和,所述预设方式是指通过存储在分区中的数值,以及所述分区来表示数据的方式;
当所述数据总量大于或等于所述预设阈值时,按照位图方式存储所述待存储数据。
另一方面,本申请实施例提供了一种数据存储装置,所述装置包括:
数据获取模块,用于获取目标业务的待存储数据;
第一存储模块,用于当所述目标业务的数据总量小于预设阈值时,按照分区方式存储所述待存储数据;其中,所述数据总量是指所述待存储数据的数量与所述目标业务的已存储数据的数量之和,所述预设方式是指通过存储在分区中的数值,以及所述分区来表示数据的方式;
第二存储模块,用于当所述数据总量大于或等于所述预设阈值时,按照位图方式存储所述待存储数据。
又一方面,本申请实施例提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述一方面所述的数据存储方法。
又一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述一方面所述的数据存储方法。
又一方面,提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于执行上述一方面所述的数据存储方法。
本申请实施例提供的技术方案可以带来如下有益效果:
通过根据某一业务的数据总量来选择存储方式。具体地,当数据总量较小时,通过在分区中存储的数值,以及该分区标识(例如分区编号)来存储业务数据;当数据总量较大时,通过位图方式来存储业务数据。本申请实施例提供的技术方案,可以避免在数据量小且稀疏时采用位图方式所造成的空间浪费问题,节省电子设备的内存空间。
附图说明
图1是相关技术提供的Roaring Bitmap算法的示意图;
图2是本申请一个实施例示出的应用场景的示意图;
图3是本申请一个实施例示出的数据存储方法的流程图;
图4是本申请一个实施例示出的数据存储的示意图;
图5是本申请另一个实施例示出的数据存储方法的流程图;
图6是本申请一个实施例示出的数据存储装置的框图;
图7是本申请一个实施例示出的电子设备的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
相关技术中还提供了一种Roaring Bitmap算法。Roaring Bitmap算法的具体实现流程如下:将整型数字(32位)拆分成高低两个短整型(16位),之后根据高位来确定分区(key),并在确定的分区中存储低位。由于高位有65536种组合方式,因此电子设备中包括65536个分区。此外,当每个分区中存储的低位为4096时,空间消耗已经等同于一个长度为65535的bitmap,而数据超过4096时,内存空间会持续增长,而Bitmap在存储相同数量的数据情况下,内存空间不会继续增长,为了节省内存空间,电子设备会对该分区进行Bitmap转换。
结合参考图1,其示出了Roaring Bitmap算法的示意图。32位的整型数字被拆分为高16位和低16位。电子设备根据高16位来确定分区,之后在在确定出的分区中的short数组中存储低16位。当某一分区存储的数据达到4096个时,对该分区进行Bitmap转换。
Roaring Bitmap算法存在如下缺点:一方面Roaring Bitmap的分区数量固定为65536,分区容量固定为4096,无法根据业务需求进行灵活调整,导致内存空间被浪费;另一方面Roaring Bitmap的每个分区所占用的内存空间是根据存储的数据数量动态增长的,增长过程中会造成内存浪费,因此当每个分区的数据数量快要达到上限时,内存空间被浪费的较多;再一方面按照Roaring Bitmap算法存储数据时查找数据的耗时较长。
本申请实施例提供的技术方案,通过根据某一业务的数据总量来选择存储方式。具体地,当数据总量较小时,通过在分区中存储的数值,以及该分区标识(例如分区编号)来存储业务数据;当数据总量较大时,通过位图方式来存储业务数据。本申请实施例提供的技术方案,可以避免在数据量小且稀疏时采用位图方式所造成的空间浪费问题,节省电子设备的内存空间。
另外,本申请实施例提供的技术方案,由于可以根据业务需求自定义分区数量,以及每个分区的数据容量,相较于Roaring Bitmap算法采用的固定分区数量以及固定容量,本申请实施例能够在满足业务需求的前提下,减小对内存空间的消耗,节省电子设备的内存空间。
本申请实施例提供的技术方案,可以应用在电子设备中。该电子设备可以是个人计算机(Personal Computer,PC),也可以是服务器。服务器可以是一台服务器,也可以是多台服务器构成的服务器集群,还可以是一个云计算服务中心。在本申请实施例中,仅以电子设备为服务器为例进行说明。
本申请实施例提供的技术方案,可以应用在大数据存储及统计技术领域。例如,对于用户量较大的应用程序,电子设备通过本申请实施例提供的技术方案对其新增用户,启动用户、启动次数等多个维度的数据进行存储及统计。结合参考图2,其示出了对某一应用程序的多个维度的数据进行统计的示意图。上述多个维度的数据包括新增用户、联网用户、联网次数等等。
请参考图3,其示出了本申请一个实施例示出的数据存储方法的流程图。该方法可以包括如下步骤:
步骤301,获取目标业务的待存储数据。
目标业务可以是存在大数据实时统计需求的业务。例如,对于用户量较高的应用程序,电子设备需要对其的新增用户、启动用户、启动次数等多个维度的数据进行统计。
电子设备可以从与其建立有通信连接的其它设备中获取待存储数据。示例性地,当目标业务为某一应用程序的统计业务时,电子设备可以与该应用程序对应的后台服务器建立通信连接,并从该后台服务器中获取待存储数据。
步骤302,当目标业务的数据总量小于预设阈值时,按照分区方式存储待存储数据。
数据总量是指待存储数据的数量与目标业务的已存储数据的数量之和。可选地,电子设备中记录了已存储数据的数量,当获取到待存储数据时,获取待存储数据的数量,并将已存储数据的数量与待存储数据的数量相加,得到数据总量。示例性地,待存储数据的数量为100个,已存储数据的数量为50个,则数据总量为150。
预设阈值可以根据实际需求设定,本申请实施例对此不作限定。示例性地,预设阈值为30000000。在本申请实施例中,预设阈值可以称之为“bitmap阀值”,可以由相关人员自定义设定后存储在配置文件中。分区方式是指通过存储在分区中的数值,以及分区来表示数据的方式。示例性地,电子设备在第五个分区存储了数字1以表示101,当电子设备从第五个分区读取到数字1时,将分区的编号与分区数量的乘积加上数字1,即可确定出存储的数据为101。
可选地,在按照分区方式存储待存储数据之前,电子设备需要先在配置文件中配置分区数量以及每个分区的数据容量。分区数量可以根据目标业务的最大数据取值实际设定。可选地,分区数量与最大数据取值呈正相关关系,也即最大数据取值越大,分区数量越多,最大数据取值越小,分区数量越小。示例性地,分区数量为65535个。可选地,电子设备还会在配置文件中设置目标业务的取值范围(range)。每个分区的数据容量也可以是自定义设定。
可选地,电子设备设置每个分区的数据容量的初始大小为init,后续对分区大小进行扩容,最大可达bucket。也即每个分区的数据容量在init~bucket。需要说明的是,如果每个分区的数据容量最大可设置为65535,对于不超过42亿的数字,分区数量不超过65535,而短整型范围为(-2)^15~2^15,加起来可以表达65535个数字,因此分区数量以及每个分区的数据容量都可以采用short型来表示,可以减少内存占用。
上述分区数量以及每个分区的数据容量也可以由相关技术人员配置后存储在配置文件中。
Roaring Bitmap方式,其通常采用65535*4096的固定分区(也即分区数量为65535,每个分区的数据容量为4096),本申请实施例提供的技术方案,相较于RoaringBitmap算法,能够灵活控制分区的数量以及容量,可以在满足对目标业务的统计需求的前提下,节省内存空间。
步骤303,当数据总量大于或等于预设阈值时,按照位图方式存储待存储数据。
由于采取位图方式存储数据时,数据量的多少不会对内存空间造成影响。示例性地,当业务数据的取值范围为0~99时,若待存储数据的数据量为3个或者300个,其占用的内存空间均为300Byte。然而采用分区方式时,数据量较大时,需要额外创建分区或者对分区进行扩容,此时会造成内存空间增大。因此,在本申请实施例中,当数据总量较大时,采用位图方式来存储待存储数据。
可选地,步骤303具体实现为:
步骤303a,根据目标业务的业务数据取值范围创建位图对象;
在本申请实施例中,电子设备根据目标业务的业务数据取值范围确定位图对象所占用的内存空间。示例性地,业务数据取值范围为0~99,则位图对象所占用的内存空间为100Byte。需要说明的是,位图对象未存储任何数据时,其内空间的每个位置均被设置为0。
步骤303b,在位图对象中存储待存储数据。
对于待存储数据中的第k个数据,终端确定该数据的取值在业务数据取值范围中的排序,之后将位图对象中与该排序对应的位置置为3,此时电子设备存储了上述第k个数据。
可选地,电子设备在创建位图对象后,将位图对象中存储按照分区方式存储的已存储数据。由于数据量的多少并不会影响位图对象所占用的内存空间,通过上述方式,可以避免电子设备采用两种方式来存储数据所导致的内存过大的问题,避免空间浪费。
需要说明的是,相较于Roaring Bitmap中仅对一个分区进行Bitmap转换,本申请实施例在数据总量达到预设阈值后,对每个分区均进行Bitmap转换,由于实践过程中对分区进行扩容会产生垃圾内存,累积后会超出一个完整的Bitmap的控件开销,因此采用本申请实施例提供的技术方案,可以避免在数据达到预设阈值后频繁对分区进行扩容,减小扩容所产生的垃圾内存。
在其它可能的实现方式中,电子设备检测是否存在Bitmap对象,若存在Bitmap对象,则将待存储数据存储至Bitmap对象中,若不存在Bitmap对象,则检测数据总量是否大于预设阈值,并执行后续步骤。
结合参考图4,其示出了本申请一个实施例提供的数据存储的示意图。当数据总量小于预设阈值时,采用分区方式进行数据存储;其中,分区数量为n+1,每个分取的数据容量为(init~bucket),当数据总量大于预设阈值时,采用位图方式进行存储。
综上所述,本申请实施例提供的技术方案,通过根据某一业务的数据总量来选择存储方式。具体地,当数据总量较小时,通过在分区中存储的数值,以及该分区标识(例如分区编号)来存储业务数据;当数据总量较大时,通过位图方式来存储业务数据。本申请实施例提供的技术方案,可以避免在数据量小且稀疏时采用位图方式所造成的空间浪费问题,节省电子设备的内存空间。
另外,本申请实施例提供的技术方案,由于可以根据业务需求自定义分区数量,以及每个分区的数据容量,相较于Roaring Bitmap算法采用的固定分区数量以及固定容量,本申请实施例能够在满足业务需求的前提下,减小对内存空间的消耗,节省电子设备的内存空间。
下面对以分区方式存储待存储数据进行讲解。
在基于图3所示实施例提供的一个可选实施例中,步骤302可以具体实现为如下步骤:
步骤302a、对于待存储数据中的第k个数据,将第k个数据的取值除以分区数量,得到商和余数,k为正整数;
步骤302b、根据商确定第k个数据对应的目标分区标识;
目标分区标识可以是目标分区的编号。在本申请实施例中,终端将数据取值除以分区数量得到的商直接确定为目标分区的编号。示例性地,数据取值为303,分区数量为20,将数据取值除以分区数量得到的商为5,则该数据取值对应的目标分区标识为5,该数据取值对应的余数应当存储在第5个分区中。
步骤302c、将余数存储至目标分区标识对应的目标分区中。
由于分区数量是预先设定的,因此可能出现目标分区不存在的情况。示例性地,目标分区标识为5,但电子设备中只存在4个分区。可选地,当目标分区标识对应的目标分区不存在时,则需要先创建一个分区。可选地,电子设备先确定目标分区容量,之后为目标分区分配存储空间,以创建目标分区。可选地,电子设备将目标分区的容量,存储位置以及目标分区标识对应存储。
此外,由于目标分区的数据容量也是预先设定的,当目标分区的已存储数据的数据量达到上述数据容量时,则可能出现无法存储的情况。下面对该情况进行讲解。
步骤302c可以具体实现为:
1、当目标分区中的数据数量符合预设条件时,对目标分区进行扩容处理,得到扩容处理后的目标分区;
上述预设条件可以是终端中已存储数据的数量与目标分区的数量相同。
可选地,扩容处理的过程具体如下:
(1)从配置文件中获取扩容系数。
扩容系数为大于3的常数。扩容系数可以自定义设定,本申请实施例对此不作限定。示例性地,扩容系数为3.5。
(2)将目标分区的原始容量与扩容系数的乘积,确定为扩容处理后的目标分区的容量;
示例性地,目标分区的原始容量为300,扩容系数为3.5,则扩容处理后的目标分区的容量为350。
(3)根据扩容处理后的目标分区的容量,生成扩容处理后的目标分区。
2、将余数存储至扩容处理后的目标分区。
电子设备在目标分区的已存储数据的数量达到数据容量时,对目标分区进行扩容处理,并将余数存储至扩容处理后的目标分区。
本申请实施例还提供了另一种数据存储方法,该方法可以包括如下步骤(步骤501~步骤511)。
步骤501,获取目标业务的待存储数据。
步骤502,检测目标业务的数据总量是否小于预设阈值。
若数据总量小于预设阈值,则执行步骤503-509;若数据总量大于或等于预设阈值,则执行步骤510-511。
步骤503,对于待存储数据中的第k个数据,将第k个数据的取值除以分区数量,得到商和余数,k为正整数。
步骤504,根据商确定第k个数据对应的目标分区标识。
步骤505,检测目标分区是否存在。
当目标分区不存在时,执行步骤506,并将余数存储至目标分区中;当目标分区存在时,执行步骤507-509。
步骤506,则创建目标分区。
步骤507,检测目标分区中的数量是否符合预设条件。
步骤508,当目标分区中的数据数量符合预设条件时,对目标分区进行扩容处理,得到扩容处理后的目标分区。
步骤509,将余数存储至扩容处理后的目标分区。
步骤510,当目标业务的数据总量大于或等于预设阈值时,根据所述目标业务的业务数据取值范围创建位图对象。
步骤511,在所述位图对象中存储所述待存储数据。
在一个具体的例子中,结合参考图5,其示出了本申请一个实施例提供的数据存储方法的流程图。电子设备写入数字,先判断该数字是否处于业务数据取值范围内,若处于该范围内,则判断目标业务的数据总量是否小于预设阈值,若数据总量小于预设阈值,则将该数字除以分区数量得到商和余数,其中,商作为目标分区标识(key),余数作为待存储至目标分区的数值(value),若目标分区不存在,则创建并初始化目标分区,若目标分区存在,但目标分区的存储的数据总量已经达到数据容量,则对目标分区进行扩容,之后将余数存储至目标分区,并记录存储位置以及数据总量;若数据总量大于预设阈值,则先检测是否建立Bitmap对象,若建立,则写入数字到Bitmap对象中,若未建立,则建立Bitmap对象,并将按照分区方式存储的数据全部存储至Bitmap对象中,并清空分区数组内存。
下面对采用本申请实施例提供的技术方案存储数据,以及采用Roaring Bitmap算法数据进行比对(从内存大小,以及查找数据的耗时两个维度)。
1、10万、50万、100万、500万、1000万数据范围:本申请实施例提供的技术方案的内存占用略同于roaring bitmap算法的内存占用,但查找数据所需的耗时只有采用roaringbitmap算法来查找数据的耗时的一半。
2、5000万数据:由于超过3000万转bitmap存在拷贝空间耗用,本申请实施例提供的技术方案的内存占用大于roaring bitmap算法的内存占用,但是查找数据所需的耗时低于采用roaring bitmap算法来查找数据的耗时。
3、1亿数据:本申请实施例提供的技术方案的内存占用和roaring bitmap接近,但是查找数据所需的耗时只有采用roaring bitmap算法来查找数据的耗时的三分之一。
4、2亿及以上数据:本申请实施例提供的技术方案的内存占用低于roaringbitmap,但是查找数据所需的耗时只有采用roaring bitmap算法来查找数据的耗时的四分之一。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图6,其示出了本申请一个实施例提供的数据存储装置的框图。该装置具有实现上述方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以包括:
数据获取模块601,用于获取目标业务的待存储数据。
第一存储模块602,用于当所述目标业务的数据总量小于预设阈值时,按照分区方式存储所述待存储数据;其中,所述数据总量是指所述待存储数据的数量与所述目标业务的已存储数据的数量之和,所述预设方式是指通过存储在分区中的数值,以及所述分区来表示数据的方式。
第二存储模块603,用于当所述数据总量大于或等于所述预设阈值时,按照位图方式存储所述待存储数据。
综上所述,本申请实施例提供的技术方案,通过根据某一业务的数据总量来选择存储方式。具体地,当数据总量较小时,通过在分区中存储的数值,以及该分区标识(例如分区编号)来存储业务数据;当数据总量较大时,通过位图方式来存储业务数据。本申请实施例提供的技术方案,可以避免在数据量小且稀疏时采用位图方式所造成的空间浪费问题,节省电子设备的内存空间。
另外,本申请实施例提供的技术方案,由于可以根据业务需求自定义分区数量,以及每个分区的数据容量,相较于Roaring Bitmap算法采用的固定分区数量以及固定容量,本申请实施例能够在满足业务需求的前提下,减小对内存空间的消耗,节省电子设备的内存空间。
在基于图6所示实施例提供的一个可选实施例中,所述第一存储模块602,用于:
对于所述待存储数据中的第k个数据,将所述第k个数据的取值除以分区数量,得到商和余数,所述k为正整数;
根据所述商确定所述第k个数据对应的目标分区标识;
将所述余数存储至所述目标分区标识对应的目标分区中。
可选地,所述第一存储模块602,用于:
当所述目标分区中的数据数量符合预设条件时,对所述目标分区进行扩容处理,得到扩容处理后的所述目标分区;
将所述余数存储至所述扩容处理后的所述目标分区。
可选地,所述第一存储模块602,用于:
从配置文件中获取扩容系数,所述扩容系数为大于1的系数;
将所述目标分区的原始容量与所述扩容系数的乘积,确定为所述扩容处理后的所述目标分区的容量;
根据所述扩容处理后的所述目标分区的容量,生成所述扩容处理后的所述目标分区。
在基于图6所示实施例提供的一个可选实施例中,所述装置还包括:设置模块(图中未示出)。
设置模块,用于在配置文件中设置分区数量以及每个分区的数据容量。
在基于图6所示实施例提供的一个可选实施例中,所述第二存储模块602,还用于:
根据所述目标业务的业务数据取值范围创建位图对象;
在所述位图对象中存储所述待存储数据。
可选地,所述第二存储模块602,还用于:
在所述位图对象中存储按照所述分区方式存储的所述已存储数据。
请参考图7,其示出了本发明一个实施例提供的电子设备的结构示意图。该电子设备可以是服务器,该电子设备用于实施上述数据存储方法。具体来讲:
所述电子设备700包括中央处理单元(CPU)701、包括随机存取存储器(RAM)702和只读存储器(ROM)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。所述电子设备700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。
所述基本输入/输出系统708包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中所述显示器708和输入设备709都通过连接到系统总线705的输入输出控制器706连接到中央处理单元701。所述基本输入/输出系统708还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。所述大容量存储设备707及其相关联的计算机可读介质为电子设备700提供非易失性存储。也就是说,所述大容量存储设备707可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。
根据本发明的各种实施例,所述电子设备700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即电子设备700可以通过连接在所述系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述数据存储方法的指令。
在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由电子设备的处理器加载并执行以实现上述数据存储方法。
可选地,上述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于执行上述数据存储方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本文中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
以上仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种数据存储方法,其特征在于,所述方法包括:
获取目标业务的待存储数据;
当所述目标业务的数据总量小于预设阈值时,对于所述待存储数据中的第k个数据,将所述第k个数据的取值除以分区数量,得到商和余数,所述k为正整数;
根据所述商确定所述第k个数据对应的目标分区标识;
将所述余数存储至所述目标分区标识对应的目标分区中;
其中,所述数据总量是指所述待存储数据的数量与所述目标业务的已存储数据的数量之和,所述分区方式是指通过存储在分区中的数值,以及所述分区来表示数据的方式;
当所述数据总量大于或等于所述预设阈值时,按照位图方式存储所述待存储数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述余数存储至所述目标分区标识对应的目标分区中,包括:
当所述目标分区中的数据数量符合预设条件时,对所述目标分区进行扩容处理,得到扩容处理后的所述目标分区;
将所述余数存储至所述扩容处理后的所述目标分区。
3.根据权利要求2所述的方法,其特征在于,所述对所述目标分区进行扩容处理,得到扩容处理后的所述目标分区,包括:
从配置文件中获取扩容系数,所述扩容系数为大于1的系数;
将所述目标分区的原始容量与所述扩容系数的乘积,确定为所述扩容处理后的所述目标分区的容量;
根据所述扩容处理后的所述目标分区的容量,生成所述扩容处理后的所述目标分区。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述按照分区方式存储所述待存储数据之前,还包括:
在配置文件中设置分区数量以及每个分区的数据容量。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述按照位图方式存储所述待存储数据,包括:
根据所述目标业务的业务数据取值范围创建位图对象;
在所述位图对象中存储所述待存储数据。
6.根据权利要求5所述的方法,其特征在于,所述根据所述目标业务的业务数据取值范围创建位图对象之后,还包括:
在所述位图对象中存储按照所述分区方式存储的所述已存储数据。
7.一种数据存储装置,其特征在于,所述装置包括:
数据获取模块,用于获取目标业务的待存储数据;
第一存储模块,用于当所述目标业务的数据总量小于预设阈值时,对于所述待存储数据中的第k个数据,将所述第k个数据的取值除以分区数量,得到商和余数,所述k为正整数;根据所述商确定所述第k个数据对应的目标分区标识;将所述余数存储至所述目标分区标识对应的目标分区中;其中,所述数据总量是指所述待存储数据的数量与所述目标业务的已存储数据的数量之和,所述预设方式是指通过存储在分区中的数值,以及所述分区来表示数据的方式;
第二存储模块,用于当所述数据总量大于或等于所述预设阈值时,按照位图方式存储所述待存储数据。
8.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至6任一项所述的数据存储方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至6任一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910308373.8A CN110209348B (zh) | 2019-04-17 | 2019-04-17 | 数据存储方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910308373.8A CN110209348B (zh) | 2019-04-17 | 2019-04-17 | 数据存储方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209348A CN110209348A (zh) | 2019-09-06 |
CN110209348B true CN110209348B (zh) | 2021-08-17 |
Family
ID=67785448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910308373.8A Active CN110209348B (zh) | 2019-04-17 | 2019-04-17 | 数据存储方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209348B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110969887B (zh) * | 2019-11-18 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 一种车辆数据获取方法、装置、电子设备及介质 |
CN112241375B (zh) * | 2020-10-14 | 2024-02-13 | 哲库科技(北京)有限公司 | 一种存储器的分配方法、装置及终端设备 |
CN112527696A (zh) * | 2020-12-17 | 2021-03-19 | 杭州安恒信息技术股份有限公司 | 一种唯一id的存储方法、装置、设备及可读存储介质 |
CN114697393A (zh) * | 2020-12-28 | 2022-07-01 | 北京金山云网络技术有限公司 | 一种数据存储方法、装置、设备及介质 |
CN113626396B (zh) * | 2021-07-29 | 2024-03-12 | 北京达佳互联信息技术有限公司 | 一种聚类检测方法、装置、电子设备、存储介质及产品 |
CN113590890B (zh) * | 2021-08-04 | 2024-03-26 | 拉卡拉支付股份有限公司 | 信息存储方法、装置、电子设备、存储介质及程序产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107545021A (zh) * | 2017-05-10 | 2018-01-05 | 新华三信息安全技术有限公司 | 一种数据存储方法及装置 |
CN107562385A (zh) * | 2017-09-13 | 2018-01-09 | 郑州云海信息技术有限公司 | 分布式存储客户端读取数据的方法、装置和设备 |
CN107704527A (zh) * | 2017-09-18 | 2018-02-16 | 华为技术有限公司 | 数据存储方法、装置及存储介质 |
CN108205577A (zh) * | 2016-12-20 | 2018-06-26 | 阿里巴巴集团控股有限公司 | 一种数组构建、数组查询的方法、装置及电子设备 |
CN108804018A (zh) * | 2017-04-26 | 2018-11-13 | 华为技术有限公司 | 一种数据分区的方法及装置 |
CN109597571A (zh) * | 2018-11-15 | 2019-04-09 | 金蝶软件(中国)有限公司 | 数据存储方法、数据读取方法、装置和计算机设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9529538B1 (en) * | 2015-06-18 | 2016-12-27 | International Business Machines Corporation | Virtual accounting container for supporting small volumes of data |
US9607104B1 (en) * | 2016-04-29 | 2017-03-28 | Umbel Corporation | Systems and methods of using a bitmap index to determine bicliques |
-
2019
- 2019-04-17 CN CN201910308373.8A patent/CN110209348B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108205577A (zh) * | 2016-12-20 | 2018-06-26 | 阿里巴巴集团控股有限公司 | 一种数组构建、数组查询的方法、装置及电子设备 |
CN108804018A (zh) * | 2017-04-26 | 2018-11-13 | 华为技术有限公司 | 一种数据分区的方法及装置 |
CN107545021A (zh) * | 2017-05-10 | 2018-01-05 | 新华三信息安全技术有限公司 | 一种数据存储方法及装置 |
CN107562385A (zh) * | 2017-09-13 | 2018-01-09 | 郑州云海信息技术有限公司 | 分布式存储客户端读取数据的方法、装置和设备 |
CN107704527A (zh) * | 2017-09-18 | 2018-02-16 | 华为技术有限公司 | 数据存储方法、装置及存储介质 |
CN109597571A (zh) * | 2018-11-15 | 2019-04-09 | 金蝶软件(中国)有限公司 | 数据存储方法、数据读取方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110209348A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110209348B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
US10152501B2 (en) | Rollover strategies in a n-bit dictionary compressed column store | |
CN110069219B (zh) | 一种数据存储方法、系统及电子设备和存储介质 | |
CN103995855A (zh) | 存储数据的方法和装置 | |
WO2020119029A1 (zh) | 分布式任务调度方法、系统及存储介质 | |
CN114996173B (zh) | 一种管理存储设备写操作的方法和装置 | |
KR20160016744A (ko) | 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템 | |
CN112328688A (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN111813517A (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
US11287997B2 (en) | Method, electronic device and computer program product for managing disk array | |
CN108205559B (zh) | 一种数据管理方法及其设备 | |
CN104063377A (zh) | 信息处理方法和使用其的电子设备 | |
JP2008516320A (ja) | メモリフレームのサイズを決定する方法および装置 | |
CN111625180B (zh) | 数据写入方法及装置、存储介质 | |
CN111381948A (zh) | 分布式计算任务处理方法、装备及电子设备 | |
CN110780820A (zh) | 一种连续存储空间确定方法、装置及电子设备和存储介质 | |
CN115543859A (zh) | 多分区ssd的磨损均衡优化方法、装置、设备及介质 | |
CN114995770A (zh) | 一种数据处理方法、装置、设备、系统及可读存储介质 | |
CN114238264A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110362575B (zh) | 一种生成数据的全局索引的方法及装置 | |
US9990278B2 (en) | Overlaid erase block mapping | |
CN109462543B (zh) | 邮件下载方法、装置、计算机设备和存储介质 | |
CN105468603A (zh) | 数据选择方法及装置 | |
CN112905587A (zh) | 数据库的数据管理方法、装置及电子设备 | |
CN106528577B (zh) | 一种设置待清理文件的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |