CN111290850A - 一种数据存储方法、装置及设备 - Google Patents

一种数据存储方法、装置及设备 Download PDF

Info

Publication number
CN111290850A
CN111290850A CN201811497246.9A CN201811497246A CN111290850A CN 111290850 A CN111290850 A CN 111290850A CN 201811497246 A CN201811497246 A CN 201811497246A CN 111290850 A CN111290850 A CN 111290850A
Authority
CN
China
Prior art keywords
memory
queue
data
queues
memory queue
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.)
Granted
Application number
CN201811497246.9A
Other languages
English (en)
Other versions
CN111290850B (zh
Inventor
王鹏
贺婷
李芳�
费菲
王斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Group Shanxi Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Group Shanxi Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Group Shanxi Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201811497246.9A priority Critical patent/CN111290850B/zh
Publication of CN111290850A publication Critical patent/CN111290850A/zh
Application granted granted Critical
Publication of CN111290850B publication Critical patent/CN111290850B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据存储方法、装置及设备,属于数据存储技术领域,用于减少内存的浪费,提高内存利用率。该方法包括:获得待存储的目标数据;从N个内存队列中确定与所述目标数据的数据量匹配的目标内存队列,其中,N为大于或等于2的整数,每个内存队列被划分为多个内存容量相等的内存块,所述N个内存队列中的至少两个内存队列所划分的内存块的内存容量不同;将所述目标数据存储在所述目标内存队列的空闲内存块中。

Description

一种数据存储方法、装置及设备
技术领域
本发明涉及数据存储技术领域,尤其涉及一种数据存储方法、装置及设备。
背景技术
随着互联网、社交网络、物联网的快速发展,会产生大量的数据,例如,对于物联网来说,物联网中所使用的传感器可能会不间断地采集数据,为了实现对海量数据的存储和处理,大数据技术应运而生。随着数据越来越多,也就需要越多越大的空间来存储这些数据,对于数据存储资源的分配是一个需要解决的问题。
对于数据存储的方式,目前一般是先分配一块内存空间,当需要有数据存储时,则将需要存储的数据依次存储到该内存空间的各个内存块中,然而,当前分配给待存储数据的内存块的内存大小可能与该待存储数据的实际数据量相差较大,这样则可能导致较多的内存浪费,所以内存利用率较低。
发明内容
本发明实施例提供一种数据存储方法、装置及设备,用于解决内存利用率较低的技术问题,以减少数据存储时的内存浪费,提高内存利用率。
第一方面,提供一种数据存储方法,所述方法包括:
获得待存储的目标数据;
从N个内存队列中确定与所述目标数据的数据量匹配的目标内存队列,其中,N为大于或等于2的整数,每个内存队列被划分为多个内存容量相等的内存块,所述N个内存队列中的至少两个内存队列所划分的内存块的内存容量不同;
将所述目标数据存储在所述目标内存队列的空闲内存块中。
可选的,从N个内存队列中确定与所述目标数据的数据量匹配的目标内存队列,包括:
从所述N个内存队列中确定单个内存块的内存容量大于等于所述目标数据的数据量的候选内存队列;
确定每个候选内存队列中的单个内存块的内存容量与所述目标数据的数据量之间的差值;
根据获得的差值和预定选择规则,从所述候选内存队列中确定所述目标内存队列。
可选的,根据获得的差值和预定选择规则,从所述候选内存队列中确定所述目标内存队列,包括:
将获得的差值中的最小差值对应的内存队列确定为所述目标内存队列;
或者,在获得的差值中的最小差值对应的内存队列中的内存块的使用比例大于等于第一预定比例时,将差值倒数第二对应的内存队列确定为所述目标内存队列。
可选的,所述方法还包括:
从所述N个内存队列中确定内存块的使用比例大于等于第二预定比例的第一内存队列;
创建具有预定内存容量的新内存队列,并根据所述第一内存队列将所述新内存队列划分为多个内存块。
可选的,根据所述第一内存队列将所述新内存队列划分为多个内存块,包括:
以与所述第一内存队列中的单个内存块的内存容量划分所述新内存队列;
或者,以第一内存容量与第二内存容量之间的一个内存容量划分所述新内存队列,其中,所述第一内存容量为所述第一内存队列中单个内存块的内存容量,所述第二内存容量为第二内存队列中单个内存块的内存容量,所述第二内存队列为单个内存块的内存容量小于所述第一内存容量且最大的内存队列。
可选的,根据所述第一内存队列将所述新内存队列划分为多个内存块,包括:
确定所述第一内存队列中的所有内存块中已经存储的数据的第一平均数据量;
以所述第一平均数据量划分所述新内存队列。
可选的,所述方法还包括:
从所述N个内存队列中确定内存块的使用比例大于等于第二预定比例的第一内存队列;
确定预定时间段内存储于所述N个内存队列中的所有数据的第二平均数据量,其中,所述预定时间段的终止时刻为创建所述新内存队列的时刻;
以所述第二平均数据量划分所述新内存队列。
第二方面,提供一种数据存储装置,所述数据存储装置包括:
获得模块,用于获得待存储的目标数据;
确定模块,用于从N个内存队列中确定与所述目标数据的数据量匹配的目标内存队列,其中,N为大于或等于2的整数,每个内存队列被划分为若干个内存容量相等的内存块,所述N个内存队列中的至少两个内存队列所划分的内存块的内存容量不同;
存储模块,用于将所述目标数据存储在所述目标内存队列的空闲内存块中。
可选的,所述确定模块,用于:
从所述N个内存队列中确定单个内存块的内存容量大于等于所述目标数据的数据量的候选内存队列;
确定每个候选内存队列中的单个内存块的内存容量与所述目标数据的数据量之间的差值;
根据获得的差值和预定选择规则,从所述候选内存队列中确定所述目标内存队列。
可选的,所述确定模块,用于:
将获得的差值中的最小差值对应的内存队列确定为所述目标内存队列;
或者,在获得的差值中的最小差值对应的内存队列中的内存块的使用比例大于等于第一预定比例时,将差值倒数第二对应的内存队列确定为所述目标内存队列。
可选的,所述数据存储装置还包括创建模块,用于:
从所述N个内存队列中确定内存块的使用比例大于等于第二预定比例的第一内存队列;
创建具有预定内存容量的新内存队列,并根据所述第一内存队列将所述新内存队列划分为多个内存块。
可选的,所述创建模块,用于:
以与所述第一内存队列中的单个内存块的内存容量划分所述新内存队列;
或者,以第一内存容量与第二内存容量之间的一个内存容量划分所述新内存队列,其中,所述第一内存容量为所述第一内存队列中单个内存块的内存容量,所述第二内存容量为第二内存队列中单个内存块的内存容量,所述第二内存队列为单个内存块的内存容量小于所述第一内存容量且最大的内存队列。
可选的,所述创建模块,用于:
确定所述第一内存队列中的所有内存块中已经存储的数据的第一平均数据量;
以所述第一平均数据量划分所述新内存队列。
可选的,所述创建模块,用于:
从所述N个内存队列中确定内存块的使用比例大于等于第二预定比例的第一内存队列;
确定预定时间段内存储于所述N个内存队列中的所有数据的第二平均数据量,其中,所述预定时间段的终止时刻为创建所述新内存队列的时刻;
以所述第二平均数据量划分所述新内存队列。
第三方面,提供一种数据存储设备,所述设备包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中任一方法包括的步骤。
第四方面,提供一种存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第一方面中任一方法包括的步骤。
在本发明实施例中,可以预先配置多个内存队列,例如可以配置N个内存队列,并且将各个内存队列划分为不同内存容量的内存块,从而可以通过不同内存大小的内存块来对不同数据量的数据进行匹配存储,例如,对于待存储的目标数据来说,可以从N个内存队列中选择出与该目标数据的数据量匹配的(例如数据量最接近)的内存块来存储该目标数据,这样可以尽量将接近目标数据的数据量的内存块分配来存储该目标数据,从而可以尽量减少一个内存块在存储数据后的内存剩余,减少内存浪费,节约内存空间,提高内存利用率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例中的数据存储方法的流程图;
图2为本发明实施例中的内存队列被划分为内存块的示意图;
图3为本发明实施例中的内存队列被划分为内存块的另一示意图;
图4为本发明实施例中的数据存储装置的结构框图;
图5为本发明实施例中的数据存储装置的另一结构框图;
图6为本发明实施例中的数据存储设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例中,“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
本发明实施例中的数据存储方法可以应用于数据存储设备,即数据存储方法包括的各步骤可以由数据存储设备执行。该数据存储设备例如可以是手机、平板电脑、个人数字助理(PersonalDigital Assistant,PDA)、穿戴式设备(例如智能手表或智能手环)等终端设备,或者也可以是例如计算机、计算机集群等服务器,无论是哪种类型的数据存储设备,其具有数据存储功能。
下面结合说明书附图介绍本发明实施例提供的技术方案。
请参见图1,本发明实施例提供一种数据存储方法,该方法可以应用于前述的数据存储设备,该方法的具体流程描述如下。
步骤101:获得待存储的目标数据。
为了便于描述,本申请实施例中将需要存储的数据称作目标数据,即目标数据是指待存储的数据。在具体实施过程中,目标数据可以是各种类型的数据,例如结构化数据、半结构化数据或者非结构化数据(例如声音、图片、视频等数据),目标数据可以是数据块或者数据项,例如,为了便于对数据进行准确的分析和处理,目标数据是数据量较小的数据项。
在本发明实施例中,数据存储设备中的应用程序在运行的过程中,可能会动态地产生需要存储的目标数据,或者,例如物联网中的各种传感器可以实时采集得到数据并将采集到的数据发送给数据存储设备进行存储,那么此时目标数据就可以是传感器所采集得到的数据,又或者,目标数据是其它设备发送给数据存储设备以进行存储的数据,等等。也就是说,本发明实施例中的目标数据的获得方式可以包括多种,而在不同的应用场景下获得方式可能不同。
步骤102:从N个内存队列中确定与目标数据的数据量匹配的目标内存队列,其中,N为大于或等于2的整数,每个内存队列被划分为多个内存容量相等的内存块,N个内存队列中的至少两个内存队列所划分的内存块的内存容量不同。
本发明实施例中,可以针对不同的应用或者不同的业务设置对应的内存队列组,例如,针对应用1可以预先配置内存队列组1,针对应用2可以预先配置内存队列组2,等等。又例如,针对第一种类型的业务可以预先配置内存队列组3,针对第二种类型的业务可以预先配置内存队列组4,等等。其中的内存队列组是指由至少两个内存队列所组成的集合,而针对不同应用或者不同业务所配置的内存队列组所包括的内存队列的数量可以相同或者也可以不同,例如针对所有应用和所有类型的业务所配置的内存队列组均包括M个内存队列,而M的取值为大于或等于2的整数,例如为4、6或其它取值,又例如,针对应用1和应用2所配置的内存队列组均包括3个内存队列,以及针对应用3所配置的内存队列组包括5个内存队列,等等。
本发明实施例中,为每个应用或者每种类型的业务所配置的内存队列组所包括的内存队列的数量可以根据该应用或者业务类型的数据结构决定,具体来说可以根据数据大致的数据量决定,例如,针对某个应用,在该应用运行过程所产生的数据的数据量大小差异较大,那么则可以对应配置包括较多数量的内存队列,以便于以不同的内存队列分别来存储不同数据量的数据。
针对每个内存队列组来说,其中包括的每个内存队列所分配的内存大小可以是相同的,例如均是1M,或者,部分内存队列所分配的内存大小也可以是不同的,例如部分内存队列的内存大小是1M,其它部分的内存队列的内存大小是1.2M,等等。
针对每个内存队列组来说,其中包括的每个内存队列均被划分为多个内存容量相等的内存块,即,针对一个内存队列来说,其可以被均匀划分为内存大小相等的多个内存块,而不同的内存队列进行划分时所采用的内存划分单位一般是不同的,也就是说,不同的内存队列在被划分后的单个内存块的内存容量是不等的,在一些可能的实施方式中,针对一个内存队列组而言,在被内存划分之后,也可能有一些内存队列中单个内存块的内存容量是相同的,即一个内存队列组所包括的多个内存队列中的单个内存块的内存容量均是不同的,或只有部分不同,换言之,一个内存队列组所包括的多个内存队列中至少有两个内存队列分别所划分的内存块的内存容量不同。
以图2所示的内存队列组为例,该内存队列组包括内存队列1、内存队列2、内存队列3、内存队列4在内的4个内存队列,其中的内存队列1被划分为内存容量均为100B的3个内存块,内存队列2被划分为内存容量均为64B的5个内存块,内存队列3被划分为内存容量均为48B的6个内存块,内存队列4被划分为内存容量均为32B的10个内存块,可见,内存队列1、内存队列2、内存队列3、内存队列4均被均匀划分为多个内存容量大小相同的内存块,并且在划分之后,不同的内存队列中单个内存块的内存容量是不同的,另外,其中的内存队列2和内存队列4所包括的内存大小是相同的(均是320B),而内存队列1、内存队列2(或内存队列4)、内存队列3所包括的内存大小是不相同的。
在本申请实施例中,针对一个内存队列组来说,可以任意配置每个内存队列中所划分的内存块的内存容量,且尽量保证各个内存队列中的内存块的大小不同。或者也可以采用固定的增长因子来确定每个内存队列中所划分的内存块的内存大小,该增长因子可以是以“倍数”的形式增加内存块的内存容量,或者也可以是以“和”的形式增加内存块的内存容量,举例来说,假设一内存队列组包括内存队列A、内存队列B和内存队列C这3个内存队列,其中的内存队列A中所划分的内存块的内存容量是32B,假设增长因子是2,按照“倍数增长”的方式,那么内存队列B中所划分的内存块的内存容量则可以是32B*2=64B,以及内存队列C中所划分的内存块的内存容量则可以是64B*128B,又例如增长因子是16B,按照“和增长”的方式,那么内存队列B中所划分的内存块的内存容量则可以是32B+16B=48B,以及内存队列C中所划分的内存块的内存容量则可以是48B+16B=64B。由于倍数增长的趋势大于和增长的趋势,当所存储的数据整体上的数据量是分布在一个较大范围内时则可以采用倍数增长的方式,当所存储的数据整体上的数据量是分布在一个较小范围内时则可以采用和增长的方式,这样可以实现对不同分布趋势的数据的匹配存储,以实现数据的灵活存储。
需要说明的是,本发明实施例中针对内存队列的内存块的均匀划分,也可以并非是绝对的均匀,例如请参见图3所示的内存队列3的内存划分示意图,内存队列3是以48B的内存容量来均匀划分,但是由于内存队列3的总内存容量是预先配置好了的,例如是290B,所以以48B是难以完全均匀划分的,此时则可以将剩余的较少的内存与划分的最后一个内存块合并为一个内存块,即如图3中所示的50B。当然,图3只是一种示意性的说明,当难以对某个内存队列的内存绝对均匀的划分时,则可以采用与图3类似的方式进行处理。
在获得待存储的目标数据之后,可以先判断该目标数据所对应的应用或者业务类型,再确定与之对应的内存队列组,例如确定出的与目标数据对应的内存队列组包括N个内存队列,而该N个内存队列中的每个内存队列已经预先按照前述介绍的方式划分为多个内存容量相等的内存块了。进一步地,为了实现对目标数据的匹配存储,以确保目标数据能够完全存储且又尽量占用较小的内存,则可以根据目标数据的数据量从该N个内存队列中确定出与该目标数据匹配的内存队列,例如将确定出的匹配的内存队列称作目标内存队列。
根据目标数据的数据量所确定出的目标内存队列中所划分的一个内存块的内存容量是能够足以存储目标数据的,即是大于等于目标数据的数据量的,并且,为了减少内存浪费以提高内存利用率,目标内存队列中的每个内存块的内存容量是尽量接近目标数据的数据量的,这样可以避免将内存过大的内存块分配给目标数据进行存储,从而可以尽量地减少内存的剩余,以此降低内存浪费,提高内存利用率。
在一种可能的实施方式中,例如可以先从N个内存队列中确定出单个内存块的内存容量大于等于目标数据的数据量的候选内存队列,以图2所示的内存队列组为例,假设目标数据的数据量45B,那么筛选出来的候选内存队列则为内存队列1、内存队列2和内存队列3,再确定每个候选内存队列中的单个内存块的内存容量与目标数据量的数据量之间的差值,例如将与内存队列1、内存队列2和内存队列3之间的差值分别以第一差值、第二差值和第三差值表示,根据图2可知,第一差值是55B,第二差值是19B,以及第三差值是3B。进一步地,可以根据获得的这些差值以及预定选择规则从候选内存队列中确定出最终的目标内存队列。
在一种可能的实施方式中,若确定出的候选内存队列只有1个,那么则可以直接将其确定为目标内存队列。
在另一种可能的实施方式中,可以直接将获得的差值中的最小差值对应的内存队列确定为目标内存队列,继续前述例子,由于内存队列3对应的第三差值是最小的,那么则可以将内存队列3作为目标内存队列,这样选择内存量与目标数据的数据量最接近的内存块对目标数据进行存储,可以最大程度上减少内存的浪费。当然需要说明的是,在将内存队列3选择作为目标内存队列之前,还可以先确保内存队列3中还有空闲的内存块剩余,这样可以确保目标数据的及时存储。
在另一种可能的实施方式中,如上所述的,在将内存队列3选择作为目标内存队列之前,还可以再判断内存队列3中的内存块的使用比例是否大于等于第一预定比例(例如90%),若小于第一预定比例,则表明内存队列3中还有一定量的空闲内存块,此时则可以如前所述的将其作为目标内存队列,若大于等于第一预定比例,表明内存队列3中剩余的空闲内存块较少,此时为了为内存队列3尽量留下一些空闲内存块以便后续处理一些紧急存储任务或者另做他用,此时则可以退其次的再将候选内存队列中的差值倒数第二所对应的内存队列确定为目标内存队列,继续图2的例子,候选内存队列中差值倒数第二的是第二差值(即19B),那么则可以将第二差值对应的内存队列2作为最终的目标内存队列,以实现内存队列的灵活选择,确保目标数据的及时存储。
步骤103:将目标数据存储在目标内存队列的空闲内存块中。
在确定出目标内存队列之后,则可以直接将目标数据存储在目标内存队列的一个空闲内存块中,以实现对目标数据的及时存储,同时提高内存利用率。
在本发明实施例中,可以预先配置多个内存队列,例如可以配置N个内存队列,并且将各个内存队列划分为不同内存容量的内存块,从而可以通过不同内存大小的内存块来对不同数据量的数据进行匹配存储,例如,对于待存储的目标数据来说,可以从N个内存队列中选择出与该目标数据的数据量匹配的(例如数据量最接近)的内存块来存储该目标数据,这样可以尽量将接近目标数据的数据量的内存块分配来存储该目标数据,从而可以尽量减少一个内存块在存储数据后的内存剩余,减少内存浪费,节约内存空间,提高内存利用率。
在本发明实施例中,针对一个内存队列组而言,例如以前述的包括N个内存队列的内存队列组来说,还可以实现对该N个内存队列的更新。一种具体的实施方式是,可以定期或者根据一定的触发条件检测N个内存队列中的每个内存队列中的内存块的使用比例,即可以检测每个内存队列中的已经存储有数据的内存块占据所有内存块的比例,若发现某个内存队列的内存块的使用比例大于等于第二预定比例(例如95%或100%)时,表明该内存队列中的内存块即将被使用完毕,此时若再有其它数据需要存储时,则可能没有匹配的内存块能够存储,从而可能导致数据无法及时存储,在该种情形下,则可以再创建新的内存队列来解决该问题。
具体来说,可以先检测N个内存队列中是否有内存块的使用比例大于等于第二预定比例的内存队列,若有,例如确定出的是第一内存队列,那么则可以再创建具有预定内存容量的新内存队列,其中的预定内存容量例如可以是第一内存队列的总内存大小,或者例如可以是N个内存队列的平均内存大小,等等。进一步地,可以按照预定划分策略划分该新内存队列,即以预定划分策略将该新内存队列划分为多个内存块。
为了便于理解,以下对预定划分策略的一些可能的实施方式进行举例说。
例如,可以根据第一内存队列将新内存队列划分为多个内存块;或者,可以根据已经存储的数据来划分新内存队列。
在一种可能的实施方式中,例如可以以与第一内存队列中单个内存块的内存容量划分新内存队列,继续以图2为例,假设确定出的内存块的使用比例大于等于第二预定比例的第一内存队列是图2中的内存队列2,可见内存队列2中的单个内存块的内存容量是64B,那么则可以64B来对新内存队列进行划分,也就是将新内存队列划分为多个内存容量均为64B的内存块。通过该方式得到的新内存队列与第一内存队列的划分方式完全一样,相当于就是第一内存队列的替代补充,以在第一内存队列将要存满数据时以便于替代第一内存队列存储其它数据。
在另一种可能的实施方式中,可以在第一内存容量与第二内存容量之间取的一个内存容量来划分新内存队列,可选的,例如可以取第一内存容量和第二内存容量的平均值来划分新内存队列。其中,第一内存容量为第一内存队列中单个内存块的内存容量,第二内存容量为第二内存队列中单个内存块的内存容量,继续上述例子,假设第一内存队列是图2中的内存队列2,那么第一内存容量即为64B,第二内存队列为单个内存块的内存容量小于第一内存容量且最大的内存队列,对应到图2,单个内存块的内存容量小于第一内存容量(即64B的包括48B和32B,而其中最大的是48B,所以第二内存容量即为48B,所以对应的第二内存队列为内存队列3。
进一步地,可以选取64B和48B之间的任意一个内存容量值来划分新内存队列,该任意一个内存容量值例如包括64B、59B、56B(即两者的平均值)、45B或者48B,等等。因为在实际中,第一内存队列中存储的数据的数据量是小于且尽量接近64B的,当第一内存队列将被存满或者已经被存满时,表明最近一段时间内的待存储数据的数据量是分布在64B和48B之间的,所以采用该种方式所划分的新内存队列可以尽量地符合当前的数据存储需求,随着数据的动态变化,可以更加贴合最近一段时间内的待存储数据的数据量分布,从而进一步地减少内存浪费,以提高内存利用率。
在另一种可能的实施方式中,可以先确定第一内存队列中的所有内存块中已经存储的数据的第一平均数据量,再以第一平均数据量划分新内存队列,即以第一平均数据量将新内存队列划分为多个内存块。由于第一内存队列将被存满或者已经被存满,说明最近的数据量分布大致集中在接近第一内存队列中的内存块的内存容量附近,例如第一内存队列是图2中的内存队列2,则表明大部分的已存储的数据均分布在接近64B附近,此时利用第一内存队列中已经存储的数据的平均数据量来划分新内存队列,也可以使得新内存队列能够更加贴合最近一段时间内的待存储数据的数据量分布,从而进一步地减少内存浪费,以提高内存利用率。
在另一种可能的实施方式中,还可以再确定预定时间段内存储于N个内存队列中的所有数据的第二平均数据量,该预定时间段的终止时刻为创建新内存队列的时刻,然后再以第二平均数据量划分新内存队列,即以第二平均数据量将新内存队列划分为多个内存块。与上一种实施方式中类似的,所不同的是,在本实施例中考虑的是所有内存队列中在最近一段时间内的数据量分布,这样可以综合考虑所有的数据情况,进而提高划分的精度,同时也可以减少内存浪费,以提高内存利用率。
本发明实施例中,可以根据在实际中存储的数据的实际大小趋势来划分新创建的内存块的大小,以实现对数据的动态、有效存储,也就是说,可以随着数据保存的深入发展,逐步掌握了数据项大小后,增设新的内存块,使得新增内存块的大小更加贴合数据项的大小,从而进一步地提高内存的使用效率。
上述举例说明了几种划分新内存队列的方式,在具体实施过程中,基于上述划分思想的逻辑指引,本领域技术人员还可以推导出其它可能的划分方式,本实施例就不再一一举例说明了。
基于同一发明构思,请参见图4,本发明实施例提供一种数据存储装置,该数据存储装置能够实现前述的数据存储方法中数据存储设备对应的功能;或者,该数据存储装置也可以是能够支持实现前述的数据存储方法中数据存储设备的功能的装置。该数据存储装置可以是硬件结构、软件模块、或硬件结构加软件模块。该数据存储装置可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。该数据存储装置包括获得模块401、确定模块402和存储模块403。其中:
获得模块401,用于获得待存储的目标数据;
确定模块402,用于从N个内存队列中确定与目标数据的数据量匹配的目标内存队列,其中,N为大于或等于2的整数,每个内存队列被划分为多个内存容量相等的内存块,N个内存队列中的至少两个内存队列所划分的内存块的内存容量不同;
存储模块403,用于将所目标数据存储在目标内存队列的空闲内存块中。
在一种可能的实施方式中,确定模块402用于从N个内存队列中确定单个内存块的内存容量大于等于目标数据的数据量的候选内存队列;并确定每个候选内存队列中的单个内存块的内存容量与目标数据的数据量之间的差值;以及根据获得的差值和预定选择规则,从候选内存队列中确定目标内存队列。
在一种可能的实施方式中,确定模块402用于将获得的差值中的最小差值对应的内存队列确定为目标内存队列;或者,在获得的差值中的最小差值对应的内存队列中的内存块的使用比例大于等于第一预定比例时,将差值倒数第二对应的内存队列确定为目标内存队列。
在一种可能的实施方式中,请参见图5所示,本申请实施例中的数据存储装置还可以包括创建模块501,用于从N个内存队列中确定内存块的使用比例大于等于第二预定比例的第一内存队列;以及创建具有预定内存容量的新内存队列,并根据第一内存队列将新内存队列划分为多个内存块。
在一种可能的实施方式中,创建模块501用于以与第一内存队列中的单个内存块的内存容量划分新内存队列;或者,以第一内存容量与第二内存容量之间的一个内存容量划分新内存队列,第一内存容量为第一内存队列中单个内存块的内存容量,第二内存容量为第二内存队列中单个内存块的内存容量,第二内存队列为单个内存块的内存容量小于第一内存容量且最大的内存队列。
在一种可能的实施方式中,创建模块501用于确定第一内存队列中的所有内存块中已经存储的数据的第一平均数据量;并以第一平均数据量划分新内存队列。
在一种可能的实施方式中,创建模块501用于确定预定时间段内存储于N个内存队列中的所有数据的第二平均数据量,其中,预定时间段的终止时刻为创建新内存队列的时刻;并以第二平均数据量划分新内存队列。
前述的数据存储方法的实施例涉及的各步骤的所有相关内容均可以援引到本发明实施例中的电话号码管理装置所对应的功能模块的功能描述,在此不再赘述。
本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本发明各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
基于同一发明构思,本发明实施例提供一种数据存储设备,该数据存储设备例如可以是前述的终端设备或服务器等能够进行数据存储的设备。该数据存储设备可以是硬件结构、软件模块、或硬件结构加软件模块。该数据存储设备可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
请参见图6所示,本发明实施例中的数据存储设备可以包括至少一个处理器601,以及与至少一个处理器连接的存储器602,本发明实施例中不限定处理器601与存储器602之间的具体连接介质,图6中是以处理器601和存储器602之间通过总线600连接为例,总线600在图6中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线600可以分为地址总线、数据总线、控制总线等,为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本发明实施例中,存储器602存储有可被至少一个处理器601执行的指令,至少一个处理器601通过执行存储器602存储的指令,可以执行前述的数据存储方法中所包括的步骤。
其中,处理器601是数据存储设备的控制中心,可以利用各种接口和线路连接整个数据存储设备的各个部分,通过运行或执行存储在存储器602内的指令以及调用存储在存储器602内的数据,数据存储设备的各种功能和处理数据,从而对数据存储设备进行整体监控。可选的,处理器601可包括一个或多个处理单元,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。在一些实施例中,处理器601和存储器602可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器601可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器602可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器602是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器602还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通过对处理器601进行设计编程,可以将前述实施例中介绍的数据存储方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述的数据存储方法的步骤,如何对处理器601进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
基于同一发明构思,本发明实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的数据存储方法的步骤。
在一些可能的实施方式中,本发明提供的数据存储方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在数据存储设备上运行时,所述程序代码用于使数据存储设备执行本说明书上述描述的根据本发明各种示例性实施方式的数据存储方法中的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种数据存储方法,其特征在于,所述方法包括:
获得待存储的目标数据;
从N个内存队列中确定与所述目标数据的数据量匹配的目标内存队列,其中,N为大于或等于2的整数,每个内存队列被划分为多个内存容量相等的内存块,所述N个内存队列中的至少两个内存队列所划分的内存块的内存容量不同;
将所述目标数据存储在所述目标内存队列的空闲内存块中。
2.如权利要求1所述的方法,其特征在于,从N个内存队列中确定与所述目标数据的数据量匹配的目标内存队列,包括:
从所述N个内存队列中确定单个内存块的内存容量大于等于所述目标数据的数据量的候选内存队列;
确定每个候选内存队列中的单个内存块的内存容量与所述目标数据的数据量之间的差值;
根据获得的差值和预定选择规则,从所述候选内存队列中确定所述目标内存队列。
3.如权利要求2所述的方法,其特征在于,根据获得的差值和预定选择规则,从所述候选内存队列中确定所述目标内存队列,包括:
将获得的差值中的最小差值对应的内存队列确定为所述目标内存队列;
或者,在获得的差值中的最小差值对应的内存队列中的内存块的使用比例大于等于第一预定比例时,将差值倒数第二对应的内存队列确定为所述目标内存队列。
4.如权利要求1-3任一所述的方法,其特征在于,所述方法还包括:
从所述N个内存队列中确定内存块的使用比例大于等于第二预定比例的第一内存队列;
创建具有预定内存容量的新内存队列,并根据所述第一内存队列将所述新内存队列划分为多个内存块。
5.如权利要求4所述的方法,其特征在于,根据所述第一内存队列将所述新内存队列划分为多个内存块,包括:
以与所述第一内存队列中的单个内存块的内存容量划分所述新内存队列;
或者,以第一内存容量与第二内存容量之间的一个内存容量划分所述新内存队列,其中,所述第一内存容量为所述第一内存队列中单个内存块的内存容量,所述第二内存容量为第二内存队列中单个内存块的内存容量,所述第二内存队列为单个内存块的内存容量小于所述第一内存容量且最大的内存队列。
6.如权利要求4所述的方法,其特征在于,根据所述第一内存队列将所述新内存队列划分为多个内存块,包括:
确定所述第一内存队列中的所有内存块中已经存储的数据的第一平均数据量;
以所述第一平均数据量划分所述新内存队列。
7.如权利要求1-3任一所述的方法,其特征在于,所述方法还包括:
从所述N个内存队列中确定内存块的使用比例大于等于第二预定比例的第一内存队列;
确定预定时间段内存储于所述N个内存队列中的所有数据的第二平均数据量,其中,所述预定时间段的终止时刻为创建所述新内存队列的时刻;
以所述第二平均数据量划分所述新内存队列。
8.一种数据存储装置,其特征在于,所述装置包括:
获得模块,用于获得待存储的目标数据;
确定模块,用于从N个内存队列中确定与所述目标数据的数据量匹配的目标内存队列,其中,N为大于或等于2的整数,每个内存队列被划分为若干个内存容量相等的内存块,所述N个内存队列中的至少两个内存队列所划分的内存块的内存容量不同;
存储模块,用于将所述目标数据存储在所述目标内存队列的空闲内存块中。
9.一种数据存储设备,其特征在于,所述设备包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1-7任一所述的方法包括的步骤。
10.一种存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1-7任一所述的方法包括的步骤。
CN201811497246.9A 2018-12-07 2018-12-07 一种数据存储方法、装置及设备 Active CN111290850B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811497246.9A CN111290850B (zh) 2018-12-07 2018-12-07 一种数据存储方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811497246.9A CN111290850B (zh) 2018-12-07 2018-12-07 一种数据存储方法、装置及设备

Publications (2)

Publication Number Publication Date
CN111290850A true CN111290850A (zh) 2020-06-16
CN111290850B CN111290850B (zh) 2024-04-09

Family

ID=71028093

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811497246.9A Active CN111290850B (zh) 2018-12-07 2018-12-07 一种数据存储方法、装置及设备

Country Status (1)

Country Link
CN (1) CN111290850B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860184A (zh) * 2021-01-19 2021-05-28 上海龙旗科技股份有限公司 一种Flash芯片的存储方法及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090216988A1 (en) * 2008-02-27 2009-08-27 Michael Palladino Low overhead memory management system and method
WO2010089795A1 (en) * 2009-02-03 2010-08-12 Hitachi, Ltd. Storage control device, and control method for cache memory
WO2015039569A1 (zh) * 2013-09-22 2015-03-26 华为技术有限公司 副本存储装置及副本存储方法
CN107864391A (zh) * 2017-09-19 2018-03-30 北京小鸟科技股份有限公司 视频流缓存分发方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090216988A1 (en) * 2008-02-27 2009-08-27 Michael Palladino Low overhead memory management system and method
WO2010089795A1 (en) * 2009-02-03 2010-08-12 Hitachi, Ltd. Storage control device, and control method for cache memory
WO2015039569A1 (zh) * 2013-09-22 2015-03-26 华为技术有限公司 副本存储装置及副本存储方法
CN107864391A (zh) * 2017-09-19 2018-03-30 北京小鸟科技股份有限公司 视频流缓存分发方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱玉飞;戴紫彬;徐进辉;李功丽;: "流体系结构密码处理器存储系统的研究与设计" *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860184A (zh) * 2021-01-19 2021-05-28 上海龙旗科技股份有限公司 一种Flash芯片的存储方法及设备

Also Published As

Publication number Publication date
CN111290850B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
CN109783229B (zh) 线程资源分配的方法及装置
CN107360206B (zh) 一种区块链共识方法、设备及系统
CN109783237B (zh) 一种资源配置方法及装置
EP3129880B1 (en) Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system
CN110413412B (zh) 一种基于gpu集群资源分配的方法和装置
CN107968810B (zh) 一种服务器集群的资源调度方法、装置和系统
CN111324427B (zh) 一种基于dsp的任务调度方法及装置
CN109739627B (zh) 任务的调度方法、电子设备及介质
CN109002357B (zh) 资源分配方法、装置及物联网系统
CN111913792B (zh) 一种业务处理方法和装置
CN112148427A (zh) 一种云平台资源分配方法、装置和计算机可读存储介质
CN108241535B (zh) 资源管理的方法、装置及服务器设备
CN110442308A (zh) 一种数据块存储方法、装置、设备及存储介质
CN112860387A (zh) 分布式任务调度方法、装置、计算机设备及存储介质
CN111245732A (zh) 一种流量控制方法、装置及设备
CN109213745B (zh) 一种分布式文件存储方法、装置、处理器及存储介质
CN112817428B (zh) 任务运行方法、装置、移动终端和存储介质
CN109788013B (zh) 分布式系统中作业资源分配方法、装置及设备
CN111290850B (zh) 一种数据存储方法、装置及设备
CN114035947A (zh) 资源动态调配方法、装置、设备及系统
US20160117107A1 (en) High Performance Hadoop with New Generation Instances
CN112612583A (zh) 数据同步方法、装置、计算机设备和可读存储介质
CN112068965A (zh) 数据处理方法、装置、电子设备和可读存储介质
CN109426561A (zh) 一种任务处理方法、装置及设备
CN111625358A (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