CN115048053A - 数据存储方法、装置以及电子设备 - Google Patents
数据存储方法、装置以及电子设备 Download PDFInfo
- Publication number
- CN115048053A CN115048053A CN202210675211.XA CN202210675211A CN115048053A CN 115048053 A CN115048053 A CN 115048053A CN 202210675211 A CN202210675211 A CN 202210675211A CN 115048053 A CN115048053 A CN 115048053A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- key number
- stored
- access frequency
- 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.)
- Pending
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/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/0643—Management of files
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据存储方法、装置以及电子设备。涉及金融科技领域,该方法包括:获取存储于数据库中的原始数据集,其中,上述原始数据集以键值对的形式存储,上述键值对包括键值和键号;确定上述键号的当前访问频次,上述当前访问频次对应的访问操作包括数据写入操作和数据读取操作;根据上述当前访问频次将上述原始数据集分类为热数据和冷数据;将上述热数据存储于内存存储引擎中,将上述冷数据存储于磁盘存储引擎中。通过本申请,解决了相关技术中的数据存储方法在数据存储量过大情况下存在的数据存储成本过高、存储性能较低的问题。
Description
技术领域
本申请涉及金融科技领域,具体而言,涉及一种数据存储方法、装置以及电子设备。
背景技术
随着业务量的不断增长,大数据爆发的时代,分布式键值KV内存数据库具备高性能、高并发的处理能力,但随着数据量的不断递增,对于内存的消耗将不断加大,而内存的价格相比于磁盘高出数十倍,数据存储成本过高,存储性能较低。
针对相关技术中的数据存储方法在数据存储量过大情况下存在的数据存储成本过高、存储性能较低的问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种数据存储方法、装置以及电子设备,以解决相关技术中的数据存储方法在数据存储量过大情况下存在的数据存储成本过高、存储性能较低的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种数据存储方法。该方法包括:获取存储于数据库中的原始数据集,其中,上述原始数据集以键值对的形式存储,上述键值对包括键值和键号;确定上述键号的当前访问频次,上述当前访问频次对应的访问操作包括数据写入操作和数据读取操作;根据上述当前访问频次将上述原始数据集分类为热数据和冷数据;将上述热数据存储于内存存储引擎中,将上述冷数据存储于磁盘存储引擎中。
为了实现上述目的,根据本申请的另一方面,提供了一种数据存储装置。该装置包括:获取模块,用于获取存储于数据库中的原始数据集,其中,上述原始数据集以键值对的形式存储,上述键值对包括键值和键号;记录模块,用于确定上述键号的当前访问频次,上述当前访问频次对应的访问操作包括数据写入操作和数据读取操作;分类模块,用于根据上述当前访问频次将上述原始数据集分类为热数据和冷数据;存储模块,用于将上述热数据存储于内存存储引擎中,将上述冷数据存储于磁盘存储引擎中。
为了实现上述目的,根据本申请的另一方面,提供了一种非易失性存储介质,上述非易失性存储介质存储有多条指令,上述指令适于由处理器加载并执行任意一项上述的数据存储方法。
为了实现上述目的,根据本申请的另一方面,提供了一种电子设备。该电子设备包括一个或多个处理器和存储器,上述存储器用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现任意一项上述的数据存储方法。
通过本申请,采用以下步骤:获取存储于数据库中的原始数据集,其中,上述原始数据集以键值对的形式存储,上述键值对包括键值和键号;确定上述键号的当前访问频次,上述当前访问频次对应的访问操作包括数据写入操作和数据读取操作;根据上述当前访问频次将上述原始数据集分类为热数据和冷数据;将上述热数据存储于内存存储引擎中,将上述冷数据存储于磁盘存储引擎中,达到了通过冷热数据分离的方式对数据库中的数据进行存储的目的,解决了相关技术中的数据存储方法在数据存储量过大情况下存在的数据存储成本过高、存储性能较低的问题。进而达到了降低数据存储成本,提高数据访问性能的效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的数据存储方法的流程图;
图2是根据本申请实施例的一种可选的内存存储引擎中数据存储结构的示意图;
图3是根据本申请实施例的一种可选的磁盘存储引擎中数据存储结构的示意图;
图4是根据本申请实施例的一种可选的键号排列结果的示意图;
图5是根据本申请实施例提供的数据存储方法的流程图;
图6是根据本申请实施例的数据存储装置的示意图;
图7是用于实施本申请实施例的数据存储方法的电子设备示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“目标”、“目标”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
布隆过滤器:实际上是一个很长的二进制相量和一系列随机映射函数,可用于检索一个元素是否在一个集合中,其优点在于空间效率和查询时间比一般算法要好得多,缺点在于有一定的误识别率和删除困难。
需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
下面结合优选的实施步骤对本发明进行说明,图1是根据本申请实施例提供的数据存储方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取存储于数据库中的原始数据集,其中,上述原始数据集以键值对的形式存储,上述键值对包括键值和键号;
步骤S104,确定上述键号的当前访问频次;
步骤S106,根据上述当前访问频次将上述原始数据集分类为热数据和冷数据;
步骤S108,将上述热数据存储于内存存储引擎中,将上述冷数据存储于磁盘存储引擎中。
可以理解,上述数据库为键值KV数据库,上述当前访问频次对应的访问操作包括数据写入操作和数据读取操作。
可选的,在确定得到上述冷数据和上述热数据后,将上述冷数据对应的目标键号存储至布隆过滤器中,以便于在后续数据读写的过程中快速判断待读写数据对应的键号是否存储于磁盘存储引擎中,以达到提升数据响应速度的目的。
可选的,图2是根据本申请实施例的一种可选的内存存储引擎中数据存储结构的示意图,如图2所示,该数据库中键值对的键号Key和键值对的键值Value的指针,同时通过指针next指向下一个键值对字典项dictEntry。
可选的,图3是根据本申请实施例的一种可选的磁盘存储引擎中数据存储结构的示意图,如图3所示,磁盘存储引擎中以数据页的形式对数据库中的数据进行相应的存储,其中包括:保存其他页(空闲页、分支页)索引位置的Meta page、保存空闲页位置的freeList page、保存分支页(索引页)内容的Branch page、保存冷数据(key+value)的Leafpage以及保存空闲页的Free page。
本申请实施例提供的数据存储方法,通过获取存储于数据库中的原始数据集,其中,上述原始数据集以键值对的形式存储,上述键值对包括键值和键号;确定上述键号的当前访问频次,上述当前访问频次对应的访问操作包括数据写入操作和数据读取操作;根据上述当前访问频次将上述原始数据集分类为热数据和冷数据;将上述热数据存储于内存存储引擎中,将上述冷数据存储于磁盘存储引擎中,达到了通过冷热数据分离的方式对数据库中的数据进行存储的目的,解决了相关技术中的数据存储方法在数据存储量过大情况下存在的数据存储成本过高、存储性能较低的问题。进而达到了降低数据存储成本,提高数据访问性能的效果。
需要说明的是,内存数据库将数据都存储在内存中以提升数据的读写性能,但当数据量过大,甚至海量数据时,将对内存产生巨大消耗,在当今内存价格较高的时代,给经营成本带来了较大开销。因此本申请提出的数据存储方法为一种将内存数据冷热分离的实现及方法,对于大数据量的业务场景,将部分温冷数据保存在磁盘,通过有效的算法来保证访问频率较高的数据在内存中存放,性能不会明显降低的同时,节约经营成本,提升内存数据库的纵向扩展能力。
在一种可选的实施例中,上述根据上述当前访问频次将上述原始数据集分类为热数据和冷数据,包括:
将上述原始数据集中上述当前访问频次小于目标预设访问频次的数据作为上述冷数据;将上述原始数据集中上述当前访问频次大于或等于上述目标预设访问频次的数据作为上述热数据。
可选的,每个键号key关联一个整数h,当键号key被访问时(读或写),增加访问频次,可通过引用计数refcoun来记录访问频次,另外根据键号key的暂停访问时间周期性地减少引用计数refcount,最后根据引用计数refcount的大小来衡量键号key的冷热程度,即可根据键号的冷热程度将原始数据及分类为冷数据和热数据。在内存中维护一个访问频率排序的链表(LFU),访问频率小的数据(即冷数据)排在前面,访问频率高的数据(即热数据)排在后面,排列结果如图4所示。
可选的,根据最少访问LFU算法(Least Frequently Used)找出原始数据集中引用计数refconut小于目标预设访问频次的键号Key对应的数据作为冷数据,然后将键号Key存入布隆过滤器中,将上述冷数据(包括对应的键号Key和键值Value)插入磁盘存储引擎中,以树数据结构B+tree的形式进行存储,并根据数据存储量的多少对上述树数据结构B+tree进行适当的分裂,在将上述冷数据存储至磁盘存储引擎后,利用内核机制自动对上述磁盘存储引擎中的脏页进行刷新,同时释放上述冷数据的键号Key所对应的字典项DictEntry在内存存储引擎中占用的内存空间。
需要说明的是,上述内核机制为操作系统Linux内核中的概念,因硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放在内存中,以提高读写速度,这就叫高速缓存,linux是以页作为高速缓存的单位,当进程修改了高速缓存里面的数据时,该页就会被标记为脏页,内核就会适时地将脏页的数据写入到磁盘中,以保证高速缓存中的数据和磁盘中的数据一致。
在一种可选的实施例中,上述根据上述当前访问频次将上述原始数据集分类为热数据和冷数据,包括:
获取上述内存存储引擎的内存使用量;
当上述内存使用量大于预设存储容量时,将上述原始数据集中上述当前访问频次小于目标预设访问频次的数据作为上述冷数据;将上述原始数据集中上述当前访问频次大于或等于上述目标预设访问频次的数据作为上述热数据。
可选的,当内存存储引擎的内存使用量到达大于预设存储容量时,根据最少访问LFU算法(Least Frequently Used)找出原始数据集中引用计数refconut小于目标预设访问频次的键号Key对应的数据作为冷数据,然后将以上键号Key存入布隆过滤器中,将上述冷数据(包括对应的键号Key和键值Value)插入磁盘存储引擎中,以树数据结构B+tree的形式进行存储,并根据数据存储量的多少对上述树数据结构B+tree进行适当的分裂,在将上述冷数据存储至磁盘存储引擎后,利用内核机制自动对上述磁盘存储引擎中的脏页进行刷新,同时释放上述冷数据的键号Key所对应的字典项DictEntry在内存存储引擎中占用的内存空间。
在一种可选的实施例中,在上述确定上述键号的当前访问频次之前,还包括:
响应作用于对上述原始数据集中目标数据的上述数据写入操作;
判断上述目标数据对应的目标键号是否存储于上述磁盘存储引擎中;
若上述目标键号未存储于上述磁盘存储引擎中,则将上述目标数据存储于上述内存存储引擎中,并将上述目标数据对应的上述当前访问频次累加。
可选的,响应作用于对上述原始数据集中目标数据的上述数据写入操作如果目标数据对应的目标键号Key没有保存在磁盘存储引擎中,则直接将上述目标数据(包括目标键值Value和目标键号Key)写入至内存存储引擎中,同时将上述目标键号Key对应的当前访问频次(即引用计数)加1。
在一种可选的实施例中,上述方法还包括:
若上述目标键号存储于上述磁盘存储引擎中,则判断上述目标键号是否存储于上述磁盘存储引擎对应的磁盘内存中;
若上述目标键号未存储于上述磁盘内存中,则加载上述目标键号对应的数据页;
若上述目标键号存储于上述磁盘内存中,则将上述目标数据存储于上述内存存储引擎中,同时释放上述磁盘存储引擎中用于存储上述目标数据的内存空间。
可选的,若上述目标键号Key已经存储于磁盘存储引擎中,并且上述目标键号未存储于上述磁盘存储引擎对应的磁盘内存中,则加载磁盘文件中与上述目标键号对应的数据页;如果上述目标键号存储于上述磁盘存储引擎对应的磁盘内存中,则将上述目标数据存储于上述内存存储引擎中,同时释放上述磁盘存储引擎中用于存储上述目标数据的内存空间,以保证上述磁盘存储引擎和内存存储引擎中同一键值对应的数据的一致性。需要说明的是,如果上述目标键号对应的数据页中没有其他键号对应的数据,则将该数据也加入空闲free页链表中。
可选的,在释放上述磁盘存储引擎中用于存储上述目标数据的内存空间之后,初始化上述目标键号对应的当前访问频次(即引用计数)为经验值,例如初始化上述目标键号对应的当前访问频次为10。
在一种可选的实施例中,在上述确定上述键号的当前访问频次之前,还包括:
响应作用于对上述原始数据集中目标数据的上述数据读取操作;
判断上述目标数据对应的目标键号是否存储于上述内存存储引擎中;
若上述目标键号存储于上述内存存储引擎中,将上述目标数据对应的上述当前访问频次累加。
可选的,响应作用于对上述原始数据集中目标数据的数据读取操,如果在内存存储引擎中存在上述目标数据对应的目标键号Key,则返回上述目标键号Key对应的目标键值Value,将上述目标键号Key的当前访问频次(即引用计数)加1。
在一种可选的实施例中,上述方法还包括:
若上述目标键号未存储于上述内存存储引擎中,则判断上述目标键号是否存储于布隆过滤器中;
若上述目标键号存储于上述布隆过滤器中,则确定上述目标键号存储于上述磁盘存储引擎中。
需要说明的是,判断上述目标键号是否存储于上述布隆过滤器中,可以达到快速查找并获知目标键号是否存储于磁盘存储引擎中的目的,进而提升数据访问效率。
可选的,若上述目标键号未存储于上述内存存储引擎中,并且上述目标键号也未存储于上述布隆过滤器中,则直接返回空值nil。
在一种可选的实施例中,上述方法还包括:
若上述目标键号存储于上述磁盘存储引擎中,则判断上述目标键号是否存储于上述磁盘存储引擎对应的磁盘内存中;
若上述目标键号未存储于上述磁盘内存中,则加载上述目标键号对应的数据页;
若上述目标键号存储于上述磁盘内存中,则将上述目标数据存储于上述内存存储引擎中,同时释放上述磁盘存储引擎中用于存储上述目标数据的内存空间。
可选的,若通过上述布隆过滤器确定得到上述目标键号存储于上述磁盘存储引擎中,并且上述目标键号未存储于上述磁盘存储引擎对应的磁盘内存中,则加载磁盘文件中与上述目标键号对应的数据页;如果上述目标键号存储于上述磁盘存储引擎对应的磁盘内存中,则将上述目标数据存储于上述内存存储引擎中,同时释放上述磁盘存储引擎中用于存储上述目标数据的内存空间,以保证上述磁盘存储引擎和内存存储引擎中同一键值对应的数据的一致性。需要说明的是,如果上述目标键号对应的数据页中没有其他键号对应的数据,则将该数据也加入空闲free页链表中。
可选的,在释放上述磁盘存储引擎中用于存储上述目标数据的内存空间之后,初始化上述目标键号对应的当前访问频次(即引用计数)为经验值,例如初始化上述目标键号对应的当前访问频次为10。
在一种可选的实施例中,在上述确定上述键号的当前访问频次之前,还包括:
周期性获取上述键号的暂停访问时间;
判断上述暂停访问时间是否达到预设时间;
若上述暂停访问时间达到上述预设时间,则将上述当前访问频次累减。
可选的,上述暂停访问时间可以但不限于为10秒、20秒、30秒等等,用户可根据实际应用需要自行设定。
作为一种可选的实施例,图5是根据本申请实施例提供的数据存储方法的流程图,如图5所示,该方法包括:响应作用于对键号Key1对应的目标数据的访问操作,将上述键号Key1对应的引用计数加1,同时周期性获取原始数据集中各键号对应的暂停访问时间,若上述暂停访问时间达到预设时间,则将该键号的当前访问频次减1,将原始数据集中不同键号对应的数据按照引用计数进行排序,得到此时键号Key1对应的数据的引用计数较小,此时将上述键号Key1对应的数据作为冷数据,并将该冷数据存储至磁盘存储引擎中,同时将上述冷数据对应的键号Key1同步至布隆过滤器中。
需要说明的是,存储于内存存储引擎中的热数据当达到一定访问频次后,可能长时间停止访问,但由于该热数据访问频次的基数较大,会一直存储于内存存储引擎中占用一定的内存,进而造成内存浪费,通过周期性获取上述键号的暂停访问时间;判断上述暂停访问时间是否达到预设时间;若上述暂停访问时间达到上述预设时间,则将上述当前访问频次累减的方式,对长时间停滞访问的热数据的当前访问频次进行周期性递减,进一步保证冷热数据在内存存储引擎和磁盘存储引擎中的动态流动,提升数据存储与访问效率。
需要说明的是,本申请制实施例通过对键值KV数据冷热分离,突破了单个节点由于内存上限带来的数据量的存储限制,大幅增加了单个节点的数据存储能力,在降低内存数据存储成本的情况下,保证了对外服务性能仅有小幅下降,可以同时满足高性能数据访问及海量数据存储的业务需求。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种数据存储装置,需要说明的是,本申请实施例的数据存储装置可以用于执行本申请实施例所提供的用于数据存储方法。以下对本申请实施例提供的数据存储装置进行介绍。
图6是根据本申请实施例的数据存储装置的示意图。如图6所示,该装置包括:获取模块600、记录模块602、分类模块604、存储模块606,其中,
上述获取模块600,用于获取存储于数据库中的原始数据集,其中,上述原始数据集以键值对的形式存储,上述键值对包括键值和键号;
上述记录模块602,与上述获取模块600连接,用于确定上述键号的当前访问频次,上述当前访问频次对应的访问操作包括数据写入操作和数据读取操作;
上述分类模块604,与上述记录模块602连接,用于根据上述当前访问频次将上述原始数据集分类为热数据和冷数据;
上述存储模块606,与上述分类模块604连接,用于将上述热数据存储于内存存储引擎中,将上述冷数据存储于磁盘存储引擎中。
本申请实施例提供的数据存储装置,通过设置上述获取模块600,用于获取存储于数据库中的原始数据集,其中,上述原始数据集以键值对的形式存储,上述键值对包括键值和键号;上述记录模块602,用于确定上述键号的当前访问频次,上述当前访问频次对应的访问操作包括数据写入操作和数据读取操作;上述分类模块604,用于根据上述当前访问频次将上述原始数据集分类为热数据和冷数据;上述存储模块606,用于将上述热数据存储于内存存储引擎中,将上述冷数据存储于磁盘存储引擎中。达到了通过冷热数据分离的方式对数据库中的数据进行存储的目的,解决了相关技术中的数据存储方法在数据存储量过大情况下存在的数据存储成本过高、存储性能较低的问题,进而达到了降低数据存储成本,提高数据访问性能的效果。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;或者,上述各个模块以任意组合的方式位于不同的处理器中。
此处需要说明的是,上述获取模块600、记录模块602、分类模块604、存储模块606对应于中的步骤S102至步骤S108,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在计算机终端中。
需要说明的是,本实施例的可选或优选实施方式可以参见实施例中的相关描述,此处不再赘述。
上述数据存储装置包括处理器和存储器,上述单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来(本发明的目的)。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现上述数据存储方法。
本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述数据存储方法。
如图7所示,本发明实施例提供了一种电子设备,该电子设备10包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:获取存储于数据库中的原始数据集,其中,上述原始数据集以键值对的形式存储,上述键值对包括键值和键号;确定上述键号的当前访问频次,上述当前访问频次对应的访问操作包括数据写入操作和数据读取操作;根据上述当前访问频次将上述原始数据集分类为热数据和冷数据;将上述热数据存储于内存存储引擎中,将上述冷数据存储于磁盘存储引擎中。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:获取存储于数据库中的原始数据集,其中,上述原始数据集以键值对的形式存储,上述键值对包括键值和键号;确定上述键号的当前访问频次,上述当前访问频次对应的访问操作包括数据写入操作和数据读取操作;根据上述当前访问频次将上述原始数据集分类为热数据和冷数据;将上述热数据存储于内存存储引擎中,将上述冷数据存储于磁盘存储引擎中。
可选的,上述计算机程序产品还适于执行初始化有如下方法步骤的程序:将上述原始数据集中上述当前访问频次小于目标预设访问频次的数据作为上述冷数据;将上述原始数据集中上述当前访问频次大于或等于上述目标预设访问频次的数据作为上述热数据。
可选的,上述计算机程序产品还适于执行初始化有如下方法步骤的程序:获取上述内存存储引擎的内存使用量;当上述内存使用量大于预设存储容量时,将上述原始数据集中上述当前访问频次小于目标预设访问频次的数据作为上述冷数据;将上述原始数据集中上述当前访问频次大于或等于上述目标预设访问频次的数据作为上述热数据。
可选的,上述计算机程序产品还适于执行初始化有如下方法步骤的程序:响应作用于对上述原始数据集中目标数据的上述数据写入操作;判断上述目标数据对应的目标键号是否存储于上述磁盘存储引擎中;若上述目标键号未存储于上述磁盘存储引擎中,则将上述目标数据存储于上述内存存储引擎中,并将上述目标数据对应的上述当前访问频次累加。
可选的,上述计算机程序产品还适于执行初始化有如下方法步骤的程序:响应作用于对上述原始数据集中目标数据的上述数据读取操作;判断上述目标数据对应的目标键号是否存储于上述内存存储引擎中;若上述目标键号存储于上述内存存储引擎中,将上述目标数据对应的上述当前访问频次累加。
可选的,上述计算机程序产品还适于执行初始化有如下方法步骤的程序:若上述目标键号未存储于上述内存存储引擎中,则判断上述目标键号是否存储于上述布隆过滤器中;若上述目标键号存储于上述布隆过滤器中,则确定上述目标键号存储于上述磁盘存储引擎中。
可选的,上述计算机程序产品还适于执行初始化有如下方法步骤的程序:若上述目标键号存储于上述磁盘存储引擎中,则判断上述目标键号是否存储于上述磁盘存储引擎对应的磁盘内存中;若上述目标键号未存储于上述磁盘内存中,则加载上述目标键号对应的数据页;若上述目标键号存储于上述磁盘内存中,则将上述目标数据存储于上述内存存储引擎中,同时释放上述磁盘存储引擎中用于存储上述目标数据的内存空间。
可选的,上述计算机程序产品还适于执行初始化有如下方法步骤的程序:周期性获取上述键号的暂停访问时间;判断上述暂停访问时间是否达到预设时间;若上述暂停访问时间达到上述预设时间,则将上述当前访问频次累减。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (11)
1.一种数据存储方法,其特征在于,包括:
获取存储于数据库中的原始数据集,其中,所述原始数据集以键值对的形式存储,所述键值对包括键值和键号;
确定所述键号的当前访问频次,其中,所述当前访问频次对应的访问操作包括数据写入操作和数据读取操作;
根据所述当前访问频次将所述原始数据集分类为热数据和冷数据;
将所述热数据存储于内存存储引擎中,将所述冷数据存储于磁盘存储引擎中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前访问频次将所述原始数据集分类为热数据和冷数据,包括:
将所述原始数据集中所述当前访问频次小于目标预设访问频次的数据作为所述冷数据;将所述原始数据集中所述当前访问频次大于或等于所述目标预设访问频次的数据作为所述热数据。
3.根据权利要求1所述的方法,其特征在于,所述根据所述当前访问频次将所述原始数据集分类为热数据和冷数据,包括:
获取所述内存存储引擎的内存使用量;
当所述内存使用量大于预设存储容量时,将所述原始数据集中所述当前访问频次小于目标预设访问频次的数据作为所述冷数据;将所述原始数据集中所述当前访问频次大于或等于所述目标预设访问频次的数据作为所述热数据。
4.根据权利要求1所述的方法,其特征在于,在所述确定所述键号的当前访问频次之前,还包括:
响应作用于对所述原始数据集中目标数据的所述数据写入操作;
判断所述目标数据对应的目标键号是否存储于所述磁盘存储引擎中;
若所述目标键号未存储于所述磁盘存储引擎中,则将所述目标数据存储于所述内存存储引擎中,并将所述目标数据对应的所述当前访问频次累加。
5.根据权利要求1所述的方法,其特征在于,在所述确定所述键号的当前访问频次之前,还包括:
响应作用于对所述原始数据集中目标数据的所述数据读取操作;
判断所述目标数据对应的目标键号是否存储于所述内存存储引擎中;
若所述目标键号存储于所述内存存储引擎中,将所述目标数据对应的所述当前访问频次累加。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述目标键号未存储于所述内存存储引擎中,则判断所述目标键号是否存储于布隆过滤器中;
若所述目标键号存储于所述布隆过滤器中,则确定所述目标键号存储于所述磁盘存储引擎中。
7.根据权利要求4或6所述的方法,其特征在于,所述方法还包括:
若所述目标键号存储于所述磁盘存储引擎中,则判断所述目标键号是否存储于所述磁盘存储引擎对应的磁盘内存中;
若所述目标键号未存储于所述磁盘内存中,则加载所述目标键号对应的数据页;
若所述目标键号存储于所述磁盘内存中,则将所述目标数据存储于所述内存存储引擎中,同时释放所述磁盘存储引擎中用于存储所述目标数据的内存空间。
8.根据权利要求1所述的方法,其特征在于,在所述确定所述键号的当前访问频次之前,还包括:
周期性获取所述键号的暂停访问时间;
判断所述暂停访问时间是否达到预设时间;
若所述暂停访问时间达到所述预设时间,则将所述当前访问频次累减。
9.一种数据存储装置,其特征在于,包括:
获取模块,用于获取存储于数据库中的原始数据集,其中,所述原始数据集以键值对的形式存储,所述键值对包括键值和键号;
记录模块,用于记录所述键号的当前访问频次,其中,所述当前访问频次对应的访问操作包括数据写入操作和数据读取操作;
分类模块,用于根据所述当前访问频次将所述原始数据集分类为热数据和冷数据;
存储模块,用于将所述热数据存储于内存存储引擎中,将所述冷数据存储于磁盘存储引擎中。
10.一种非易失性存储介质,其特征在于,所述非易失性存储介质存储有多条指令,所述指令适于由处理器加载并执行权利要求1至8中任意一项所述的数据存储方法。
11.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至8中任意一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210675211.XA CN115048053A (zh) | 2022-06-15 | 2022-06-15 | 数据存储方法、装置以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210675211.XA CN115048053A (zh) | 2022-06-15 | 2022-06-15 | 数据存储方法、装置以及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115048053A true CN115048053A (zh) | 2022-09-13 |
Family
ID=83160502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210675211.XA Pending CN115048053A (zh) | 2022-06-15 | 2022-06-15 | 数据存储方法、装置以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115048053A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431081A (zh) * | 2023-06-13 | 2023-07-14 | 广州图灵科技有限公司 | 分布式数据存储方法、系统、装置及存储介质 |
CN116560585A (zh) * | 2023-07-05 | 2023-08-08 | 支付宝(杭州)信息技术有限公司 | 一种数据分级存储方法和系统 |
-
2022
- 2022-06-15 CN CN202210675211.XA patent/CN115048053A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431081A (zh) * | 2023-06-13 | 2023-07-14 | 广州图灵科技有限公司 | 分布式数据存储方法、系统、装置及存储介质 |
CN116431081B (zh) * | 2023-06-13 | 2023-11-07 | 广州图灵科技有限公司 | 分布式数据存储方法、系统、装置及存储介质 |
CN116560585A (zh) * | 2023-07-05 | 2023-08-08 | 支付宝(杭州)信息技术有限公司 | 一种数据分级存储方法和系统 |
CN116560585B (zh) * | 2023-07-05 | 2024-04-09 | 支付宝(杭州)信息技术有限公司 | 一种数据分级存储方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10671290B2 (en) | Control of storage of data in a hybrid storage system | |
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
CN115048053A (zh) | 数据存储方法、装置以及电子设备 | |
US20170083412A1 (en) | System and method for generating backups of a protected system from a recovery system | |
CN107391544B (zh) | 列式存储数据的处理方法、装置、设备及计算机储存介质 | |
US11372568B2 (en) | System and method for storing and accessing blockchain data | |
CN109804359A (zh) | 用于将数据回写到存储设备的系统和方法 | |
CN112181902B (zh) | 数据库的存储方法、装置及电子设备 | |
CN110858210B (zh) | 数据查询方法及装置 | |
CN103942301B (zh) | 一种面向多数据类型访问应用的分布式文件系统 | |
CN107506466B (zh) | 一种小文件存储方法及系统 | |
CN113468107A (zh) | 数据处理方法、设备、存储介质及系统 | |
CN114816240A (zh) | 一种数据写入方法及一种数据读取方法 | |
US10585802B1 (en) | Method and system for caching directories in a storage system | |
CN111221814B (zh) | 二级索引的构建方法、装置及设备 | |
CN110837338A (zh) | 一种存储索引处理方法及装置 | |
CN110908587A (zh) | 一种用于存储时序数据的方法及其装置 | |
CN114168391A (zh) | Xfs下并行多线程文件备份恢复方法、系统及存储介质 | |
CN114691612A (zh) | 数据写入方法及装置、数据读取方法及装置 | |
CN110019507B (zh) | 数据同步的方法及装置 | |
US10664442B1 (en) | Method and system for data consistency verification in a storage system | |
CN112015672A (zh) | 一种存储系统中数据处理方法、装置、设备及存储介质 | |
CN116126546B (zh) | 一种性能调优的方法、装置、电子设备及介质 | |
US20240070135A1 (en) | Hash engine for conducting point queries | |
US20230113412A1 (en) | Tree structure node compaction prioritization |
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 |