CN115827573B - 基于Linux的key-value形数据存储和使用方法 - Google Patents
基于Linux的key-value形数据存储和使用方法 Download PDFInfo
- Publication number
- CN115827573B CN115827573B CN202310121877.5A CN202310121877A CN115827573B CN 115827573 B CN115827573 B CN 115827573B CN 202310121877 A CN202310121877 A CN 202310121877A CN 115827573 B CN115827573 B CN 115827573B
- Authority
- CN
- China
- Prior art keywords
- data
- value
- key
- double
- shape data
- 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.)
- Active
Links
Images
Classifications
-
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
基于Linux的key‑value形数据存储和使用方法,包括如下步骤:基于key‑value形数据源文件构建.dat数据文件;获取key‑value形数据源文件的md5值;将.dat数据文件映射到内存上并返回内存地址;使用映射后的内存地址得到存储的value数据的首地址以及双数组trie树的数据首地址,基于两个首地址完成由key数据到value数据的查找使用流程,完成key‑value形数据的存储和使用。本发明能够实现在Linux操作系统下以极低的内存资源占用和远超常用红黑树数据结构、接近哈希表/散列表数据结构的查找性能来实现key‑value形数据的存储与查找。
Description
技术领域
本发明涉及数据存储优化技术领域,具体涉及基于Linux的key-value形数据存储和使用方法。
背景技术
计算机软件使用的数据类型多种多样,例如c++编程语言中常见的整型数据int在32位计算机中代表了32个bit位组成的数据,每个bit位有0和1两种状态,最高bit位代表正负,因此整型数据int可存储的数据范围为-2147483648~2147483647[-2^31~2^31-1]。除此之外,计算机软件中还存在一种常用的key-value形数据。通俗的来讲,例如每个人的身份证号是唯一的,每个身份证号对应着唯一的人名,这种身份证号码和唯一的姓名之间的关系就是一种key-value形数据。我们可以通过唯一的key(身份证号码)来找到唯一的value(姓名)。
计算机软件经常需要加载到内存一些静态key-value形数据,这些数据一般存储在计算机硬盘中例如字典、配置文件等。计算机在内存中加载这些静态key-value形数据时有很多选择,例如c++标准库中的std::map、std::unordered_map,QT库中的QMap、QHash等。随着计算机软件需要存储的数据量的增大,软件占用的内存资源也越来越高。而计算机软件存储key-value形数据绝大部分是为了更加高效的通过key来查找value数据,因此如何保持高效的查找效率并且降低软件程序的内存资源占用成为了很多软件开发者难以兼顾的难题。
目前计算机软件常用的存储key-value形数据的容器主要分为两类。
一种是类似c++标准库STL中的std::map结构。这种结构通常的底层原理为自平衡的二叉查找树,又称红黑树,这种结构可以在插入和删除操作时通过特定操作保持二叉查找树的平衡,在获得较高的查找性能的同时保持数据存储的顺序性。 它可以在O(log n)时间内做查找,插入和删除,这里的n是指树中元素的数目。
另一种是类似c++标准库STL中的std::unordered_map结构。这种结构的底层原理为哈希表,又称散列表。哈希表构造完成后查找、插入等操作只需要接近常量的时间即O(1)的时间级。
这两种方法存在共同的缺点:数据均存储在内存中,数据量的增大将会导致程序占用内存资源过高,并且每次程序重新运行时需要重新构造对应的数据结构。随着数据量的增大,这两种方法的构造时间也会逐渐增加。
第二种方法哈希表虽然拥有最快的查找速度,但无法保持存储数据的顺序性,并且构造哈希表需要占用更多的内存空间。数据量较大时也可能出现key值冲突的情况,因此限制了这种方法的使用场景。
专利申请号CN109446198A公开一种基于双数组的trie树节点压缩方法及装置,其技术的核心内容基本集中在双数组树本身的构造优化和对应的检索使用方法上,通过预加载全部key值计算出双数组trie树中的叶子结点,然后将叶子结点后的数据单独存储到一个连续数组中,从而降低双数组trie树的存储空间占用。此方法在key值的长度存在明显差异时可在一定程度上降低双数组trie树的空间占用,不过处理流程中引入了预处理获取叶子节点的操作会导致构造双数组trie树的耗时增加,另外此方法额外加入了存放叶子结点之后数据的连续数组进而导致查询流程中会额外引入跳转连续数组并对比数据内容的操作会导致双数组trie树的接口性能降低。
发明内容
为解决已有技术存在的不足,本发明提供了一种基于Linux的key-value形数据存储和使用方法,包括如下步骤:
步骤S1:基于key-value形数据源文件构建双数组trie树,并基于双数组trie树构建.dat数据文件;
步骤S2:获取key-value形数据源文件的md5值;
步骤S3:使用mmap机制将.dat数据文件映射到内存上并返回映射后的内存地址addr;
步骤S4:使用映射后的内存地址addr获取到.dat数据文件中的md5值,并与步骤S2中的md5值进行比对,相同的话执行步骤S5至步骤S7;不同的话,跳转到步骤S1,重新构建.dat数据文件,并重新执行步骤S2至步骤S4;
步骤S5:使用映射后的内存地址addr得到存储的value数据的首地址elements_addr以及双数组trie树的数据首地址trie_addr;
步骤S6:基于value数据的首地址elements_addr以及双数组trie树的数据首地址trie_addr完成由key数据到value数据的查找使用流程,完成key-value形数据的存储和使用;
步骤S7:取消.dat数据文件的mmap挂载。
其中,所述步骤S5中,value数据的首地址elements_addr的获取方法如下:
步骤S51:根据.dat数据文件的构造顺序从.dat数据文件中获取到key-value形数据总数elements_num、全部value数据字节数与value数据个数之和elements_size以及双数组trie树占用的字节数量trie_size;
步骤S52:使用内存地址addr加上步骤S51中得到的三项字节数之和的偏移量,得到存储的value数据的首地址elements_addr;
双数组trie树的数据首地址trie_addr的获取方法如下:将value数据的首地址elements_addr加上全部value数据字节数与value数据个数之和elements_size得到双数组trie树的数据首地址trie_addr。
其中,所述步骤S6中,基于value数据的首地址elements_addr以及双数组trie树的数据首地址trie_addr完成由key数据到value数据的查找使用流程的方法如下:
步骤S61:针对特定的key数据,根据双数组trie树的数据首地址trie_addr,通过双数组trie树查找到该key数据对应的数据偏移值offset;
步骤S62:使用value数据的首地址elements_addr加上步骤S61中所获取的数据偏移值offset,得到key数据对应的value数据存储在.dat文件中的首地址;
步骤S63:将数据以字节的方式依次读取到计算机软件程序中直到获取到字节内容为“/0”时中止读取,至此完成key数据到value数据的查找使用流程。
其中,所述步骤S1中,基于key-value形数据源文件构建双数组trie树,并基于双数组trie树构建.dat数据文件的方法如下:
步骤S11:将存储key-value形数据的源文件所在路径传入计算机程序中;
步骤S12:对传入的key-value形数据源文件内容进行解析处理,将全部key-value形数据提取出来存入计算机内存中;
步骤S13:将存入计算机内存的key-value形数据根据key值的ASCII码大小进行比较排序;
步骤S14:将排好序的key-value形数据进行拆分,从第一组key-value形数据开始,拆分为key-offset-value形数据,其中offset为当前组数之前全部key-value形数据中value数据的字节数之和加上当前组数减一最终计算的结果,用数学公式表示为:
offset=(V1+V2+...+Vn-1)+(n-1),n>1
其中n为整数,指的是当前的key-value形数据是第n组,V1、V2、Vn-1表示第1组、第2组、第n-1组key-value形数据中value数据的字节数量,第一组key-value形数据的offset为0;
步骤S15:依次处理完计算机内存中全部的key-value形数据,得到按照特定顺序依次排列的key-offset-value形数据;
步骤S16:按照顺序将key-offset-value形数据中的key数据取出用来构造有向无环词图DAWG;
步骤S17:使用构造完成的有向无环词图DAWG和key-offset-value形数据中的offset数据按照顺序构造双数组trie树;
步骤S18:基于所构造的双数组trie树生成存储在计算机硬盘中的.dat数据文件。
其中,所述步骤S18中,基于所构造的双数组trie树生成存储在计算机硬盘中的.dat数据文件的方法如下:
步骤S181:计算存储key-value形数据源文件的MD5值,将得到的md5值写入到.dat数据文件中;
步骤S182:继续向.dat数据文件中分别写入key-value形数据总数elements_num、全部value数据字节数与value数据个数之和elements_size以及已构造完成的双数组trie树占用的字节数量trie_size;
步骤S183:从key-offset-value形数据中按顺序获取value数据,然后按照顺序以字节为单位将全部的value数据写入.dat数据文件中;
步骤S184:继续向.dat数据文件中写入已构造完成的双数组trie树,至此,完成.dat数据文件的构建。
本发明能够实现在Linux操作系统下以极低的内存资源占用和远超常用红黑树数据结构、接近哈希表/散列表数据结构的查找性能来实现key-value形数据的存储与查找。并且本发明可以实现.dat数据文件首次构造完成后极快的再次加载速度,并且随着数据量的增加,本发明的再次加载速度基本没有太大变化,优势更加明显。
附图说明
图1:本发明的基于Linux的key-value形数据存储和使用方法的实现流程图。
图2:本发明的基于Linux的key-value形数据存储和使用方法的实现流程图中所构建的.dat数据文件存储结构图。
具体实施方式
为了对本发明的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本发明的技术方案及其产生的有益效果。
本发明通过使用Linux系统下的mmap机制结合双数组trie树以及自定义存储数据结构实现的一种key-value形数据的存储使用方案。本发明主要解决Linux操作系统下应用程序加载大量key-value形数据时出现的耗时长、内存占用高的问题。
本发明主要基于Linux系统,使用构建源数据文件中key和与之对应的value数据之前所有value数据大小之和组成的双数组trie树,然后根据自定义数据结构体将value数据、双数组trie树数据等组成的.dat文件存储在计算机硬盘中的指定目录下。存储完成后使用mmap机制将.dat文件映射到程序的虚拟内存空间,此时文件内容并没有复制到内存中,只有真正发生读取内容操作时才会部分加载到内存中。程序中仅存储.dat文件在虚拟内存中的首地址和已构造完成的双数组trie树。查找过程为通过key在双数组trie树中查找到key对应的value数据之前所有value数据大小之和,通过之前value数据大小之和即可计算出当前查找数据在.dat文件中的偏移量,程序通过首地址加偏移量即可获取到key对应的value值。
图1为本发明的基于Linux的key-value形数据存储和使用方法的实现流程图,请结合图1所示,本发明的一个详细的实现流程如下:
步骤一:在Linux系统计算机上启动程序,程序启动后查找系统指定目录下是否存在已经构造完成的.dat数据文件,如果存在则跳过步骤二至步骤十一;
步骤二:将存储key-value形数据的源文件所在路径传入计算机程序中;
步骤三:计算机程序对传入的key-value形数据源文件内容进行解析处理,将全部key-value数据对提取出来存入计算机内存中;
步骤四:计算机程序将存入内存的key-value数据根据key值的ASCII码大小进行比较排序;
步骤五:计算机程序将排好序的key-value数据进行拆分,从第一组key-value形数据开始,拆分为key-offset-value形数据,其中offset为当前组数之前全部key-value数据对中value数据的字节数之和加上当前组数减一最终计算的结果。用数学公式表示为:
offset=(V1+V2+...+Vn-1)+(n-1),n>1
其中n为整数,指的是当前的key-value数据是第n组,V1、V2、Vn-1表示第1组、第2组、第n-1组key-value中value数据的字节数量,第一组key-value数据的offset为0。
步骤六:依照步骤五中的计算方法依次处理完内存中全部的key-value形数据可以得到按照特定顺序依次排列的key-offset-value形数据;
步骤七:按照顺序将key-offset-value形数据中的key数据取出用来构造有向无环词图DAWG(Directed Acyclic Word Graph);
步骤八:使用构造完成的有向无环词图DAWG和key-offset-value形数据中的offset数据按照顺序构造双数组trie树;
步骤九:双数组trie树构造完成后开始生成存储在计算机硬盘中的.dat数据文件。首先计算存储key-value数据源文件的MD5值,得到32字节的md5数据写入到.dat数据文件中,然后分别写入8个字节长度的key-value类型数据总数elements_num、8个字节长度的全部value数据字节数与value数据个数之和elements_size以及8个字节长度的已构造完成的双数组trie树占用的字节数量trie_size;
步骤十:在步骤九的内容写入完成后,从步骤六得到的key-offset-value形数据中按顺序获取value数据,然后按照顺序以字节为单位将全部的value数据写入.dat数据文件中。需要注意的是每写入一个value数据都需要再单独写入一个字节的“/0”数据;
步骤十一:完成步骤十的文件写入操作后继续写入步骤八生成的双数组trie树的数据(双数组trie树就是使用两个数组存储的trie树结构数据,因此双数组trie树的数据就是两个连续数组,也可以理解为两个长度相同的字节段数据),写入完成后.dat数据文件就构造完毕;如图2所示,为本发明的基于Linux的key-value形数据存储和使用方法的实现流程图中所构建的.dat数据文件存储结构图;
步骤十二:计算机软件计算key-value形数据源文件的md5值;
步骤十三:计算机软件程序使用mmap机制将.dat数据文件映射到内存上并返回映射后的内存地址addr;
步骤十四:使用映射后的内存地址addr获取到.dat数据文件中32字节的md5数据与步骤十二中计算的md5值进行对比,相同的话继续下一步骤,不同的话取消当前文件的mmap挂载然后跳转到步骤二执行;此步骤主要是用于保证key-value形数据源文件与.dat数据文件中的内容一致性验证,源文件存在修改或更新的情况下则重新生成.dat数据文件;
步骤十五:使用步骤十三映射后的内存地址addr根据步骤九的构造顺序分别获取到elements_num、elements_size和trie_size,然后使用addr加上这几项字节数之和的偏移量获取到存储value值(即步骤10中存储的全部的value值和/0数据)的首地址elements_addr,然后加上全部value数据字节数与value数据个数之和elements_size,得到双数组trie树的数据首地址trie_addr,如果想要更加高效稳定的使用性能可以提前在计算机软件程序中提前向系统申请对应数据大小的堆栈内存空间,然后将数据拷贝到内存中由计算机软件程序直接操作;
步骤十六:计算机软件程序查找某个key时首先根据trie_addr通过双数组trie树查找到key对应的数据偏移值offset,然后使用elements_addr首地址加上偏移值offset即可得到key对应的value值存储在.dat文件中的首地址,然后将数据(即通过计算获得的存储地址中存储的value值)以字节的方式依次读取到计算机软件程序中直到获取到的字节内容为“/0”则中止读取,至此就完成了key对应的value值的获取流程;
步骤十七:计算机软件程序运行完毕,取消.dat数据文件的mmap挂载。
综上,本发明通过时间复杂度为O(m)搭配使用Linux系统下的mmap机制的方法,达到了大批量数据下高效的查找效率并且内存占用极低的目的。
其中,m为trie树高度的双数组trie树
在同一测试环境和条件下多次测试取平均值,对于文件大小为8.8MB左右的45万个key-value形键值对数据,使用std::map容器加载时间为765.2ms,接口查找性能为3825.8ms,内存占用47.84M;使用哈希表std::unordered_map容器加载时间为324.6ms,接口查找性能为850ms,内存占用47.68M;使用本发明的方案首次加载时间为626ms,存在已生成的数据文件(首次加载后自动生成)时加载时间为46.8ms,接口查找性能为881.6ms,内存占用极低(1kB以下,根据使用情况最多占用12M内存空间)。对比三种方案的数据可知本发明方案有接近哈希表的接口性能、快速的首次加载速度和极快的再次加载速度、极低的内存资源占用,在程序加载使用大量key-value形数据的场景下有更好的表现。
虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。
Claims (4)
1.基于Linux的key-value形数据存储和使用方法,其特征在于,包括如下步骤:
步骤S1:基于key-value形数据源文件构建双数组trie树,并基于双数组trie树构建.dat数据文件;
步骤S2:获取key-value形数据源文件的md5值;
步骤S3:使用mmap机制将.dat数据文件映射到内存上并返回映射后的内存地址addr;
步骤S4:使用映射后的内存地址addr获取到.dat数据文件中的md5值,并与步骤S2中的md5值进行比对,相同的话执行步骤S5至步骤S7;不同的话,跳转到步骤S1,重新构建.dat数据文件,并重新执行步骤S2至步骤S4;
步骤S5:使用映射后的内存地址addr得到存储的value数据的首地址elements_addr以及双数组trie树的数据首地址trie_addr;
步骤S6:基于value数据的首地址elements_addr以及双数组trie树的数据首地址trie_addr完成由key数据到value数据的查找使用流程,完成key-value形数据的存储和使用;
步骤S7:取消.dat数据文件的mmap挂载;
所述步骤S1中,基于key-value形数据源文件构建双数组trie树,并基于双数组trie树构建.dat数据文件的方法如下:
步骤S11:将存储key-value形数据的源文件所在路径传入计算机程序中;
步骤S12:对传入的key-value形数据源文件内容进行解析处理,将全部key-value形数据提取出来存入计算机内存中;
步骤S13:将存入计算机内存的key-value形数据根据key值的ASCII码大小进行比较排序;
步骤S14:将排好序的key-value形数据进行拆分,从第一组key-value形数据开始,拆分为key-offset-value形数据,其中offset为当前组数之前全部key-value形数据中value数据的字节数之和加上当前组数减一最终计算的结果,用数学公式表示为:
offset=(V1+V2+...+Vn-1)+(n-1),n>1
其中n为整数,指的是当前的key-value形数据是第n组,V1、V2、Vn-1表示第1组、第2组、第n-1组key-value形数据中value数据的字节数量,第一组key-value形数据的offset为0;
步骤S15:依次处理完计算机内存中全部的key-value形数据,得到按照顺序依次排列的key-offset-value形数据;
步骤S16:按照顺序将key-offset-value形数据中的key数据取出用来构造有向无环词图DAWG;
步骤S17:使用构造完成的有向无环词图DAWG和key-offset-value形数据中的offset数据按照顺序构造双数组trie树;
步骤S18:基于所构造的双数组trie树生成存储在计算机硬盘中的.dat数据文件。
2.如权利要求1所述的基于Linux的key-value形数据存储和使用方法,其特征在于,
所述步骤S5中,value数据的首地址elements_addr的获取方法如下:
步骤S51:根据.dat数据文件的构造顺序从.dat数据文件中获取到key-value形数据总数elements_num、全部value数据字节数与value数据个数之和elements_size以及双数组trie树占用的字节数量trie_size;
步骤S52:使用内存地址addr加上步骤S51中得到的三项字节数之和的偏移量,得到存储的value数据的首地址elements_addr;
双数组trie树的数据首地址trie_addr的获取方法如下:将value数据的首地址elements_addr加上全部value数据字节数与value数据个数之和elements_size得到双数组trie树的数据首地址trie_addr。
3.如权利要求1所述的基于Linux的key-value形数据存储和使用方法,其特征在于,所述步骤S6中,基于value数据的首地址elements_addr以及双数组trie树的数据首地址trie_addr完成由key数据到value数据的查找使用流程的方法如下:
步骤S61:针对key数据,根据双数组trie树的数据首地址trie_addr,通过双数组trie树查找到该key数据对应的数据偏移值offset;
步骤S62:使用value数据的首地址elements_addr加上步骤S61中所获取的数据偏移值offset,得到key数据对应的value数据存储在.dat文件中的首地址;
步骤S63:将数据以字节的方式依次读取到计算机软件程序中直到获取到字节内容为“/0”时中止读取,至此完成key数据到value数据的查找使用流程。
4.如权利要求1所述的基于Linux的key-value形数据存储和使用方法,其特征在于,所述步骤S18中,基于所构造的双数组trie树生成存储在计算机硬盘中的.dat数据文件的方法如下:
步骤S181:计算存储key-value形数据源文件的MD5值,将得到的md5值写入到.dat数据文件中;
步骤S182:继续向.dat数据文件中分别写入key-value形数据总数elements_num、全部value数据字节数与value数据个数之和elements_size以及已构造完成的双数组trie树占用的字节数量trie_size;
步骤S183:从key-offset-value形数据中按顺序获取value数据,然后按照顺序以字节为单位将全部的value数据写入.dat数据文件中;
步骤S184:继续向.dat数据文件中写入已构造完成的双数组trie树,至此,完成.dat数据文件的构建。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310121877.5A CN115827573B (zh) | 2023-02-16 | 2023-02-16 | 基于Linux的key-value形数据存储和使用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310121877.5A CN115827573B (zh) | 2023-02-16 | 2023-02-16 | 基于Linux的key-value形数据存储和使用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115827573A CN115827573A (zh) | 2023-03-21 |
CN115827573B true CN115827573B (zh) | 2023-06-02 |
Family
ID=85521560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310121877.5A Active CN115827573B (zh) | 2023-02-16 | 2023-02-16 | 基于Linux的key-value形数据存储和使用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115827573B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559027A (zh) * | 2013-10-22 | 2014-02-05 | 北京航空航天大学 | 一种key与value分开存储的key-value存储系统设计方法 |
CN106874348A (zh) * | 2016-12-26 | 2017-06-20 | 贵州白山云科技有限公司 | 文件存储和索引方法、装置及读取文件的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09274578A (ja) * | 1996-04-05 | 1997-10-21 | Fuji Xerox Co Ltd | ファイル管理方法 |
CN101741708B (zh) * | 2008-11-13 | 2012-11-21 | 华为技术有限公司 | 一种存储数据的方法和装置 |
CN106446099A (zh) * | 2016-09-13 | 2017-02-22 | 国家超级计算深圳中心(深圳云计算中心) | 一种分布式云存储方法、系统及其上传下载方法 |
CN108111558A (zh) * | 2016-11-25 | 2018-06-01 | 中兴通讯股份有限公司 | 一种高速报文处理方法、装置及系统 |
CN108563711B (zh) * | 2018-03-28 | 2021-02-09 | 山东昭元信息科技有限公司 | 一种基于时间节点的时序数据存储方法 |
CN111104347B (zh) * | 2019-12-23 | 2022-03-25 | 北京东土军悦科技有限公司 | 堆内存块查找方法、装置、设备及存储介质 |
CN115344603A (zh) * | 2022-08-23 | 2022-11-15 | 中国民航信息网络股份有限公司 | 运价数据存储方法、装置、电子设备和计算机存储介质 |
-
2023
- 2023-02-16 CN CN202310121877.5A patent/CN115827573B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559027A (zh) * | 2013-10-22 | 2014-02-05 | 北京航空航天大学 | 一种key与value分开存储的key-value存储系统设计方法 |
CN106874348A (zh) * | 2016-12-26 | 2017-06-20 | 贵州白山云科技有限公司 | 文件存储和索引方法、装置及读取文件的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115827573A (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083601B (zh) | 面向键值存储系统的索引树构建方法及系统 | |
US4575798A (en) | External sorting using key value distribution and range formation | |
CN106570018B (zh) | 序列化与反序列化的方法、装置、系统以及电子设备 | |
US11349639B2 (en) | Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms | |
US4785400A (en) | Method for processing a data base | |
US6438556B1 (en) | Method and system for compressing data which allows access to data without full uncompression | |
US6353910B1 (en) | Method and apparatus for implementing error correction coding (ECC) in a dynamic random access memory utilizing vertical ECC storage | |
US10649997B2 (en) | Method, system and computer program product for performing numeric searches related to biometric information, for finding a matching biometric identifier in a biometric database | |
US11977600B2 (en) | Machine learning architecture support for block sparsity | |
JP7426907B2 (ja) | 高度なデータベース圧縮解除 | |
US20030208475A1 (en) | Search engine for large-width data | |
CN113157689A (zh) | 数据索引方法、装置及电子设备 | |
US11409798B2 (en) | Graph processing system including different kinds of memory devices, and operation method thereof | |
CN111400306A (zh) | 基于rdma与非易失性内存的基数树访问系统 | |
CN110795042A (zh) | 一种全闪存储系统元数据写缓存刷盘方法及相关组件 | |
CN112579595A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN115827573B (zh) | 基于Linux的key-value形数据存储和使用方法 | |
CN111126619B (zh) | 一种机器学习方法与装置 | |
CN115964002B (zh) | 一种电能表终端档案管理方法、装置、设备及介质 | |
US20030212985A1 (en) | System and method for using data address sequences of a program in a software development tool | |
CN109871355B (zh) | 一种快照元数据存储方法、装置及设备、介质 | |
CN112035380A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN108874468A (zh) | 应用程序的加载方法、装置、计算机设备及存储介质 | |
CN113505130B (zh) | 一种哈希表的处理方法 | |
CN117271456B (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 |