数据存储方法、装置、电子设备及存储介质制造方法及图纸

技术编号:22054342 阅读:73 留言:0更新日期:2019-09-07 14:57
本申请提供了一种数据存储方法、装置、终端及存储介质。该方法包括:获取目标业务的待存储数据;当目标业务的数据总量小于预设阈值时,按照分区方式存储待存储数据;其中,数据总量是指待存储数据的数量与目标业务的已存储数据的数量之和,预设方式是指通过存储在分区中的数值,以及分区来表示数据的方式;当数据总量大于或等于预设阈值时,按照位图方式存储待存储数据。本申请实施例提供的技术方案,可以避免在数据量小且稀疏时采用位图方式所造成的空间浪费问题,节省电子设备的内存空间。

Data storage methods, devices, electronic devices and storage media

【技术实现步骤摘要】
数据存储方法、装置、电子设备及存储介质
本申请实施例涉及存储
,特别涉及一种数据存储方法、装置、电子设备及存储介质。
技术介绍
目前,电子设备在执行某项业务的过程中会产生大量数据。上述数据需要存储在电子设备中,以对业务的执行过程进行记录、存档。相关技术中,电子设备通过位图(Bitmap)算法存储数据。具体地,终端根据待存储数据的取值范围获取相应大小的字节空间,之后根据上述取值范围,以及每个数据的取值确定每个数据在上述字节空间中的存储位置,并将该存储位置设置为1。示例性地,电子设备需要存储0到7内的5个元素(4,7,2,5,3),首先电子设备开辟一个字节的空间,对于第1个元素4,其在0到7内位于第五位,此时电子设备将上述空间中的第五个位置设置为1,电子设备按照同样的方式处理上述其它四个元素,得到“00111101”。Bitmap算法存在如下缺点:当数据的取值范围较大,但数据量较小时,容易造成空间浪费。
技术实现思路
本申请实施例提供了一种数据存储方法、装置、电子设备及存储介质,可用于解决相关技术中当数据的取值范围较大,但数据量较小时采用Bitmap算法造成空间浪费的问题。一方面,本申请实施例提供了一种数据存储方法,所述方法包括:获取目标业务的待存储数据;当所述目标业务的数据总量小于预设阈值时,按照分区方式存储所述待存储数据;其中,所述数据总量是指所述待存储数据的数量与所述目标业务的已存储数据的数量之和,所述预设方式是指通过存储在分区中的数值,以及所述分区来表示数据的方式;当所述数据总量大于或等于所述预设阈值时,按照位图方式存储所述待存储数据。另一方面,本申请实施例提供了一种数据存储装置,所述装置包括:数据获取模块,用于获取目标业务的待存储数据;第一存储模块,用于当所述目标业务的数据总量小于预设阈值时,按照分区方式存储所述待存储数据;其中,所述数据总量是指所述待存储数据的数量与所述目标业务的已存储数据的数量之和,所述预设方式是指通过存储在分区中的数值,以及所述分区来表示数据的方式;第二存储模块,用于当所述数据总量大于或等于所述预设阈值时,按照位图方式存储所述待存储数据。又一方面,本申请实施例提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述一方面所述的数据存储方法。又一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述一方面所述的数据存储方法。又一方面,提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于执行上述一方面所述的数据存储方法。本申请实施例提供的技术方案可以带来如下有益效果:通过根据某一业务的数据总量来选择存储方式。具体地,当数据总量较小时,通过在分区中存储的数值,以及该分区标识(例如分区编号)来存储业务数据;当数据总量较大时,通过位图方式来存储业务数据。本申请实施例提供的技术方案,可以避免在数据量小且稀疏时采用位图方式所造成的空间浪费问题,节省电子设备的内存空间。附图说明图1是相关技术提供的RoaringBitmap算法的示意图;图2是本申请一个实施例示出的应用场景的示意图;图3是本申请一个实施例示出的数据存储方法的流程图;图4是本申请一个实施例示出的数据存储的示意图;图5是本申请另一个实施例示出的数据存储方法的流程图;图6是本申请一个实施例示出的数据存储装置的框图;图7是本申请一个实施例示出的电子设备的框图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。相关技术中还提供了一种RoaringBitmap算法。RoaringBitmap算法的具体实现流程如下:将整型数字(32位)拆分成高低两个短整型(16位),之后根据高位来确定分区(key),并在确定的分区中存储低位。由于高位有65536种组合方式,因此电子设备中包括65536个分区。此外,当每个分区中存储的低位为4096时,空间消耗已经等同于一个长度为65535的bitmap,而数据超过4096时,内存空间会持续增长,而Bitmap在存储相同数量的数据情况下,内存空间不会继续增长,为了节省内存空间,电子设备会对该分区进行Bitmap转换。结合参考图1,其示出了RoaringBitmap算法的示意图。32位的整型数字被拆分为高16位和低16位。电子设备根据高16位来确定分区,之后在在确定出的分区中的short数组中存储低16位。当某一分区存储的数据达到4096个时,对该分区进行Bitmap转换。RoaringBitmap算法存在如下缺点:一方面RoaringBitmap的分区数量固定为65536,分区容量固定为4096,无法根据业务需求进行灵活调整,导致内存空间被浪费;另一方面RoaringBitmap的每个分区所占用的内存空间是根据存储的数据数量动态增长的,增长过程中会造成内存浪费,因此当每个分区的数据数量快要达到上限时,内存空间被浪费的较多;再一方面按照RoaringBitmap算法存储数据时查找数据的耗时较长。本申请实施例提供的技术方案,通过根据某一业务的数据总量来选择存储方式。具体地,当数据总量较小时,通过在分区中存储的数值,以及该分区标识(例如分区编号)来存储业务数据;当数据总量较大时,通过位图方式来存储业务数据。本申请实施例提供的技术方案,可以避免在数据量小且稀疏时采用位图方式所造成的空间浪费问题,节省电子设备的内存空间。另外,本申请实施例提供的技术方案,由于可以根据业务需求自定义分区数量,以及每个分区的数据容量,相较于RoaringBitmap算法采用的固定分区数量以及固定容量,本申请实施例能够在满足业务需求的前提下,减小对内存空间的消耗,节省电子设备的内存空间。本申请实施例提供的技术方案,可以应用在电子设备中。该电子设备可以是个人计算机(PersonalComputer,PC),也可以是服务器。服务器可以是一台服务器,也可以是多台服务器构成的服务器集群,还可以是一个云计算服务中心。在本申请实施例中,仅以电子设备为服务器为例进行说明。本申请实施例提供的技术方案,可以应用在大数据存储及统计
例如,对于用户量较大的应用程序,电子设备通过本申请实施例提供的技术方案对其新增用户,启动用户、启动次数等多个维度的数据进行存储及统计。结合参考图2,其示出了对某一应用程序的多个维度的数据进行统计的示意图。上述多个维度的数据包括新增用户、联网用户、联网次数等等。请参考图3,其示出了本申请一个实施例示出的数据存储方法的流程图。该方法可以包括如下步骤:步骤301,获取目标业务的待存储数据。目标业务可以是存在大数据实时统计需求的业务。例如,对于用户量较高的应用程序,电子设备需要对其的新增用户、启动用户、启动次数等多个维度的数据进行统计。电子设备可以从与其建立有通信连接的其它设备中获取待存储数据。示例性地,当目标业务为某一应用程序的统计业务时,电子设备可以与该应用程序对本文档来自技高网
...

