CN116301656A - 基于日志结构合并树的数据存储方法、系统及设备 - Google Patents
基于日志结构合并树的数据存储方法、系统及设备 Download PDFInfo
- Publication number
- CN116301656A CN116301656A CN202310405994.4A CN202310405994A CN116301656A CN 116301656 A CN116301656 A CN 116301656A CN 202310405994 A CN202310405994 A CN 202310405994A CN 116301656 A CN116301656 A CN 116301656A
- Authority
- CN
- China
- Prior art keywords
- key value
- file
- data
- storage space
- storage
- 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
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000013500 data storage Methods 0.000 title claims abstract description 53
- 230000005055 memory storage Effects 0.000 claims abstract description 78
- 230000011218 segmentation Effects 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 6
- 230000003321 amplification Effects 0.000 description 5
- 238000003199 nucleic acid amplification method Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000003997 social interaction Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请公开了基于日志结构合并树的数据存储方法、系统及设备,获取待存储的目标文件和目标键值范围,将目标文件写入日志结构合并树的内存存储空间,检测当前内存存储空间的文件存储数量是否超过第一预设数量阈值;若内存存储空间的文件存储数量超过第一预设数量阈值,获取日志结构合并树中第一层磁盘存储空间对应的第一分段键值集合;对当前内存存储空间中的文件进行归并,根据各个第一分段键值对归并后的文件进行分段,得到至少一个待存储文件;根据待存储文件中数据对应的键值范围,将各个待存储文件存储到第一存储子空间中。该方法可以提高存储效率以及存储空间的利用率。本申请可广泛应用于数据存储技术领域内。
Description
技术领域
本申请涉及数据存储技术领域,尤其是基于日志结构合并树的数据存储方法、系统及设备。
背景技术
近年来,随着信息技术的发展,存储、读写的数据量越发庞大,管理分布式数据的需求日益增加。因此,相应地,也就对数据库的存储能力提出了更高的要求。其中,日志结构合并树(LSM Tree)优秀的性能使其成为了目前众多流行的键值存储引擎的底层架构。LSMTree是为了优化数据库写性能而出现的,相较于传统的树结构,它减少了磁盘随机读取的需求,从而在一定程度上改善了数据库的写能力。
相关技术中,LSM Tree由内存和磁盘两部分组成,内存部分用于接收增量式更新,其中的键有序排列,磁盘部分用于持久化分层存储,越往下层数据存储量越大。在存储数据时,LSM Tree先把所有的键值对(即键和数据的对应关系)写入内存,内存部分写满后,再写到磁盘中的SSTable文件,一个SSTable文件中的数据是按键大小有序排列的,方便快速查询。当一层的存储空间用尽后,磁盘部分通过归并操作回收冗余数据,并会将数据逐层向下移动存储。但是,这种归并的方式,需要将一整层的数据全部处理后才写入磁盘的下一层存储空间,处理效率偏低;而且,由于每次归并都需要重新写入一层的存储数据,导致数据大量被重复写入,写放大(磁盘写入的数据量/实际的数据量)较高,降低了存储空间的实际利用率。
综上,相关技术存在的问题亟需得到解决。
发明内容
本申请的目的在于至少一定程度上解决相关技术中存在的技术问题之一。
为此,本申请实施例的一个目的在于提供基于日志结构合并树的数据存储方法,该方法可以提高存储效率以及存储空间的利用率。
为了达到上述技术目的,本申请实施例所采取的技术方案包括:
一方面,本申请实施例提供了基于日志结构合并树的数据存储方法,包括:
获取待存储的目标文件和目标键值范围;所述目标文件包括多个目标数据,所述目标键值范围中包括多个目标键值,所述目标数据和所述目标键值一一对应;
将所述目标文件写入日志结构合并树的内存存储空间,检测当前所述内存存储空间的文件存储数量是否超过第一预设数量阈值;
若所述内存存储空间的文件存储数量超过所述第一预设数量阈值,获取所述日志结构合并树中第一层磁盘存储空间对应的第一分段键值集合;所述第一分段键值集合中包括至少一个第一分段键值,所述第一分段键值用于将所述第一层磁盘存储空间划分为多个第一存储子空间,每个所述第一存储子空间对应存储第一键值范围的数据;
对当前内存存储空间中的文件进行归并,根据各个所述第一分段键值对归并后的文件进行分段,得到至少一个待存储文件;
根据所述待存储文件中数据对应的键值范围,将各个所述待存储文件存储到所述第一存储子空间中。
另外,根据本申请上述实施例的基于日志结构合并树的数据存储方法,还可以具有以下附加的技术特征:
进一步地,在本申请的一个实施例中,所述第一分段键值集合通过以下步骤得到:
获取所述第一层磁盘存储空间的总可用存储键值列表;
从所述总可用存储键值列表中随机挑选出若干第一分段键值,得到所述第一分段键值集合。
进一步地,在本申请的一个实施例中,所述对当前内存存储空间中的文件进行归并,包括:
检测当前内存存储空间中的各个文件存储的数据是否存在相同的键值;
当各个文件存储的数据对应的键值均不相同,按照键值大小的排列顺序对所述各个文件存储的数据进行归并处理。
进一步地,在本申请的一个实施例中,所述对当前内存存储空间中的文件进行归并,还包括:
当各个文件存储的数据存在相同的键值,将所述相同的键值确定为带归并键值;
删除和所述带归并键值对应且存储时间较早的数据,将和所述带归并键值对应且存储时间较晚的数据确定为所述带归并键值当前对应的数据;
按照键值大小的排列顺序对所述各个文件存储的数据进行归并处理。
进一步地,在本申请的一个实施例中,所述方法还包括:
检测当前所述第一层磁盘存储空间的文件存储数量是否超过第二预设数量阈值;
若所述第一层磁盘存储空间的文件存储数量超过所述第二预设数量阈值,获取所述日志结构合并树中第二层磁盘存储空间对应的第二分段键值集合;所述第二分段键值集合中包括至少一个第二分段键值,所述第二分段键值用于将所述第二层磁盘存储空间划分为多个第二存储子空间,每个所述第二存储子空间对应存储第二键值范围的数据;
对当前第一层磁盘存储空间中的文件进行归并,根据各个所述第二分段键值对归并后的文件进行分段,得到至少一个待下移文件;
根据所述待下移文件中数据对应的键值范围,将各个所述待下移文件存储到所述第二存储子空间中。
进一步地,在本申请的一个实施例中,所述第一分段键值集合为所述第二分段键值集合的子集。
进一步地,在本申请的一个实施例中,所述方法还包括:
若所述内存存储空间的文件存储数量不超过所述第一预设数量阈值,将所述目标文件存储在所述内存存储空间。
另一方面,本申请实施例提供基于日志结构合并树的数据存储系统,包括:
获取模块,用于获取待存储的目标文件和目标键值范围;所述目标文件包括多个目标数据,所述目标键值范围中包括多个目标键值,所述目标数据和所述目标键值一一对应;
检测模块,用于将所述目标文件写入日志结构合并树的内存存储空间,检测当前所述内存存储空间的文件存储数量是否超过第一预设数量阈值;
判断模块,用于若所述内存存储空间的文件存储数量超过所述第一预设数量阈值,获取所述日志结构合并树中第一层磁盘存储空间对应的第一分段键值集合;所述第一分段键值集合中包括至少一个第一分段键值,所述第一分段键值用于将所述第一层磁盘存储空间划分为多个第一存储子空间,每个所述第一存储子空间对应存储第一键值范围的数据;
归并模块,用于对当前内存存储空间中的文件进行归并,根据各个所述第一分段键值对归并后的文件进行分段,得到至少一个待存储文件;
处理模块,用于根据所述待存储文件中数据对应的键值范围,将各个所述待存储文件存储到所述第一存储子空间中。
另一方面,本申请实施例提供了一种计算机设备,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现上述的基于日志结构合并树的数据存储方法。
另一方面,本申请实施例还提供了一种计算机可读存储介质,其中存储有处理器可执行的程序,上述处理器可执行的程序在由处理器执行时用于实现上述的基于日志结构合并树的数据存储方法。
本申请的优点和有益效果将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到:
本申请实施例所公开的基于日志结构合并树的数据存储方法,获取待存储的目标文件和目标键值范围,将所述目标文件写入日志结构合并树的内存存储空间,检测当前所述内存存储空间的文件存储数量是否超过第一预设数量阈值;若所述内存存储空间的文件存储数量超过所述第一预设数量阈值,获取所述日志结构合并树中第一层磁盘存储空间对应的第一分段键值集合;所述第一分段键值集合中包括至少一个第一分段键值,所述第一分段键值用于将所述第一层磁盘存储空间划分为多个第一存储子空间,每个所述第一存储子空间对应存储第一键值范围的数据;对当前内存存储空间中的文件进行归并,根据各个所述第一分段键值对归并后的文件进行分段,得到至少一个待存储文件;根据所述待存储文件中数据对应的键值范围,将各个所述待存储文件存储到所述第一存储子空间中。该方法通过分段的形式来实现日志结构合并树中的数据下移存储,可以大大减少写放大,提高存储空间的实际利用率;在待存储文件下移的过程中,只需把该文件放入对应的第一存储子空间,第一存储子空间中的文件之间不必有序,这样不需要读取文件中的数据,直接拷贝即可,从而可以提高存储效率。
附图说明
为了更清楚地说明本申请实施例或者现有技术中的技术方案,下面对本申请实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员来说,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。
图1为本申请实施例中提供的一种日志结构合并树的结构示意图;
图2为本申请实施例中提供的基于日志结构合并树的数据存储方法的实施环境示意图;
图3为本申请实施例中提供的基于日志结构合并树的数据存储方法的流程示意图;
图4为本申请实施例中提供的一种日志结构合并树的存储数据示意图;
图5为本申请实施例中提供的一种日志结构合并树的新增存储数据示意图;
图6为本申请实施例中提供的一种对内存存储空间中的文件进行归并的示意图;
图7为本申请实施例中提供的一种对归并后的文件进行分段的示意图;
图8为本申请实施例中提供的基于日志结构合并树的数据存储系统的结构示意图;
图9为本申请实施例中提供的一种计算机设备的结构示意图。
具体实施方式
下面结合说明书附图和具体的实施例对本申请进行进一步的说明。所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
首先,对本申请中涉及的若干名词进行解析:
日志结构合并树(LSM Tree),通过传统索引组织有序文件或内存块的一种方式,一般来说,LSM Tree由两个或两个以上存储数据的结构组成,基础的LSM Tree由两个部件构成,一个部分为内存部分,可以为任何方便键值查找的数据结构,另一个部分为磁盘部分,其数据结构与B-tree类似。简单来说,LSM Tree是一个横跨内存和磁盘的,包含多颗“子树”的一个森林。例如,参照图1,LSM Tree可以分为Level 0,Level 1,Level 2...Level n多颗子树(n为正整数),每颗子树均为一层存储空间,其中,只有Level 0在内存中,其余Level1-Level n在磁盘中。磁盘中的Level 1-Level n子树,本质是数据按照键值排好序后顺序写到磁盘上的文件。每一层的子树都有一个文件存储的阈值大小,达到阈值后会进行数据归并操作,归并结果写入下一层。
本申请实施例提供的基于日志结构合并树的数据存储方法、系统及设备,具体通过如下实施例进行说明,首先描述本申请实施例中的基于日志结构合并树的数据存储方法。
本申请实施例中提供的数据存储方法,可以在涉及购物、游戏、社交、导航等领域的应用程序中被执行:例如,在涉及购物的应用程序中,可能存在有存储用户的订单信息的需求,此时可以基于本申请实施例中提供的方法,对涉及用户业务信息的相关数据进行存储。类似地,在涉及社交的应用程序中,可能存在有存储用户的会话信息的需求,此时也可以基于本申请实施例中提供的方法,对用户之间的聊天数据进行存储。
当然,需要说明的是,以上的应用场景仅起到示例性的作用,并不意味着对本申请实施例中方法的实际应用形成限制。本领域技术人员可以理解,在不同应用场景中,都可以利用本申请实施例中提供的方法执行指定的任务。
近年来,随着信息技术的发展,存储、读写的数据量越发庞大,管理分布式数据的需求日益增加。因此,相应地,也就对数据库的存储能力提出了更高的要求。其中,日志结构合并树(LSM Tree)优秀的性能使其成为了目前众多流行的键值存储引擎的底层架构。LSMTree是为了优化数据库写性能而出现的,相较于传统的树结构,它减少了磁盘随机读取的需求,从而在一定程度上改善了数据库的写能力。
相关技术中,LSM Tree由内存和磁盘两部分组成,内存部分用于接收增量式更新,其中的键有序排列,磁盘部分用于持久化分层存储,越往下层数据存储量越大。在存储数据时,LSM Tree先把所有的键值对(即键和数据的对应关系)写入内存,内存部分写满后,再写到磁盘中的SSTable文件,一个SSTable文件中的数据是按键大小有序排列的,方便快速查询。当一层的存储空间用尽后,磁盘部分通过归并操作回收冗余数据,并会将数据逐层向下移动存储。但是,这种归并的方式,需要将一整层的数据全部处理后才写入磁盘的下一层存储空间,处理效率偏低;而且,由于每次归并都需要重新写入一层的存储数据,导致数据大量被重复写入,写放大(磁盘写入的数据量/实际的数据量)较高,降低了存储空间的实际利用率。
为了解决相关技术中存在的问题,本申请实施例提供了基于日志结构合并树的数据存储方法、系统及设备,获取待存储的目标文件和目标键值范围,将所述目标文件写入日志结构合并树的内存存储空间,检测当前所述内存存储空间的文件存储数量是否超过第一预设数量阈值;若所述内存存储空间的文件存储数量超过所述第一预设数量阈值,获取所述日志结构合并树中第一层磁盘存储空间对应的第一分段键值集合;所述第一分段键值集合中包括至少一个第一分段键值,所述第一分段键值用于将所述第一层磁盘存储空间划分为多个第一存储子空间,每个所述第一存储子空间对应存储第一键值范围的数据;对当前内存存储空间中的文件进行归并,根据各个所述第一分段键值对归并后的文件进行分段,得到至少一个待存储文件;根据所述待存储文件中数据对应的键值范围,将各个所述待存储文件存储到所述第一存储子空间中。该方法通过分段的形式来实现日志结构合并树中的数据下移存储,可以大大减少写放大,提高存储空间的实际利用率;在待存储文件下移的过程中,只需把该文件放入对应的第一存储子空间,第一存储子空间中的文件之间不必有序,这样不需要读取文件中的数据,直接拷贝即可,从而可以提高存储效率。
图2是本申请实施例提供的基于日志结构合并树的数据存储方法的实施环境示意图。参照图2,该实施环境的软硬件主体主要包括用户终端101和服务器102,用户终端101与服务器102通信连接。其中,该基于日志结构合并树的数据存储方法可以配置在用户终端101,也可以配置在服务器102侧执行,或者根据二者的交互来执行。比如说,当根据二者的交互来执行时,用户终端101可以将需要存储的数据发送给服务器102,服务器102侧,可以通过执行本申请实施例中提供的基于日志结构合并树的数据存储方法对接收到的数据进行存储。
具体地,本申请中的用户终端101可以包括但不限于智能手表、智能手机、电脑、个人数字助理(Personal Digital Assistant,PDA)、智能语音交互设备、智能家电或者车载终端中的任意一种或者多种。服务器102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content DeliveryNetwork,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。用户终端101与服务器102之间可以通过无线网络或有线网络建立通信连接,该无线网络或有线网络使用标准通信技术和/或协议,网络可以设置为因特网,也可以是其它任何网络,例如包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。
当然,可以理解的是,图2中的实施环境只是本申请实施例中提供的基于日志结构合并树的数据存储方法一种可选的应用场景,实际的应用并不固定为图2所示出的软硬件环境。
下面结合图2示出的实施环境,对本申请实施例中提供的基于日志结构合并树的数据存储方法进行详细说明。
首先,请参照图3,图3是本申请实施例中提供的基于日志结构合并树的数据存储方法的流程示意图,图3示出的基于日志结构合并树的数据存储方法主要在服务器102侧执行。该方法可以应用于服务器102中相关的计算机设备上,但并不局限于以上形式。图3中的方法包括但不限于步骤110至步骤150。
步骤110、获取待存储的目标文件和目标键值范围;所述目标文件包括多个目标数据,所述目标键值范围中包括多个目标键值,所述目标数据和所述目标键值一一对应;
本步骤中,当执行本申请实施例中的数据存储方法时,首先,可以获取需要存储的数据。对于日志结构合并树来说,其存储数据时一般需要将数据转换为SSTable(SortedString Table,有序字符串表)格式的文件,SSTable文件是一种存储键值对的格式,即将数据处理为数据和键值一一对应的串表,然后将数据按照键值的大小进行排序,是一个有序的数据存储结构,方便后续的查找调用。本申请实施例中,在存储数据时,可以获取经过预处理后的SSTable文件,将SSTable文件记为目标文件。基于前述的说明,可以理解的是,目标文件中包括有多个数据,记为目标数据,而和这些目标数据一一对应的键值,记为目标键值。本申请实施例中,这些目标数据对应的目标键值,可以组成一个键值范围,比如说,当存在有20个数据时,第一个数据对应的键值为21,第二个数据对应的键值为22,依次递增到第20个数据对应的键值为40,此时这些数据对应的键值范围即为21至40。对于目标键值所组成的范围,可以记为目标键值范围。
需要说明的是,本申请实施例中,对于目标文件的大小、目标数据的个数(也即目标键值范围的大小)不作限制,其可以根据具体的需要进行灵活调整。
并且,还需要说明的是,本申请实施例中,对于上述的待存储的目标文件和目标键值范围的获取渠道不做限制,其既可以是直接通过人机交互设备由用户直接输入得到的,也可以是通过数据传输接口或者远程通信传输从其他电子设备及计算机系统获取得到的。
需要补充说明的是,在本申请的各个具体实施方式中,当涉及到需要根据用户信息、用户语音语句、用户行为数据,用户历史数据以及用户位置信息等与用户身份或特性相关的数据进行相关处理时,都会先获得用户的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关国家和地区的相关法律法规和标准。此外,当本申请实施例需要获取用户的敏感个人信息时,会通过弹窗或者跳转到确认页面等方式获得用户的单独许可或者单独同意,在明确获得用户的单独许可或者单独同意之后,再获取用于使本申请实施例能够正常运行的必要的用户相关数据。
步骤120、将所述目标文件写入日志结构合并树的内存存储空间,检测当前所述内存存储空间的文件存储数量是否超过第一预设数量阈值;
本步骤中,在获取得到待存储的目标文件后,可以将目标文件写入到日志结构合并树的内存存储空间。本申请实施例中,内存存储空间即前述的日志结构合并树的内存部分。对于日志结构合并树来说,其同时使用内存和磁盘两个存储部分来存储数据。当内存存储空间存储达到存储上限时,可以通过一定的策略,将内存存储空间中的数据按顺序刷到磁盘存储空间中,这样数据在磁盘中从逻辑和物理上都是有序存储的。
具体地,由于内存存储空间本身的存储容量有限,当多个文件被写入到内存存储空间后,其可能会达到存储上限而无法继续写入。因此,本申请实施例中,可以预先设置一个内存存储空间能够存储的文件数量阈值,记为第一预设数量阈值。然后,每次将新的目标文件写入到日志结构合并树的内存存储空间后,可以检测当前内存存储空间中的文件存储数量,如果当前内存存储空间中的文件存储数量没有超过第一预设数量阈值,说明当前内存存储空间的存储容量还存在较多空余,能够继续支持文件的存储,此时可以将本次的目标文件存储在内存存储空间中。反之,如果当前内存存储空间中的文件存储数量超过第一预设数量阈值,说明当前内存存储空间的存储容量已较少,很可能无法继续支持文件的存储,此时,需要将内存存储空间中的数据转移到磁盘存储空间中存储。
需要说明的是,本申请实施例中,对于第一预设数量阈值的具体大小不作限制,例如,在一些实施例中,第一预设数量阈值的大小可以是2或者3,当然,其可以根据实际的需要进行灵活调整。
步骤130、若所述文件存储数量超过所述第一预设数量阈值,获取所述日志结构合并树中第一层磁盘存储空间对应的第一分段键值集合;所述第一分段键值集合中包括至少一个第一分段键值,所述第一分段键值用于将所述第一层磁盘存储空间划分为多个第一存储子空间,每个所述第一存储子空间对应存储第一键值范围的数据;
本步骤中,如前所述的,如果当前内存存储空间中的文件存储数量超过第一预设数量阈值,说明当前内存存储空间的存储容量已较少,很可能无法继续支持文件的存储,此时,需要将内存存储空间中的数据转移到磁盘存储空间中存储。故而,当确定文件存储数量超过第一预设数量阈值时,可以执行对应的转移存储工作。具体地,首先,可以获取日志结构合并树中第一层磁盘存储空间对应的第一分段键值集合。本申请实施例中,可以理解的是,日志结构合并树中的磁盘部分可以分为多层存储空间的形式,对此,可以按照从上到下的顺序,依次记为第一层磁盘存储空间、第二层磁盘存储空间、第三层磁盘存储空间...第n层磁盘存储空间(n为正整数)。对于每层的磁盘存储空间,其可以按照键值被划分为多段,按照分段的形式来存储数据。比如说,假设第一层磁盘存储空间可以存储50个键值对应的数据,这50个键值分别为1至50。可以对其进行分段,如预先设置一个第一分段键值集合,其中包括至少一个第一分段键值。第一分段键值为第一层磁盘存储空间的存储分隔点,在一些实施例中,若第一分段键值集合只有一个第一分段键值,该第一分段键值为20,则可以以20为界限,将前述可以存储键值为1至50的数据的第一层磁盘存储空间划分为两段,一段可以用于存储键值为1至19的数据,另一段可以用于存储键值为20至50的数据。当然,需要说明的是,本申请实施例中,第一分段键值可以划分到键值大小较大的分段中,也可以划分到键值大小较小的分段中,如也可以将前述可以存储键值为1至50的数据的第一层磁盘存储空间划分为一段可以用于存储键值为1至20的数据,另一段可以用于存储键值为21至50的数据的两段。类似地,在一些实施例中,若第一分段键值集合有多个第一分段键值,可以按照上述的划分方法,对第一层磁盘存储空间进行划分。本申请实施例中,将对第一层磁盘存储空间进行划分得到的每段存储空间记为第一存储子空间,可以理解的是,第一存储子空间的个数可以是两个,也可以是多个,具体根据第一分段键值的数量确定,本申请对此不作限制。
本申请实施例中,对于划分得到的各个第一存储子空间,其可以用于存储一段键值范围内的数据,例如,将可以存储键值为1至50的数据的第一层磁盘存储空间划分为一段可以用于存储键值为1至20的数据,另一段可以用于存储键值为21至50的数据的两段时,即可以得到两个第一存储子空间。本申请实施例中,将第一存储子空间可以存储的数据对应的键值范围记为第一键值范围,如此,上述的两个第一存储子空间中,一个对应的第一键值范围为1至20,另一个对应的第一键值范围为21至50。
步骤140、对当前内存存储空间中的文件进行归并,根据各个所述第一分段键值对归并后的文件进行分段,得到至少一个待存储文件;
本步骤中,在获取得到第一分段键值集合后,可以对内存存储空间中的文件进行归并处理,然后对于归并得到的文件,可以按照第一分段键值集合中的各个第一分段键值进行分段,如此,可以得到多个和第一存储子空间对应的待存储文件。
具体地,在一种可能实施的方式中,对当前内存存储空间中的文件进行归并,包括:
检测当前内存存储空间中的各个文件存储的数据是否存在相同的键值;
当各个文件存储的数据对应的键值均不相同,按照键值大小的排列顺序对所述各个文件存储的数据进行归并处理。
本申请实施例中,在对当前内存存储空间中的文件进行归并时,可以检测当前内存存储空间中的各个文件存储的数据是否存在相同的键值。如果各个文件存储的数据对应的键值均不相同,说明当前内存存储空间中存储的数据不存在更新的情况,比如说,假设当前内存存储空间中的文件数量为2个,其中一个文件中存储的数据所对应的键值范围为10至30,另一个文件中存储的数据所对应的键值范围为31至45。那么这两个文件中的数据互相不影响,此时,可以按照键值的大小进行排列,基于排列顺序对各个文件存储的数据进行归并处理,得到一个完整的、存储数据对应的键值范围为10至45的归并后的文件。
在另一种可能实施的方式中,对当前内存存储空间中的文件进行归并,还包括:
当各个文件存储的数据存在相同的键值,将所述相同的键值确定为带归并键值;
删除和所述带归并键值对应且存储时间较早的数据,将和所述带归并键值对应且存储时间较晚的数据确定为所述带归并键值当前对应的数据;
按照键值大小的排列顺序对所述各个文件存储的数据进行归并处理。
本申请实施例中,在检测当前内存存储空间中的各个文件存储的数据是否存在相同的键值时,如果各个文件存储的数据对应的键值存在相同的情况,说明当前内存存储空间中存储的数据存在更新的需求。比如说,假设当前内存存储空间中的文件数量同样为2个,其中一个文件中存储的数据所对应的键值范围为10至35,另一个文件中存储的数据所对应的键值范围为25至45。那么这两个文件中的数据对应的键值范围存在重合,可以将数据对应的这些相同键值确定为带归并键值,然后,可以删除这两个文件中和带归并键值对应、且存储时间较早的数据。比如说,对于上述的两个文件,其中大小为25至35之间的键值即为带归并键值,假设存储的数据所对应的键值范围为10至35的文件存储时间较早,存储的数据所对应的键值范围为25至45的文件在之后才存储,说明存储的数据所对应的键值范围为25至45的文件对大小为25至35之间的键值对应的数据做了更新,故而,本申请实施例中,可以删除存储的数据所对应的键值范围为25至45的文件中大小为25至35之间的键值对应的数据。如此,可以将和带归并键值对应且存储时间较晚的数据,也即存储的数据所对应的键值范围为25至45的文件中大小为25至35之间的键值对应的数据,确定为带归并键值当前对应的数据,从而完成数据的更新迭代。在处理完毕带归并键值的数据更新后,可以按照键值的大小进行排列,基于排列顺序对各个文件存储的数据进行归并处理,得到一个完整的、存储数据对应的键值范围为10至45的归并后的文件。
本申请实施例中,在得到归并后的文件后,还采用第一分段键值对其进行分段处理,具体地,比如说当第一分段键值集合中仅存在一个第一分段键值,该第一分段键值的大小为20,那么可以采用该第一分段键值对归并后的文件进行分段。此处,需要说明的是,采用第一分段键值对归并后的文件的分段方式,和其对第一层磁盘存储空间的分段方式相同,即在第一分段键值的划分方式相对一致。例如,对于在第一层磁盘存储空间的分段过程中,将第一分段键值划分到键值大小较大的分段中的情况,采用该第一分段键值对前述存储数据对应的键值范围为10至45的归并后的文件进行分段时,将这些数据分为两部分,一部分数据对应的键值范围为10至19,另一部分数据对应的键值为20至45。类似地,对于在第一层磁盘存储空间的分段过程中,将第一分段键值划分到键值大小较小的分段中的情况,采用该第一分段键值对前述存储数据对应的键值范围为10至45的归并后的文件进行分段时,将这些数据分为两部分,一部分数据对应的键值范围为10至20,另一部分数据对应的键值为21至45。本申请实施例中,对具体采用的分段方式不作限定。
当然,可以理解的是,在一些实施例中,可能归并后的文件存储数据对应的键值范围中并不存在第一分段键值,此时,也就不必对归并后的文件再进行分段,可以直接将其作为独立的待存储文件。
步骤150、根据所述待存储文件中数据对应的键值范围,将各个所述待存储文件存储到所述第一存储子空间中。
本步骤中,在划分得到待存储文件后,可以根据待存储文件中数据对应的键值范围,将其存储到磁盘部分对应的第一存储子空间中。具体地,比如说,对于某个存储键值为1至50的数据的第一层磁盘存储空间,其被划分为两个第一存储子空间,一个第一存储子空间可以存储的数据对应的键值范围为1至20,记为存储子空间A;另一个第一存储子空间可以存储的数据对应的键值范围为21至50,记为存储子空间B。那么,对于前述得到的数据对应的键值范围为10至20的待存储文件,可以存储在存储子空间A中,数据对应的键值为21至45的待存储文件,可以存储在存储子空间B中。
可以理解的是,本申请实施例中,通过分段的形式来实现日志结构合并树中的数据下移存储。当内层存储空间的数据需要下移到第一层磁盘存储空间的时候,不再是整个内层存储空间一起下移,而是可以按照分段后的待存储文件为单位来进行存储。这样,对于第一磁盘存储空间来说,基本没有数据变化的段就不用处理了,如此,可以大大减少写放大,提高存储空间的实际利用率。并且,在待存储文件下移的过程中,只需把该文件放入对应的第一存储子空间,第一存储子空间中的文件之间不必有序,这样不需要读取文件中的数据,直接拷贝过去就可以了,从而可以提高存储效率。
在一些实施例中,本申请中的所述第一分段键值集合通过以下步骤得到:
获取所述第一层磁盘存储空间的总可用存储键值列表;
从所述总可用存储键值列表中随机挑选出若干第一分段键值,得到所述第一分段键值集合。
本申请实施例中,在确定第一分段键值集合时,可以获取第一层磁盘存储空间的总可用存储键值列表,然后从中随机挑选出若干第一分段键值,例如假设第一层磁盘存储空间可以存储1至100键值范围的数据,则其总可用存储键值列表即为数值1至100。然后从中随机挑选,比如说3个第一分段键值,分别为20、45和86,则可以得到第一分段键值集合为{20,45,86}。当然,本申请实施例中,对具体的第一分段键值的个数不作限定。
在一些实施例中,所述方法还包括:
检测当前所述第一层磁盘存储空间的文件存储数量是否超过第二预设数量阈值;
若所述第一层磁盘存储空间的文件存储数量超过所述第二预设数量阈值,获取所述日志结构合并树中第二层磁盘存储空间对应的第二分段键值集合;所述第二分段键值集合中包括至少一个第二分段键值,所述第二分段键值用于将所述第二层磁盘存储空间划分为多个第二存储子空间,每个所述第二存储子空间对应存储第二键值范围的数据;
对当前第一层磁盘存储空间中的文件进行归并,根据各个所述第二分段键值对归并后的文件进行分段,得到至少一个待下移文件;
根据所述待下移文件中数据对应的键值范围,将各个所述待下移文件存储到所述第二存储子空间中。
本申请实施例中,还可能存在有磁盘中某一层存储空间的存储容量较少,需要继续向下移动的情况。在此,以第一层磁盘存储空间和第二层磁盘存储空间之间的数据下移为例进行举例说明,本领域内的技术人员可以理解,各个第n-1层磁盘存储空间和第n层磁盘存储空间之间的数据下移均可参照该过程实现。
具体地,本申请实施例中,首先可以为第一层磁盘存储空间设置文件数量的存储上限,记为第二预设数量阈值。然后,可以检测当前第一层磁盘存储空间的文件存储数量,判断其和第二预设数量阈值的大小,如果其小于或者等于第二预设数量阈值,说明第一层磁盘存储空间的存储容量够用,可以继续存储;反之,如果第一层磁盘存储空间的文件存储数量超过第二预设数量阈值,则说明第一层磁盘存储空间的存储容量告罄,需要进行数据下移的工作。此时,可以获取日志结构合并树中第二层磁盘存储空间对应的第二分段键值集合,第二分段键值集合中包括若干第二分段键值,其用于将第二磁盘空间划分为多个第二存储子空间,并且每个第二存储子空间对应存储第二键值范围的数据。此处,第二分段键值的设定方式和前述的第一分段键值类似,在此不作赘述。特别地,为了提高数据存储的规整性,第一分段键值集合可以设置为第二分段键值集合的子集,即第二分段键值集合中可以包括全部的第一分段键值,并且可以涵盖额外的第二分段键值,本申请对此不作限定。
接着,可以对当前第一层磁盘存储空间中的文件进行归并,然后根据各个第二分段键值对归并后的文件进行分段,得到至少一个待下移文件,从而可以根据待下移文件中数据对应的键值范围,将各个待下移文件存储到第二存储子空间中。具体的归并和分段处理方式,和前述实施例类似,在此不作赘述。
可以理解的是,本申请实施例,通过执行上述的数据存储方法,可以定期执行数据压缩,即选择多个文件并将它们归并在一起,删除重复的被更新的内容。如此,能够削减存储空间内的数据冗余,提高存储空间的利用率。
下面,结合具体的实施例,对本申请中提出的基于日志结构合并树的数据存储方法进行说明介绍。
参照图4,图4中示出了一种三层存储结构的存储单元,包括有内存存储空间Level0、第一层磁盘存储空间Level 1和第二层磁盘存储空间Level 2。在图4示出的状态下,内存存储空间Level 0存储有两个文件,对应的键值范围为2至37和23至48。对于第一层磁盘存储空间Level 1来说,其对应的第一分段键值集合包括15、70两个第一分段键值,对于第二层磁盘存储空间Level 2来说,其对应的第二分段键值集合包括15、40、70、95四个第二分段键值。参照图5,在某一时刻,存储单元接收到了新的一份文件,该文件中数据对应的键值范围为30至68,假设内存存储空间Level 0对应的第一预设数量阈值为2,那么此时将超过内存存储空间Level 0的存储上限,故而需要对文件进行归并。具体地,参照图6,在对文件进行归并时,即将数据对应的键值范围为2至37、23至48和30至68的三个文件进行归并,其中重合的键值采用更新的数据组成键值对,旧的数据删除,如此可以得到归并后的文件。归并后的文件中,数据对应的键值范围为2至68,采用第一分段键值对其进行分段,只有15一个第一分段键值处于该范围内,故参照图7,可以将该文件分为两段,其中一段数据对应的键值范围为2至14,另一段数据对应的键值范围为15至68。接着,可以将分段后的文件放入到第一层磁盘存储空间Level 1对应的段内。类似地,也可以将第一层磁盘存储空间Level 1进行相应的处理,以实现数据的进一步下移,本申请对此不作赘述。
下面参照附图描述根据本申请实施例提出的基于日志结构合并树的数据存储系统。
参照图8,本申请实施例中提出的基于日志结构合并树的数据存储系统,包括:
获取模块810,用于获取待存储的目标文件和目标键值范围;所述目标文件包括多个目标数据,所述目标键值范围中包括多个目标键值,所述目标数据和所述目标键值一一对应;
检测模块820,用于将所述目标文件写入日志结构合并树的内存存储空间,检测当前所述内存存储空间的文件存储数量是否超过第一预设数量阈值;
判断模块830,用于若所述内存存储空间的文件存储数量超过所述第一预设数量阈值,获取所述日志结构合并树中第一层磁盘存储空间对应的第一分段键值集合;所述第一分段键值集合中包括至少一个第一分段键值,所述第一分段键值用于将所述第一层磁盘存储空间划分为多个第一存储子空间,每个所述第一存储子空间对应存储第一键值范围的数据;
归并模块840,用于对当前内存存储空间中的文件进行归并,根据各个所述第一分段键值对归并后的文件进行分段,得到至少一个待存储文件;
处理模块850,用于根据所述待存储文件中数据对应的键值范围,将各个所述待存储文件存储到所述第一存储子空间中。
可以理解的是,上述识别方法实施例中的内容均适用于本识别系统实施例中,本识别系统实施例所具体实现的功能与上述识别方法实施例相同,并且达到的有益效果与上述识别方法实施例所达到的有益效果也相同。
参照图9,本申请实施例还公开了一种计算机设备,包括:
至少一个处理器910;
至少一个存储器920,用于存储至少一个程序;
当至少一个程序被至少一个处理器910执行,使得至少一个处理器910实现如图3所示的基于日志结构合并树的数据存储方法实施例。
可以理解的是,如图3所示的基于日志结构合并树的数据存储方法实施例中的内容均适用于本计算机设备实施例中,本计算机设备实施例所具体实现的功能与如图3所示的基于日志结构合并树的数据存储方法实施例相同,并且达到的有益效果与如图3所示的基于日志结构合并树的数据存储方法实施例所达到的有益效果也相同。
本申请实施例还公开了一种计算机可读存储介质,其中存储有处理器可执行的程序,处理器可执行的程序在由处理器执行时用于实现如图3所示的基于日志结构合并树的数据存储方法实施例。
可以理解的是,如图3所示的基于日志结构合并树的数据存储方法实施例中的内容均适用于本计算机可读存储介质实施例中,本计算机可读存储介质实施例所具体实现的功能与如图3所示的基于日志结构合并树的数据存储方法实施例相同,并且达到的有益效果与如图3所示的基于日志结构合并树的数据存储方法实施例所达到的有益效果也相同。
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或方框有时能以相反顺序被执行。此外,在本申请的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
此外,虽然在功能性模块的背景下描述了本申请,但应当理解的是,除非另有相反说明,功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本申请是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本申请。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本申请的范围,本申请的范围由所附权利要求书及其等同方案的全部范围来决定。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
尽管已经示出和描述了本申请的实施方式,本领域的普通技术人员可以理解:在不脱离本申请的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本申请的范围由权利要求及其等同物限定。
以上是对本申请的较佳实施进行了具体说明,但本申请并不限于实施例,熟悉本领域的技术人员在不违背本申请精神的前提下可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内
在本说明书的描述中,参考术语“一个实施方式”、“另一实施方式”或“某些实施方式”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
尽管已经示出和描述了本申请的实施方式,本领域的普通技术人员可以理解:在不脱离本申请的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本申请的范围由权利要求及其等同物限定。
Claims (10)
1.基于日志结构合并树的数据存储方法,其特征在于,包括:
获取待存储的目标文件和目标键值范围;所述目标文件包括多个目标数据,所述目标键值范围中包括多个目标键值,所述目标数据和所述目标键值一一对应;
将所述目标文件写入日志结构合并树的内存存储空间,检测当前所述内存存储空间的文件存储数量是否超过第一预设数量阈值;
若所述内存存储空间的文件存储数量超过所述第一预设数量阈值,获取所述日志结构合并树中第一层磁盘存储空间对应的第一分段键值集合;所述第一分段键值集合中包括至少一个第一分段键值,所述第一分段键值用于将所述第一层磁盘存储空间划分为多个第一存储子空间,每个所述第一存储子空间对应存储第一键值范围的数据;
对当前内存存储空间中的文件进行归并,根据各个所述第一分段键值对归并后的文件进行分段,得到至少一个待存储文件;
根据所述待存储文件中数据对应的键值范围,将各个所述待存储文件存储到所述第一存储子空间中。
2.根据权利要求1所述的基于日志结构合并树的数据存储方法,其特征在于,所述第一分段键值集合通过以下步骤得到:
获取所述第一层磁盘存储空间的总可用存储键值列表;
从所述总可用存储键值列表中随机挑选出若干第一分段键值,得到所述第一分段键值集合。
3.根据权利要求1所述的基于日志结构合并树的数据存储方法,其特征在于,所述对当前内存存储空间中的文件进行归并,包括:
检测当前内存存储空间中的各个文件存储的数据是否存在相同的键值;
当各个文件存储的数据对应的键值均不相同,按照键值大小的排列顺序对所述各个文件存储的数据进行归并处理。
4.根据权利要求3所述的基于日志结构合并树的数据存储方法,其特征在于,所述对当前内存存储空间中的文件进行归并,还包括:
当各个文件存储的数据存在相同的键值,将所述相同的键值确定为带归并键值;
删除和所述带归并键值对应且存储时间较早的数据,将和所述带归并键值对应且存储时间较晚的数据确定为所述带归并键值当前对应的数据;
按照键值大小的排列顺序对所述各个文件存储的数据进行归并处理。
5.根据权利要求1所述的基于日志结构合并树的数据存储方法,其特征在于,所述方法还包括:
检测当前所述第一层磁盘存储空间的文件存储数量是否超过第二预设数量阈值;
若所述第一层磁盘存储空间的文件存储数量超过所述第二预设数量阈值,获取所述日志结构合并树中第二层磁盘存储空间对应的第二分段键值集合;所述第二分段键值集合中包括至少一个第二分段键值,所述第二分段键值用于将所述第二层磁盘存储空间划分为多个第二存储子空间,每个所述第二存储子空间对应存储第二键值范围的数据;
对当前第一层磁盘存储空间中的文件进行归并,根据各个所述第二分段键值对归并后的文件进行分段,得到至少一个待下移文件;
根据所述待下移文件中数据对应的键值范围,将各个所述待下移文件存储到所述第二存储子空间中。
6.根据权利要求5所述的基于日志结构合并树的数据存储方法,其特征在于,所述第一分段键值集合为所述第二分段键值集合的子集。
7.根据权利要求1-6中任一项所述的基于日志结构合并树的数据存储方法,其特征在于,所述方法还包括:
若所述内存存储空间的文件存储数量不超过所述第一预设数量阈值,将所述目标文件存储在所述内存存储空间。
8.基于日志结构合并树的数据存储系统,其特征在于,包括:
获取模块,用于获取待存储的目标文件和目标键值范围;所述目标文件包括多个目标数据,所述目标键值范围中包括多个目标键值,所述目标数据和所述目标键值一一对应;
检测模块,用于将所述目标文件写入日志结构合并树的内存存储空间,检测当前所述内存存储空间的文件存储数量是否超过第一预设数量阈值;
判断模块,用于若所述内存存储空间的文件存储数量超过所述第一预设数量阈值,获取所述日志结构合并树中第一层磁盘存储空间对应的第一分段键值集合;所述第一分段键值集合中包括至少一个第一分段键值,所述第一分段键值用于将所述第一层磁盘存储空间划分为多个第一存储子空间,每个所述第一存储子空间对应存储第一键值范围的数据;
归并模块,用于对当前内存存储空间中的文件进行归并,根据各个所述第一分段键值对归并后的文件进行分段,得到至少一个待存储文件;
处理模块,用于根据所述待存储文件中数据对应的键值范围,将各个所述待存储文件存储到所述第一存储子空间中。
9.一种计算机设备,其特征在于,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-7中任一项所述的基于日志结构合并树的数据存储方法。
10.一种计算机可读存储介质,其中存储有处理器可执行的程序,其特征在于:所述处理器可执行的程序在由处理器执行时用于实现如权利要求1-7中任一项所述的基于日志结构合并树的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310405994.4A CN116301656A (zh) | 2023-04-07 | 2023-04-07 | 基于日志结构合并树的数据存储方法、系统及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310405994.4A CN116301656A (zh) | 2023-04-07 | 2023-04-07 | 基于日志结构合并树的数据存储方法、系统及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116301656A true CN116301656A (zh) | 2023-06-23 |
Family
ID=86820693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310405994.4A Pending CN116301656A (zh) | 2023-04-07 | 2023-04-07 | 基于日志结构合并树的数据存储方法、系统及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116301656A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627361A (zh) * | 2023-07-25 | 2023-08-22 | 江苏华存电子科技有限公司 | 一种冗余信息的储存比对管理方法及系统 |
-
2023
- 2023-04-07 CN CN202310405994.4A patent/CN116301656A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627361A (zh) * | 2023-07-25 | 2023-08-22 | 江苏华存电子科技有限公司 | 一种冗余信息的储存比对管理方法及系统 |
CN116627361B (zh) * | 2023-07-25 | 2023-11-17 | 江苏华存电子科技有限公司 | 一种冗余信息的储存比对管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9043660B2 (en) | Data store capable of efficient storing of keys | |
Caro et al. | Data structures for temporal graphs based on compact sequence representations | |
CN104657362A (zh) | 数据存储、查询方法和装置 | |
US10678779B2 (en) | Generating sub-indexes from an index to compress the index | |
CN112486994B (zh) | 一种基于日志结构合并树的键值存储的数据快速读取方法 | |
CN105631003A (zh) | 支持海量数据分组统计的智能索引构建、查询及维护方法 | |
CN102867049B (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN107766433A (zh) | 一种基于Geo‑BTree的范围查询方法及装置 | |
CN104063384A (zh) | 一种数据检索方法及装置 | |
CN108009265B (zh) | 一种云计算环境下的空间数据索引方法 | |
CN111144117B (zh) | 知识图谱中文地址消除歧义方法 | |
CN112148928A (zh) | 一种基于指纹家族的布谷鸟过滤器 | |
CN109597574B (zh) | 分布式数据存储方法、服务器及可读存储介质 | |
CN116301656A (zh) | 基于日志结构合并树的数据存储方法、系统及设备 | |
CN112148217B (zh) | 全闪存储系统的重删元数据的缓存方法、装置及介质 | |
US20220253419A1 (en) | Multi-record index structure for key-value stores | |
CN113468080A (zh) | 一种全闪元数据的缓存方法、系统及相关装置 | |
CN116760661A (zh) | 数据存储方法、装置、计算机设备、存储介质和程序产品 | |
CN108021678B (zh) | 一种结构紧凑的键值对存储结构及快速键值对查找方法 | |
Arseneau et al. | STILT: Unifying spatial, temporal and textual search using a generalized multi-dimensional index | |
CN115221360A (zh) | 树形结构配置方法和系统 | |
US20070220026A1 (en) | Efficient caching for large scale distributed computations | |
CN111258955A (zh) | 一种文件读取方法和系统、存储介质、计算机设备 | |
CN103810209B (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 |