CN108052643A - 基于LSM Tree结构的数据存储方法、装置及存储引擎 - Google Patents
基于LSM Tree结构的数据存储方法、装置及存储引擎 Download PDFInfo
- Publication number
- CN108052643A CN108052643A CN201711408940.4A CN201711408940A CN108052643A CN 108052643 A CN108052643 A CN 108052643A CN 201711408940 A CN201711408940 A CN 201711408940A CN 108052643 A CN108052643 A CN 108052643A
- Authority
- CN
- China
- Prior art keywords
- data
- stored
- storage
- key
- value values
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/185—Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于LSM Tree结构的数据存储方法、装置以及存储引擎,其中,该方法包括对计算机内存中的待存储数据进行处理,解析出待存储数据的key和与key对应的value值。存储待存储数据的value值,并获取待存储数据的value值的存储地址。将获取的存储地址赋值给待存储数据的key,并将赋值后的key写入LSM Tree结构中。由此,通过将待存储数据的key和其对应的value值的分开存储,使LSM Tree结构中不直接存储数据的value值,而是存储key和对应的value值存储地址,以在后续进行数据合并时不仅能够有效减少大量的value值处理过程,还可以减少磁盘IO。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于LSM Tree结构的数据存储方法、装置及存储引擎。
背景技术
传统的LSM Tree(Log Structure Merge Tree,日志结构合并树)可以通过leveldb(***实现的非常高效的kv数据库)、rocksdb(嵌入式Key-value存储***)等实现对数据的存储,其优点是通过将磁盘的随机写转化成顺序写,以达到最优的写性能,从而快速地建立索引。虽然LSM Tree对磁盘进行顺序写有效地提高了磁盘的写性能,但是,这样的操作容易造成空间的浪费,带来额外的磁盘空间的开销。
采用LSM Tree结构常见的问题是容易将写入的数据放大,在Leveldb、Rocksdb里面默认的放大因子是10,写放大的倍数为Level*10。面对上述问题,对于value比较小的场景下可以忽略不计,但是,对于value比较大情况,比如存储2M以上大小的文件就会浪费掉大量的磁盘空间,举例说明,采用LSM Tree结构存储一个3M的文件,当LSM Tree结构的内存占满时(共4M),需要将原来内存中的数据追加(存储)至LSM Tree结构的存储文件中。假如存储文件中包含3个存储层级,即L1级、L2级和L3级,且L1级、L2级中分别包含4M数据,那么在将内存中的4M的文件追加至存储文件时,需要先将L2级中的4M数据保存至L3级,再将L1级中的4M数据保存至L2级,进而将内存中的4M的文件保存至L1级。在此过程中,需要进行4+4+4=12M的数据处理。当然,LSM Tree结构的存储文件中不只包含3个存储层级,可能会存在更多的层级,这样,每个层级中的数据都需要进行更替,这对于较大数据的存储,必然会大大增加数据的处理量,降低数据的处理效率。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于LSM Tree结构的数据存储方法、装置及存储引擎。
依据本发明的一方面,提供了一种基于LSM Tree结构的数据存储方法,包括:对接收的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值;存储所述待存储数据的value值,获取所述待存储数据的value值的存储地址;将获取的存储地址赋值给所述待存储数据的key,将赋值后的key写入LSM Tree结构中。
可选地,所述对接收的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值之前,还包括:当接收到待存储数据时,判断当前内存中的待存储数据是否超过第一预设阈值;若是,对当前内存中的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值。
可选地,所述存储所述待存储数据的value值,获取所述待存储数据的value值的存储地址,包括:存储所述待存储数据的value值至本地存储空间或云端,获取所述待存储数据的value值在本地存储空间或云端的存储地址。
可选地,所述本地存储空间包括以下任意一项:本地磁盘、外置硬盘、闪存。
可选地,所述存储所述待存储数据的value值,包括:若所述本地存储空间为本地磁盘,则存储所述待存储数据的value值至本地磁盘中的预设文件***中,其中,所述预设文件***采用顺序写的写入顺序写入数据。
可选地,若所述本地存储空间为本地磁盘,则所述获取所述待存储数据的value值的存储地址,包括:从本地磁盘的文件目录中,获取所述待存储数据的value值所属文件的文件名;基于获取的文件名所对应的文件内容,确定出所述待存储数据的value值在文件中的偏移量;将获取的文件名和所述待存储数据的value值在文件中的偏移量进行组合,得到所述待存储数据的value值在所述本地磁盘中的存储地址。
可选地,所述将赋值后的key写入LSM Tree结构中,包括:将赋值后的key写入基于LSM Tree结构的最高层级存储中;当基于LSM Tree结构的最高层级存储中的数据大小达到第二预设阈值时,将所述待存储数据的key和/或基于LSM Tree结构的最高层级存储中的其他存储数据的Key,追加至基于LSM Tree结构的次一层级存储中。
可选地,所述将所述待存储数据的key和/或基于LSM Tree结构的最高层级存储中的其他存储数据的Key,追加至基于LSM Tree结构的次一层级存储中,包括:将最高层级存储和次一层级存储中包含的相同的key的赋值进行合并,保留最高层级存储中的Key的赋值并保存在次一层级存储中,其中,基于LSM Tree结构的存储中包含有多个层级,且相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。
可选地,若基于LSM Tree结构的第N层级存储中的数据大小达到为第N层级存储设定的特定阈值时,所述方法还包括:将第N层级存储与第N-1层级存储中包含的相同的key的赋值进行合并,保留第N层级存储中的Key的赋值并保存在N-1层级存储中,其中,基于LSMTree结构的存储包含有多个层级,且相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。
可选地,若至少一个key未被保留,获取未被保留的至少一个key的最后写入的赋值,并根据获取的key的最后写入的赋值得到key对应的value值的存储地址;根据得到的value值的存储地址,从所述本地存储空间或云端中查找并删除与该存储地址对应的value值。
可选地,所述将赋值后的key写入LSM Tree结构中之后,还包括:若接收到对所述待存储数据的读取指令,读取LSM Tree结构中的所述待存储数据的key;获取所述待存储数据的key的赋值,根据所述待存储数据的key的赋值中的存储地址,从所述本地存储空间或云端中读取与该存储地址对应的value值;将读取到的所述待存储数据的value值赋值给所述待存储数据的key,实现对所述待存储数据的读取。
可选地,基于LSM Tree结构的存储中包含有多个层级,则读取LSM Tree结构中的所述待存储数据的key,包括:依据基于LSM Tree结构的多个层级存储的顺序,从高到低依次在所述多个层级存储中查找所述待存储数据的key;读取第一次查找到的所述待存储数据的Key。
依据本发明的另一方面,还提供了一种基于LSM Tree结构的数据存储装置,包括:解析模块,适于对接收的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值;存储模块,适于存储所述待存储数据的value值,获取所述待存储数据的value值的存储地址;写入模块,适于将获取的存储地址赋值给所述待存储数据的key,将赋值后的key写入LSM Tree结构中。
可选地,所述装置还包括:判断模块,适于在接收到待存储数据时,判断当前内存中的待存储数据是否超过第一预设阈值;若是,所述解析模块对当前内存中的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值。
可选地,所述存储模块还适于:存储所述待存储数据的value值至本地存储空间或云端,获取所述待存储数据的value值在本地存储空间或云端的存储地址。
可选地,所述本地存储空间包括以下任意一项:本地磁盘、外置硬盘、闪存。
可选地,所述存储模块还适于:若所述本地存储空间为本地磁盘,则存储所述待存储数据的value值至本地磁盘中的预设文件***中,其中,所述预设文件***采用顺序写的写入顺序写入数据。
可选地,所述存储模块还适于:若所述本地存储空间为本地磁盘,从本地磁盘的文件目录中,获取所述待存储数据的value值所属文件的文件名;基于获取的文件名所对应的文件内容,确定出所述待存储数据的value值在文件中的偏移量;将获取的文件名和所述待存储数据的value值在文件中的偏移量进行组合,得到所述待存储数据的value值在所述本地磁盘中的存储地址。
可选地,所述写入模块还适于:将赋值后的key写入基于LSM Tree结构的最高层级存储中;当基于LSM Tree结构的最高层级存储中的数据大小达到第二预设阈值时,将所述待存储数据的key和/或基于LSM Tree结构的最高层级存储中的其他存储数据的Key,追加至基于LSM Tree结构的次一层级存储中。
可选地,所述写入模块还适于:将最高层级存储和次一层级存储中包含的相同的key的赋值进行合并,保留最高层级存储中的Key的赋值并保存在次一层级存储中,其中,基于LSM Tree结构的存储中包含有多个层级,且相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。
可选地,所述写入模块还适于:若基于LSM Tree结构的第N层级存储中的数据大小达到为第N层级存储设定的特定阈值时,将第N层级存储与第N-1层级存储中包含的相同的key的赋值进行合并,保留第N层级存储中的Key的赋值并保存在N-1层级存储中,其中,基于LSM Tree结构的存储包含有多个层级,且相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。
可选地,所述装置还包括:删除模块,适于若至少一个key未被保留,获取未被保留的至少一个key的最后写入的赋值,并根据获取的key的最后写入的赋值得到key对应的value值的存储地址;根据得到的value值的存储地址,从所述本地存储空间或云端中查找并删除与该存储地址对应的value值。
可选地,所述装置还包括读取模块,适于:在所述写入模块将赋值后的key写入LSMTree结构中之后,若接收到对所述待存储数据的读取指令,读取LSM Tree结构中的所述待存储数据的key;获取所述待存储数据的key的赋值,根据所述待存储数据的key的赋值中的存储地址,从所述本地存储空间或云端中读取与该存储地址对应的value值;将读取到的所述待存储数据的value值赋值给所述待存储数据的key,实现对所述待存储数据的读取。
可选地,所述读取模块还适于:若基于LSM Tree结构的存储中包含有多个层级,则依据基于LSM Tree结构的多个层级存储的顺序,从高到低依次在所述多个层级存储中查找所述待存储数据的key;读取第一次查找到的所述待存储数据的Key。
依据本发明的另一方面,还提供了一种基于LSM Tree结构的存储引擎,包括:上文任意实施例所述的基于LSM Tree结构的数据存储装置。
依据本发明的又一方面,还提供了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行上文任意实施例所述的基于LSM Tree结构的数据存储方法。
依据本发明的再一方面,还提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行上文任意实施例所述的基于LSM Tree结构的数据存储方法。
在本发明实施例中,首先,对计算机内存中的待存储数据进行处理,以解析出待存储数据的key和与key对应的value值。然后,存储待存储数据的value值,并获取待存储数据的value值的存储地址。最后,将获取的存储地址赋值给待存储数据的key,并将赋值后的key写入LSM Tree结构中。由此,本发明实施例存储待存储数据的value值后,将待存储数据的value值的存储地址赋值给相应的key,从而将赋值后的key写入LSM Tree结构中,进而实现待存储数据的key和其对应的value值的分开存储。采用这种存储方式使LSM Tree结构中无需存储数据的value值,而是直接存储key和key对应的value值存储地址,从而在后续进行数据合并时不仅能够有效减少大量的value值处理过程,还可以减少磁盘IO,特别是对于较大的待存储数据,能够更加明显地减少数据写入LSM Tree结构的开销。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的基于LSM Tree结构的数据存储方法的流程示意图;
图2示出了根据本发明一个实施例的LSM Tree结构中各层级存储的数据的读取过程示意图;
图3示出了根据本发明一个实施例的基于LSM Tree结构的数据存储装置的结构示意图;
图4示出了根据本发明另一个实施例的基于LSM Tree结构的数据存储装置的结构示意图;
图5示出了根据本发明一个实施例的基于LSM Tree结构的存储引擎的结构示意图;
图6示意性地示出了用于执行根据本发明的计算设备的框图;以及
图7示意性地示出了用于保持或者携带实现根据本发明的程序代码的存储单元。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决上述技术问题,本发明实施例提供了一种基于LSM Tree结构的数据存储方法。图1示出了根据本发明一个实施例的基于LSM Tree结构的数据存储方法的流程示意图。参见图1,该方法至少包括步骤S102至步骤S106。
步骤S102,对接收的待存储数据进行处理,解析出待存储数据的key和与key对应的value值。
步骤S104,存储待存储数据的value值,获取待存储数据的value值的存储地址。
该步骤中,待存储数据的value值可以存储至本地存储空间,也可以存储至云端。若value值不是很大,为了后续查找方便可以优先将其直接存储在本地存储空间,若value值较大,为了避免占用本地存储空间可以将其存储在云端的存储***中。相应的,待存储数据的value值的存储地址即value值在本地存储空间或云端的存储地址。
步骤S106,将获取的存储地址赋值给待存储数据的key,将赋值后的key写入LSMTree结构中。
在该步骤中,在将key和其对应的value值的存储地址写入LSM Tree结构中时,采用的写入方式是顺序写,并且LSM Tree结构的读写都是基于计算机磁盘实现的。
本发明实施例中,首先,对计算机内存中的待存储数据进行处理,以解析出待存储数据的key和与key对应的value值。然后,存储待存储数据的value值,并获取待存储数据的value值的存储地址。最后,将获取的存储地址赋值给待存储数据的key,并将赋值后的key写入LSM Tree结构中。由此,本发明实施例存储待存储数据的value值后,将待存储数据的value值的存储地址赋值给相应的key,从而将赋值后的key写入LSM Tree结构中,进而实现待存储数据的key和其对应的value值的分开存储。采用这种存储方式使LSM Tree结构中无需存储数据的value值,而是直接存储key和key对应的value值存储地址,从而在后续进行数据合并时不仅能够有效减少大量的value值处理过程,还可以减少磁盘IO,特别是对于较大的待存储数据,能够更加明显地减少数据写入LSM Tree结构的开销。
参见上文件步骤S102,本发明实施例对待存储数据进行处理的过程是,已经存储于计算机内存中的待存储数据大小达到一定阈值或者内存空间被占满时,启动对待存储数据的处理过程。在本发明一实施例中,在对内存中已经存在的待存储数据进行处理之前,即在计算机接收到待存储数据并进行存储时,可以先判断当前内存中的待存储数据是否超过第一预设阈值,若是,则对当前内存中的待存储数据进行处理,以解析出待存储数据的key和与key对应的value值。若当前内存中的待存储数据没有超过第一预设阈值,可以将待存储数据直接存储在内存中。
该实施例中的一定阈值和第一预设阈值都可以是任意数值,但是该数值不超过内存空间的大小,本发明实施例对一定阈值和第一预设阈值的具体数值范围不做限定。
参见上文步骤S104,在本发明一实施例中,本地存储空间可以是本地磁盘、外置硬盘、闪存等等。其中,若本地存储空间为本地磁盘,则存储待存储数据的value值至本地磁盘中的预设文件***中。预设文件***采用顺序写的写入顺序写入待存储数据的value值,相应的,在后续读取待存储数据的value值时,采用顺序读的读取顺序从预设文件***中读出待存储数据的value值。
在该实施例中,若本地存储空间为本地磁盘,那么获取待存储数据的value值的存储地址的方式可以为:首先,从本地磁盘的文件目录中获取待存储数据的value值所属文件的文件名。然后,基于获取的文件名所对应的文件内容,确定出待存储数据的value值在文件中的偏移量。最后,将获取的文件名和待存储数据的value值在文件中的偏移量进行组合,得到待存储数据的value值在本地磁盘中的存储地址。
其中,存储地址为固定长度,其大小可以为8个字节(即支持32位的地址)、4个字节等等,int类型的存储地址最多是10位。例如,若存储地址采用8个字节,某一value值的存储地址为00001 12584,那么前4个字节表示文件名,后4个字节表示文件名的偏移量。本发明实施例对存储地址的形式、大小不做具体限定。
参见上文件步骤S106,在本发明一实施例中,由于LSM Tree结构包含有多个层级,因此,在将赋值后的key写入LSM Tree结构中时,将赋值后的key写入基于LSM Tree结构的最高层级存储中。当基于LSM Tree结构的最高层级存储中的数据大小达到第二预设阈值时,将待存储数据的key和/或基于LSM Tree结构的最高层级存储中的其他存储数据的Key,追加至基于LSM Tree结构的次一层级存储中。其中,第二预设阈值可以是任意数值,但是该数值不超过LSM Tree结构的最高层级存储的内存空间大小,本发明实施例对第二预设阈值的具体数值范围不做限定。
在该实施例中,在将待存储数据的key和/或基于LSM Tree结构的最高层级存储中的其他存储数据的Key,追加至基于LSM Tree结构的次一层级存储中的意思是,对最高层级存储和次一层级存储中包含的相同key的赋值进行合并,从而保留最高层级存储中的Key的赋值并保存在次一层级存储中。
例如,假设LSM Tree结构具有5个层级,且层级顺序从高到低依次为L5级(即最高层级)、L4级、L3级、L2级、L1级。其中,L5级的内存空间大小为1GB,L4级的内存空间大小为5GB,第二预设阈值为1000MB。若L5级中存在待存储数据的key1=a,L4级中存在key1=b,其中a和b分别为不同value值的存储地址。因此,当L5级中的数据达到1000MB时,对L5级中的数据和L4级中的数据进行合并,合并过程中,由待存储数据key1对应的a替代原来L4级中key1对应的b,此时,L4级中的key1=a。
在上述合并过程中,还可以同时将L5级中的其他存储数据的Key按照上述合并方式合并至L4级中,从而在L4级中保留与L5级中相同key的赋值,并删除L5级中该相同key的赋值。
在该实施例中,当对L5级和L4级中的key的赋值进行合并之后,若L4级中的数据达到为其设定的特定阈值时,此时,还可以继续对L4级和L3级中的相同的key的赋值进行合并,合并过程中,在L3级中保留与L4级中相同key的赋值,以此类推,直到各层级中存储的数据均未达到其设定的特定阈值。
由此,根据上述待存储数据的key的存储过程,推出的对于LSM Tree结构中各层级通用的待存储数据存储方式为:若基于LSM Tree结构一共有N层级存储,将待存储数据按照顺序写的方式写入LSM Tree结构的过程中,当第N层级存储中的数据大小达到为第N层级存储设定的特定阈值时,将第N层级存储与第N-1层级存储中包含的相同的key的赋值进行合并,保留第N层级存储中的Key的赋值并保存在N-1层级存储中。
LSM Tree结构中保存的是Key的赋值,即value值的存储地址,而并非完整的数据内容,而在通常情况下,存储地址占用的空间很小,一般可以采用8字节或者4字节,当然也可以采用其他字节。因此,无论存储的数据本身占用多大内存,对存储的数据进行合并时,在LSM Tree结构中仅需对几个字节的Key的赋值进行合并,而不需要重新写value里面的内容,不仅节约了数据处理量,还大大减少了磁盘的IO,这种数据存储方式在value值比较大的数据优化效果更为明显。
在上述实施例中,若不同层级存储的相同的key的赋值在合并的过程中,存在至少一个key未被保留,获取未被保留的至少一个key的最后写入的赋值,并根据获取的key的最后写入的赋值得到key对应的value值的存储地址。进而根据value值的存储地址,从本地存储空间或云端中查找并删除与该存储地址对应的value值。
例如,上述实施例中,L5级中的数据和L4级中的数据进行合并,合并过程中,将L5级中的key1=a合并至L4级,将L4级原来存储的key1=b中key1的赋值b删除,当然还可以将存储地址b对应的value值从本地存储空间或云端中删除,并在L4级中将a重新赋值给其中的key1。具体在对存储地址删除时,可以将相应的存储地址放到队列中,并充分使用SSD(Solid State Drives,固态硬盘,简称固盘)的并行写的性能来进行删除。
另外,由于LSM Tree结构的数据写入方式为顺序写,因此,在基于LSM Tree结构的多个层级的存储中,相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。
上文已经介绍了将将赋值后的key写入基于LSM Tree结构的过程,下面介绍如何读取LSM Tree结构中各层级存储的数据,参见图2,读取LSM Tree结构中各层级存储的数据的过程可以包括步骤S202至步骤S206。
步骤S202,若接收到对待存储数据的读取指令时,读取LSM Tree结构中的待存储数据的key。
步骤S204,获取待存储数据的key的赋值,根据待存储数据的key的赋值中的存储地址,从本地存储空间或云端中读取与该存储地址对应的value值。
步骤S206,将读取到的待存储数据的value值赋值给待存储数据的key,实现对待存储数据的读取。
在本发明实施例中,基于LSM Tree结构的存储中包含有多个层级,在不同的层级中可能存在相同的key,例如,LSM Tree结构具有4个层级,其中,第四层级为最高层级,依次为第三层级、第二层级、第一层级,假设在第四层级、第三层级、第一层级中都存在有key1,且各key1的赋值不同,而通常情况下的读取需求都是要读取最新的数据。并且,上文已经介绍了基于LSM Tree结构的多个层级的存储中相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。因此,在读取基于LSM Tree结构中的待存储数据的key1时,为了能够读取最新的key1赋值,可以依据各层级存储的顺序,从高到低依次在多个层级存储中查找待存储数据的key,即在上述实施例中按照从第四层级到第一层级的顺序查找key1,当第一次在第四层级中查找到Key1时,则读取该key1对应的赋值。
进而,在读取了key1对应的赋值之后,根据key1的赋值中的存储地址,从本地存储空间或云端中读取与该存储地址对应的value值,并将该value值赋值给key1,实现了对待存储数据的读取。
基于同一发明构思,本发明实施例还提供了一种基于LSM Tree结构的数据存储装置。图3示出了根据本发明一个实施例的基于LSM Tree结构的数据存储装置300的结构示意图。参见图3,基于LSM Tree结构的数据存储装置300包括解析模块310、存储模块320以及写入模块330。
现介绍本发明实施例的基于LSM Tree结构的数据存储装置300的各组成或器件的功能以及各部分间的连接关系:
解析模块310,适于对接收的待存储数据进行处理,解析出待存储数据的key和与key对应的value值;
存储模块320,与解析模块310耦合,适于存储待存储数据的value值,获取待存储数据的value值的存储地址;
写入模块330,与存储模块320耦合,适于将获取的存储地址赋值给待存储数据的key,将赋值后的key写入LSM Tree结构中。
在本发明一实施例中,存储模块320还适于,存储待存储数据的value值至本地存储空间或云端,获取待存储数据的value值在本地存储空间或云端的存储地址。
在本发明一实施例中,本地存储空间包括以下任意一项:本地磁盘、外置硬盘、闪存。
在本发明一实施例中,存储模块320还适于,若本地存储空间为本地磁盘,则存储待存储数据的value值至本地磁盘中的预设文件***中,其中,预设文件***采用顺序写的写入顺序写入数据。
在本发明一实施例中,存储模块320还适于,若本地存储空间为本地磁盘,从本地磁盘的文件目录中,获取待存储数据的value值所属文件的文件名。基于获取的文件名所对应的文件内容,确定出待存储数据的value值在文件中的偏移量。将获取的文件名和待存储数据的value值在文件中的偏移量进行组合,得到待存储数据的value值在本地磁盘中的存储地址。
在本发明一实施例中,写入模块330还适于,将赋值后的key写入基于LSM Tree结构的最高层级存储中。当基于LSM Tree结构的最高层级存储中的数据大小达到第二预设阈值时,将待存储数据的key和/或基于LSM Tree结构的最高层级存储中的其他存储数据的Key,追加至基于LSM Tree结构的次一层级存储中。
在本发明一实施例中,写入模块330还适于,将最高层级存储和次一层级存储中包含的相同的key的赋值进行合并,保留最高层级存储中的Key的赋值并保存在次一层级存储中,其中,基于LSM Tree结构的存储中包含有多个层级,且相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。
在本发明一实施例中,写入模块330还适于,若基于LSM Tree结构的第N层级存储中的数据大小达到为第N层级存储设定的特定阈值时,将第N层级存储与第N-1层级存储中包含的相同的key的赋值进行合并,保留第N层级存储中的Key的赋值并保存在N-1层级存储中,其中,基于LSM Tree结构的存储包含有多个层级,且相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。
本发明实施例还提供了另一种基于LSM Tree结构的数据存储装置,参见图4,基于LSM Tree结构的数据存储装置300除了包含上述模块之外,还包括判断模块340、删除模块350以及读取模块360。
判断模块340,与解析模块310耦合适于在接收到待存储数据时,判断当前内存中的待存储数据是否超过第一预设阈值,若是,解析模块310对当前内存中的待存储数据进行处理,解析出待存储数据的key和与key对应的value值。
删除模块350,与写入模块330耦合,适于若至少一个key未被保留,获取未被保留的至少一个key的最后写入的赋值,并根据获取的key的最后写入的赋值得到key对应的value值的存储地址。根据得到的value值的存储地址,从本地存储空间或云端中查找并删除与该存储地址对应的value值。
读取模块360,与写入模块330耦合,适于在写入模块330将赋值后的key写入基于LSM Tree结构中之后,若接收到对待存储数据的读取指令,读取基于LSM Tree结构中的待存储数据的key。获取待存储数据的key的赋值,根据待存储数据的key的赋值中的存储地址,从本地存储空间或云端中读取与该存储地址对应的value值,并将读取到的待存储数据的value值赋值给待存储数据的key,实现对待存储数据的读取。
在本发明一实施例中,读取模块360还适于,若基于LSM Tree结构的存储中包含有多个层级,则依据基于LSM Tree结构的多个层级存储的顺序,从高到低依次在多个层级存储中查找待存储数据的key,并读取第一次查找到的待存储数据的Key。
基于同一发明构思,本发明实施例还提供了一种基于LSM Tree结构的存储引擎500,参见图5,基于LSM Tree结构的存储引擎500包括上文任意实施例中的基于LSM Tree结构的数据存储装置300。
根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
首先,对计算机内存中的待存储数据进行处理,以解析出待存储数据的key和与key对应的value值。然后,存储待存储数据的value值,并获取待存储数据的value值的存储地址。最后,将获取的存储地址赋值给待存储数据的key,并将赋值后的key写入LSM Tree结构中。由此,本发明实施例存储待存储数据的value值后,将待存储数据的value值的存储地址赋值给相应的key,从而将赋值后的key写入LSM Tree结构中,进而实现待存储数据的key和其对应的value值的分开存储。采用这种存储方式使LSM Tree结构中无需直接存储数据的value值,而是存储key和key对应的value值存储地址,从而在后续进行数据合并时不仅能够有效减少大量的value值处理过程,还可以减少磁盘IO,特别是对于较大的待存储数据,能够更加明显地减少数据写入LSM Tree结构的开销。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的基于LSM Tree结构的数据存储装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
本发明实施例提供了一种电子设备,包括处理器;以及被安排成存储计算机可执行指令的存储器,可执行指令在被执行时使处理器执行根据上文任意实施例的基于LSMTree结构的数据存储方法。
本发明实施例还提供了一种计算机可读存储介质,其中,计算机可读存储介质存储一个或多个程序,一个或多个程序当被包括多个应用程序的电子设备执行时,使得电子设备执行根据上文任意实施例的基于LSM Tree结构的数据存储方法。
例如,图6示出了可以实现基于LSM Tree结构的数据存储方法的计算设备,即上文中的电子设备。该计算设备传统上包括处理器610和存储器620形式的计算机程序产品或者计算机可读介质。存储器620可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。存储器620具有存储用于执行上述方法中的任何方法步骤的程序代码631的存储空间630。例如,存储程序代码的存储空间630可以存储分别用于实现上面的方法中的各种步骤的各个程序代码631。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(CD)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为例如图7所示的便携式或者固定存储单元。该存储单元可以具有与图6的计算设备中的存储器620类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元包括用于执行本发明的方法步骤的计算机可读代码631’,即可以由诸如610之类的处理器读取的代码,当这些代码由计算设备运行时,导致该计算设备执行上面所描述的方法中的各个步骤。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。本发明实施例还提供了A1、一种基于LSM Tree结构的数据存储方法,包括:
对接收的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值;
存储所述待存储数据的value值,获取所述待存储数据的value值的存储地址;
将获取的存储地址赋值给所述待存储数据的key,将赋值后的key写入LSM Tree结构中。
A2、根据A1所述的方法,其中,所述对接收的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值之前,还包括:
当接收到待存储数据时,判断当前内存中的待存储数据是否超过第一预设阈值;
若是,对当前内存中的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值。
A3、根据A1或A2所述的方法,其中,所述存储所述待存储数据的value值,获取所述待存储数据的value值的存储地址,包括:
存储所述待存储数据的value值至本地存储空间或云端,获取所述待存储数据的value值在本地存储空间或云端的存储地址。
A4、根据A3所述的方法,其中,所述本地存储空间包括以下任意一项:本地磁盘、外置硬盘、闪存。
A5、根据A4所述的方法,其中,所述存储所述待存储数据的value值,包括:
若所述本地存储空间为本地磁盘,则存储所述待存储数据的value值至本地磁盘中的预设文件***中,其中,所述预设文件***采用顺序写的写入顺序写入数据。
A6、根据A4或A5所述的方法,其中,若所述本地存储空间为本地磁盘,则所述获取所述待存储数据的value值的存储地址,包括:
从本地磁盘的文件目录中,获取所述待存储数据的value值所属文件的文件名;
基于获取的文件名所对应的文件内容,确定出所述待存储数据的value值在文件中的偏移量;
将获取的文件名和所述待存储数据的value值在文件中的偏移量进行组合,得到所述待存储数据的value值在所述本地磁盘中的存储地址。
A7、根据A1-A5任一项所述的方法,其中,所述将赋值后的key写入LSM Tree结构中,包括:
将赋值后的key写入基于LSM Tree结构的最高层级存储中;
当基于LSM Tree结构的最高层级存储中的数据大小达到第二预设阈值时,将所述待存储数据的key和/或基于LSM Tree结构的最高层级存储中的其他存储数据的Key,追加至基于LSM Tree结构的次一层级存储中。
A8、根据A7所述的方法,其中,所述将所述待存储数据的key和/或基于LSM Tree结构的最高层级存储中的其他存储数据的Key,追加至基于LSM Tree结构的次一层级存储中,包括:
将最高层级存储和次一层级存储中包含的相同的key的赋值进行合并,保留最高层级存储中的Key的赋值并保存在次一层级存储中,其中,基于LSM Tree结构的存储中包含有多个层级,且相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。
A9、根据A3-A5任一项所述的方法,其中,若基于LSM Tree结构的第N层级存储中的数据大小达到为第N层级存储设定的特定阈值时,所述方法还包括:
将第N层级存储与第N-1层级存储中包含的相同的key的赋值进行合并,保留第N层级存储中的Key的赋值并保存在N-1层级存储中,其中,基于LSM Tree结构的存储包含有多个层级,且相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。
A10、根据A9所述的方法,其中,
若至少一个key未被保留,获取未被保留的至少一个key的最后写入的赋值,并根据获取的key的最后写入的赋值得到key对应的value值的存储地址;
根据得到的value值的存储地址,从所述本地存储空间或云端中查找并删除与该存储地址对应的value值。
A11、根据A3-A5任一项所述的方法,其中,所述将赋值后的key写入LSM Tree结构中之后,还包括:
若接收到对所述待存储数据的读取指令,读取LSM Tree结构中的所述待存储数据的key;
获取所述待存储数据的key的赋值,根据所述待存储数据的key的赋值中的存储地址,从所述本地存储空间或云端中读取与该存储地址对应的value值;
将读取到的所述待存储数据的value值赋值给所述待存储数据的key,实现对所述待存储数据的读取。
A12、根据A11所述的方法,其中,基于LSM Tree结构的存储中包含有多个层级,则读取LSM Tree结构中的所述待存储数据的key,包括:
依据基于LSM Tree结构的多个层级存储的顺序,从高到低依次在所述多个层级存储中查找所述待存储数据的key;
读取第一次查找到的所述待存储数据的Key。
B13、一种基于LSM Tree结构的数据存储装置,包括:
解析模块,适于对接收的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值;
存储模块,适于存储所述待存储数据的value值,获取所述待存储数据的value值的存储地址;
写入模块,适于将获取的存储地址赋值给所述待存储数据的key,将赋值后的key写入LSM Tree结构中。
B14、根据B13所述的装置,其中,还包括:
判断模块,适于在接收到待存储数据时,判断当前内存中的待存储数据是否超过第一预设阈值;
若是,所述解析模块对当前内存中的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值。
B15、根据B13或B14所述的装置,其中,所述存储模块还适于:
存储所述待存储数据的value值至本地存储空间或云端,获取所述待存储数据的value值在本地存储空间或云端的存储地址。
B16、根据B15所述的装置,其中,所述本地存储空间包括以下任意一项:本地磁盘、外置硬盘、闪存。
B17、根据B16所述的装置,其中,所述存储模块还适于:
若所述本地存储空间为本地磁盘,则存储所述待存储数据的value值至本地磁盘中的预设文件***中,其中,所述预设文件***采用顺序写的写入顺序写入数据。
B18、根据B16或B17所述的装置,其中,所述存储模块还适于:
若所述本地存储空间为本地磁盘,从本地磁盘的文件目录中,获取所述待存储数据的value值所属文件的文件名;
基于获取的文件名所对应的文件内容,确定出所述待存储数据的value值在文件中的偏移量;
将获取的文件名和所述待存储数据的value值在文件中的偏移量进行组合,得到所述待存储数据的value值在所述本地磁盘中的存储地址。
B19、根据B13-B17任一项所述的装置,其中,所述写入模块还适于:
将赋值后的key写入基于LSM Tree结构的最高层级存储中;
当基于LSM Tree结构的最高层级存储中的数据大小达到第二预设阈值时,将所述待存储数据的key和/或基于LSM Tree结构的最高层级存储中的其他存储数据的Key,追加至基于LSM Tree结构的次一层级存储中。
B20、根据B19所述的装置,其中,所述写入模块还适于:
将最高层级存储和次一层级存储中包含的相同的key的赋值进行合并,保留最高层级存储中的Key的赋值并保存在次一层级存储中,其中,基于LSM Tree结构的存储中包含有多个层级,且相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。
B21、根据B15-B17任一项所述的装置,其中,所述写入模块还适于:
若基于LSM Tree结构的第N层级存储中的数据大小达到为第N层级存储设定的特定阈值时,将第N层级存储与第N-1层级存储中包含的相同的key的赋值进行合并,保留第N层级存储中的Key的赋值并保存在N-1层级存储中,其中,基于LSM Tree结构的存储包含有多个层级,且相邻两个层级存储中较高层级存储中的Key的赋值为后写入的Key的赋值。
B22、根据B21所述的装置,其中,还包括:
删除模块,适于若至少一个key未被保留,获取未被保留的至少一个key的最后写入的赋值,并根据获取的key的最后写入的赋值得到key对应的value值的存储地址;
根据得到的value值的存储地址,从所述本地存储空间或云端中查找并删除与该存储地址对应的value值。
B23、根据B15-B17任一项所述的装置,其中,还包括读取模块,适于:
在所述写入模块将赋值后的key写入LSM Tree结构中之后,若接收到对所述待存储数据的读取指令,读取LSM Tree结构中的所述待存储数据的key;
获取所述待存储数据的key的赋值,根据所述待存储数据的key的赋值中的存储地址,从所述本地存储空间或云端中读取与该存储地址对应的value值;
将读取到的所述待存储数据的value值赋值给所述待存储数据的key,实现对所述待存储数据的读取。
B24、根据B23所述的装置,其中,所述读取模块还适于:
若基于LSM Tree结构的存储中包含有多个层级,则依据基于LSM Tree结构的多个层级存储的顺序,从高到低依次在所述多个层级存储中查找所述待存储数据的key;
读取第一次查找到的所述待存储数据的Key。
C25、一种基于LSM Tree结构的存储引擎,包括:
B13-B24中任一项所述的基于LSM Tree结构的数据存储装置。
D26、一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行根据A1-A12任一项所述的基于LSM Tree结构的数据存储方法。
E27、一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行根据A1-A12任一项所述的基于LSM Tree结构的数据存储方法。
Claims (10)
1.一种基于LSM Tree结构的数据存储方法,包括:
对接收的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值;
存储所述待存储数据的value值,获取所述待存储数据的value值的存储地址;
将获取的存储地址赋值给所述待存储数据的key,将赋值后的key写入LSM Tree结构中。
2.根据权利要求1所述的方法,其中,所述对接收的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值之前,还包括:
当接收到待存储数据时,判断当前内存中的待存储数据是否超过第一预设阈值;
若是,对当前内存中的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值。
3.根据权利要求1或2所述的方法,其中,所述存储所述待存储数据的value值,获取所述待存储数据的value值的存储地址,包括:
存储所述待存储数据的value值至本地存储空间或云端,获取所述待存储数据的value值在本地存储空间或云端的存储地址。
4.根据权利要求3所述的方法,其中,所述本地存储空间包括以下任意一项:本地磁盘、外置硬盘、闪存。
5.根据权利要求4所述的方法,其中,所述存储所述待存储数据的value值,包括:
若所述本地存储空间为本地磁盘,则存储所述待存储数据的value值至本地磁盘中的预设文件***中,其中,所述预设文件***采用顺序写的写入顺序写入数据。
6.根据权利要求4或5所述的方法,其中,若所述本地存储空间为本地磁盘,则所述获取所述待存储数据的value值的存储地址,包括:
从本地磁盘的文件目录中,获取所述待存储数据的value值所属文件的文件名;
基于获取的文件名所对应的文件内容,确定出所述待存储数据的value值在文件中的偏移量;
将获取的文件名和所述待存储数据的value值在文件中的偏移量进行组合,得到所述待存储数据的value值在所述本地磁盘中的存储地址。
7.一种基于LSM Tree结构的数据存储装置,包括:
解析模块,适于对接收的待存储数据进行处理,解析出所述待存储数据的key和与所述key对应的value值;
存储模块,适于存储所述待存储数据的value值,获取所述待存储数据的value值的存储地址;
写入模块,适于将获取的存储地址赋值给所述待存储数据的key,将赋值后的key写入LSM Tree结构中。
8.一种基于LSM Tree结构的存储引擎,包括:
权利要求7所述的基于LSM Tree结构的数据存储装置。
9.一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行根据权利要求1-6任一项所述的基于LSM Tree结构的数据存储方法。
10.一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行根据权利要求1-6任一项所述的基于LSM Tree结构的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711408940.4A CN108052643B (zh) | 2017-12-22 | 2017-12-22 | 基于LSM Tree结构的数据存储方法、装置及存储引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711408940.4A CN108052643B (zh) | 2017-12-22 | 2017-12-22 | 基于LSM Tree结构的数据存储方法、装置及存储引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108052643A true CN108052643A (zh) | 2018-05-18 |
CN108052643B CN108052643B (zh) | 2021-02-23 |
Family
ID=62131524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711408940.4A Active CN108052643B (zh) | 2017-12-22 | 2017-12-22 | 基于LSM Tree结构的数据存储方法、装置及存储引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108052643B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947775A (zh) * | 2019-03-13 | 2019-06-28 | 北京微步在线科技有限公司 | 数据处理方法、装置、电子设备及计算机可读介质 |
CN110515957A (zh) * | 2019-09-02 | 2019-11-29 | 深圳市网心科技有限公司 | 一种区块链数据存储的方法、***、设备及可读存储介质 |
CN111831622A (zh) * | 2020-03-31 | 2020-10-27 | 北京嘀嘀无限科技发展有限公司 | 数据索引生成方法、装置、电子设备和可读存储介质 |
CN112699092A (zh) * | 2021-01-13 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
CN112905684A (zh) * | 2021-02-22 | 2021-06-04 | 杭州海兴泽科信息技术有限公司 | 一种电力数据入库方法、装置和计算机可读存储介质 |
CN113495871A (zh) * | 2020-04-04 | 2021-10-12 | 厦门网宿有限公司 | 一种基于LSM-Tree存储引擎的文件管理方法和装置 |
CN113535714A (zh) * | 2021-06-18 | 2021-10-22 | 深圳市汉云科技有限公司 | 数据的存储方法、读取方法及计算机设备 |
CN113704261A (zh) * | 2021-08-26 | 2021-11-26 | 平凯星辰(北京)科技有限公司 | 基于云存储的键值存储*** |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102209387A (zh) * | 2011-06-13 | 2011-10-05 | 苏州两江科技有限公司 | 一种基于wsn技术的三维快速定位方法 |
CN102355495A (zh) * | 2011-09-27 | 2012-02-15 | 中国联合网络通信集团有限公司 | 数据处理方法、装置和*** |
CN102722449A (zh) * | 2012-05-24 | 2012-10-10 | 中国科学院计算技术研究所 | 基于SSD的Key-Value型本地存储方法及*** |
CN103080908A (zh) * | 2010-08-31 | 2013-05-01 | 日本电气株式会社 | 存储*** |
CN103823865A (zh) * | 2014-02-25 | 2014-05-28 | 南京航空航天大学 | 一种数据库主存索引方法 |
US20140188870A1 (en) * | 2012-12-28 | 2014-07-03 | Dhrubajyoti Borthakur | Lsm cache |
US20140195492A1 (en) * | 2012-12-19 | 2014-07-10 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for fixing logical or physical corruption in databases using lsm trees |
CN104142958A (zh) * | 2013-05-10 | 2014-11-12 | 华为技术有限公司 | 一种键值对***中数据的存储方法和相关装置 |
CN104462141A (zh) * | 2013-09-24 | 2015-03-25 | ***通信集团重庆有限公司 | 一种数据存储与查询的方法、***及存储引擎装置 |
CN105224237A (zh) * | 2014-05-26 | 2016-01-06 | 华为技术有限公司 | 一种数据存储方法及装置 |
CN105447035A (zh) * | 2014-08-29 | 2016-03-30 | 华为技术有限公司 | 数据扫描方法及装置 |
CN105468298A (zh) * | 2015-11-19 | 2016-04-06 | 中国科学院信息工程研究所 | 一种基于日志结构合并树的键值存储方法 |
CN106708427A (zh) * | 2016-11-17 | 2017-05-24 | 华中科技大学 | 一种适用于键值对数据的存储方法 |
CN107038206A (zh) * | 2017-01-17 | 2017-08-11 | 阿里巴巴集团控股有限公司 | Lsm树的建立方法、lsm树的数据读取方法和服务器 |
US20170364414A1 (en) * | 2016-06-17 | 2017-12-21 | Acronis International Gmbh | System and method for data deduplication using log-structured merge trees |
-
2017
- 2017-12-22 CN CN201711408940.4A patent/CN108052643B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103080908A (zh) * | 2010-08-31 | 2013-05-01 | 日本电气株式会社 | 存储*** |
CN102209387A (zh) * | 2011-06-13 | 2011-10-05 | 苏州两江科技有限公司 | 一种基于wsn技术的三维快速定位方法 |
CN102355495A (zh) * | 2011-09-27 | 2012-02-15 | 中国联合网络通信集团有限公司 | 数据处理方法、装置和*** |
CN102722449A (zh) * | 2012-05-24 | 2012-10-10 | 中国科学院计算技术研究所 | 基于SSD的Key-Value型本地存储方法及*** |
US20170161159A1 (en) * | 2012-12-19 | 2017-06-08 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for fixing logical or physical corruption in databases using lsm trees |
US20140195492A1 (en) * | 2012-12-19 | 2014-07-10 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for fixing logical or physical corruption in databases using lsm trees |
US20140188870A1 (en) * | 2012-12-28 | 2014-07-03 | Dhrubajyoti Borthakur | Lsm cache |
CN104142958A (zh) * | 2013-05-10 | 2014-11-12 | 华为技术有限公司 | 一种键值对***中数据的存储方法和相关装置 |
CN104462141A (zh) * | 2013-09-24 | 2015-03-25 | ***通信集团重庆有限公司 | 一种数据存储与查询的方法、***及存储引擎装置 |
CN103823865A (zh) * | 2014-02-25 | 2014-05-28 | 南京航空航天大学 | 一种数据库主存索引方法 |
CN105224237A (zh) * | 2014-05-26 | 2016-01-06 | 华为技术有限公司 | 一种数据存储方法及装置 |
CN105447035A (zh) * | 2014-08-29 | 2016-03-30 | 华为技术有限公司 | 数据扫描方法及装置 |
CN105468298A (zh) * | 2015-11-19 | 2016-04-06 | 中国科学院信息工程研究所 | 一种基于日志结构合并树的键值存储方法 |
US20170364414A1 (en) * | 2016-06-17 | 2017-12-21 | Acronis International Gmbh | System and method for data deduplication using log-structured merge trees |
CN106708427A (zh) * | 2016-11-17 | 2017-05-24 | 华中科技大学 | 一种适用于键值对数据的存储方法 |
CN107038206A (zh) * | 2017-01-17 | 2017-08-11 | 阿里巴巴集团控股有限公司 | Lsm树的建立方法、lsm树的数据读取方法和服务器 |
Non-Patent Citations (1)
Title |
---|
隆飞: "基于LSM Tree的分布式索引实现", 《华东师范大学学报(自然科学版)》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947775A (zh) * | 2019-03-13 | 2019-06-28 | 北京微步在线科技有限公司 | 数据处理方法、装置、电子设备及计算机可读介质 |
CN110515957A (zh) * | 2019-09-02 | 2019-11-29 | 深圳市网心科技有限公司 | 一种区块链数据存储的方法、***、设备及可读存储介质 |
CN111831622A (zh) * | 2020-03-31 | 2020-10-27 | 北京嘀嘀无限科技发展有限公司 | 数据索引生成方法、装置、电子设备和可读存储介质 |
CN113495871A (zh) * | 2020-04-04 | 2021-10-12 | 厦门网宿有限公司 | 一种基于LSM-Tree存储引擎的文件管理方法和装置 |
CN113495871B (zh) * | 2020-04-04 | 2023-06-23 | 厦门网宿有限公司 | 一种基于LSM-Tree存储引擎的文件管理方法和装置 |
CN112699092A (zh) * | 2021-01-13 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
CN112699092B (zh) * | 2021-01-13 | 2023-02-03 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
CN112905684A (zh) * | 2021-02-22 | 2021-06-04 | 杭州海兴泽科信息技术有限公司 | 一种电力数据入库方法、装置和计算机可读存储介质 |
CN113535714A (zh) * | 2021-06-18 | 2021-10-22 | 深圳市汉云科技有限公司 | 数据的存储方法、读取方法及计算机设备 |
CN113704261A (zh) * | 2021-08-26 | 2021-11-26 | 平凯星辰(北京)科技有限公司 | 基于云存储的键值存储*** |
CN113704261B (zh) * | 2021-08-26 | 2024-05-24 | 平凯星辰(北京)科技有限公司 | 基于云存储的键值存储*** |
Also Published As
Publication number | Publication date |
---|---|
CN108052643B (zh) | 2021-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108052643A (zh) | 基于LSM Tree结构的数据存储方法、装置及存储引擎 | |
US9977802B2 (en) | Large string access and storage | |
US10831736B2 (en) | Fast multi-tier indexing supporting dynamic update | |
CN107918612B (zh) | 键值存储***数据结构的实现方法和装置 | |
CN106294603B (zh) | 文件存储方法及装置 | |
US9542409B2 (en) | Deduplicated file system | |
US9582426B2 (en) | Hardware managed compressed cache | |
US10831747B2 (en) | Multi stage aggregation using digest order after a first stage of aggregation | |
CN102567427B (zh) | 一种对象数据处理方法及装置 | |
US7634494B2 (en) | Flash memory directory virtualization | |
CN104238962B (zh) | 向缓存中写入数据的方法及装置 | |
US9697221B2 (en) | OZIP compression and decompression | |
US20150106579A1 (en) | Forward-Only Paged Data Storage Management | |
US9977801B2 (en) | Paged column dictionary | |
US20090254575A1 (en) | Apparatus and method for manipulating nested archive files and folders | |
CN105095287A (zh) | Lsm数据合并排序方法和装置 | |
US7533234B2 (en) | Method and apparatus for storing compressed code without an index table | |
CN110399096B (zh) | 分布式文件***元数据缓存重删的方法、装置以及设备 | |
CN109582231B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN105824881A (zh) | 一种基于负载均衡的重复数据删除数据放置方法器 | |
CN109697019B (zh) | 基于fat文件***的数据写入的方法和*** | |
CN106599247A (zh) | LSM‑tree结构中数据文件的合并方法及装置 | |
CN103810297B (zh) | 基于重删技术的写方法、读方法、写装置和读装置 | |
US10248677B1 (en) | Scaling an SSD index on a deduplicated storage system | |
CN111190895B (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 |