【技术保护点】
1.一种数据存储方法,其特征在于,所述方法包括:获取目标业务的待存储数据;当所述目标业务的数据总量小于预设阈值时,按照分区方式存储所述待存储数据;其中,所述数据总量是指所述待存储数据的数量与所述目标业务的已存储数据的数量之和,所述分区方式是指通过存储在分区中的数值,以及所述分区来表示数据的方式;当所述数据总量大于或等于所述预设阈值时,按照位图方式存储所述待存储数据。

【技术特征摘要】
1.一种数据存储方法,其特征在于,所述方法包括:获取目标业务的待存储数据;当所述目标业务的数据总量小于预设阈值时,按照分区方式存储所述待存储数据;其中,所述数据总量是指所述待存储数据的数量与所述目标业务的已存储数据的数量之和,所述分区方式是指通过存储在分区中的数值,以及所述分区来表示数据的方式;当所述数据总量大于或等于所述预设阈值时,按照位图方式存储所述待存储数据。2.根据权利要求1所述的方法,其特征在于,所述按照分区方式存储所述待存储数据,包括:对于所述待存储数据中的第k个数据,将所述第k个数据的取值除以分区数量,得到商和余数,所述k为正整数;根据所述商确定所述第k个数据对应的目标分区标识;将所述余数存储至所述目标分区标识对应的目标分区中。3.根据权利要求2所述的方法,其特征在于,所述将所述余数存储至所述目标分区标识对应的目标分区中,包括:当所述目标分区中的数据数量符合预设条件时,对所述目标分区进行扩容处理,得到扩容处理后的所述目标分区;将所述余数存储至所述扩容处理后的所述目标分区。4.根据权利要求3所述的方法,其特征在于,所述对所述目标分区进行扩容处理,得到扩容处理后的所述目标分区,包括:从配置文件中获取扩容系数,所述扩容系数为大于1的系数;将所述目标分区的原始容量与所述扩容系数的乘积,确定为所述扩容处理后的所述目标分区的容量;根据所述扩容处理后的所述目标分区的容量,生成所述扩容处理后的所述目标分区。5.根据权利要求1至4任一项所述的方法,其特征在于,所述按照分区方式存储所述待存储数据...

【专利技术属性】
技术研发人员:彭渊
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

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

1