CN111984651A - 一种基于持久性内存的列式存储方法、装置及设备 - Google Patents
一种基于持久性内存的列式存储方法、装置及设备 Download PDFInfo
- Publication number
- CN111984651A CN111984651A CN202010850276.4A CN202010850276A CN111984651A CN 111984651 A CN111984651 A CN 111984651A CN 202010850276 A CN202010850276 A CN 202010850276A CN 111984651 A CN111984651 A CN 111984651A
- Authority
- CN
- China
- Prior art keywords
- column
- persistent memory
- data
- structure data
- hash structure
- 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.)
- Withdrawn
Links
- 230000002085 persistent effect Effects 0.000 title claims abstract description 115
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000000547 structure data Methods 0.000 claims abstract description 84
- 238000012545 processing Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000011161 development Methods 0.000 claims description 9
- 238000000638 solvent extraction Methods 0.000 claims 1
- 238000012217 deletion Methods 0.000 abstract description 7
- 230000037430 deletion Effects 0.000 abstract description 7
- 238000012986 modification Methods 0.000 abstract description 5
- 230000004048 modification Effects 0.000 abstract description 5
- 230000000694 effects Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 5
- 238000007906 compression Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 108091008729 NR1G1 Proteins 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
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/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
- G06F16/2237—Vectors, bitmaps or matrices
-
- 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
- G06F16/137—Hash-based
-
- 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/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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
- G06F16/2255—Hash tables
-
- 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/2282—Tablespace storage structures; Management 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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于持久性内存的列式存储方法,该方法将文件转换为哈希结构数据并存储在持久性内存上,由于持久性内存具备字节寻址及非易失性,因此能够在数据读写过程中避免经过文件系统栈,大幅地提升数据查询速度;相比传统列式存储,该存储方式更易于实现修改、删除等实时数据操作,扩大了列式存储的应用场景;此外,该方法了采用一种逻辑简单的且占用空间极小的位图索引数据描述列块上的数据分布情况,避免了记录粉碎和组装算法的复杂性,在保留列式存储优势的同时简化存储逻辑,进一步提升列式存储的数据读写性能。此外,本申请还公开了一种基于持久性内存的列式存储装置、设备及可读存储介质,其技术效果与上述方法的技术效果相对应。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种基于持久性内存的列式存储方法、装置、设备及可读存储介质。
背景技术
当今的数据处理大致可以分为两类,即联机事务处理(OLTP)和联机分析处理(OLAP)。传统关系型数据库的主要面向OLTP,用来执行一些基本的、即时的事务处理,如数据库记录的增、删、改、查等;而分布式数据处理系统主要面向OLAP,它对实时性要求较低,但处理的数据量大,通常用于复杂的数据分析与批量报表上。
传统的关系型数据库如Oracle、MySQL等采用行式存储法(Row-based),在基于行式存储的数据库中,数据是按照行数据为基础逻辑存储单元进行存储的,一行中的数据在存储介质中以连续存储形式存在。
列式存储(Column-based)是相对于行式存储来说的,HBase、ORC、Parquet等均采用列式存储。在基于列式存储的数据库或文件存储中,数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。
目前,列式存储都是基于普通的磁盘文件系统设计的,读写数据都需要经过文件系统I/O栈,因此数据访问速度慢,无法满足越来越高的时效性需求。而且列式存储不适合需要频繁更新数据的场景,不适合做删除、更新等实时操作。
发明内容
本申请的目的是提供一种基于持久性内存的列式存储方法、装置、设备及可读存储介质,用以解决当前的列式存储方案数据访问速度慢,且不适于频繁进行删除、更新等实时操作的问题。其具体方案如下:
第一方面,本申请提供了一种基于持久性内存的列式存储方法,包括:
对待存储的格式化文件进行划分,每预设数量的行划分为一个行组;对所述行组进行划分,每一列作为一个列块;
将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中;
根据文件划分情况生成所述格式化文件的元数据,其中所述元数据包括所述格式化文件中各个行组的标识信息、各个行组在所述格式化文件中的位置信息,还包括所述行组中各个列块的标识信息、各个列块在所述行组中的位置信息;
根据列块的实际数据中各个元素是否为空,生成所述列块的位图索引数据。
优选的,所述将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中,包括:
以所述列块的列名和行组序号为键,以所述列块的实际数据为值,将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中。
优选的,所述将所述哈希结构数据写入持久性内存中,包括:
对所述哈希结构数据中的值进行编码压缩,将编码压缩后的哈希结构数据写入持久性内存中。
优选的,所述将所述哈希结构数据写入持久性内存中,包括:
利用持久性内存开发套件中的操作函数,将所述哈希结构数据写入持久性内存中。
优选的,所述将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中,包括:
将所述列块转换为并发哈希结构数据,将所述并发哈希结构数据写入持久性内存中。
优选的,所述根据文件划分情况生成所述格式化文件的元数据,包括:
根据文件划分情况生成所述格式化文件的元数据,其中所述元数据还包括所述列块的空值标志位,所述空值标志位用于表示列块的值全部为空。
优选的,在所述根据文件划分情况生成所述格式化文件的元数据之后,还包括:
将所述元数据存储至类二维数组中。
第二方面,本申请提供了一种基于持久性内存的列式存储装置,包括:
行组键值化模块,包括:
文件划分单元:用于对待存储的格式化文件进行划分,每预设数量的行划分为一个行组;对所述行组进行划分,每一列作为一个列块;
哈希单元:用于将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中;
元数据模块:用于根据文件划分情况生成所述格式化文件的元数据,其中所述元数据包括所述格式化文件中各个行组的标识信息、各个行组在所述格式化文件中的位置信息,还包括所述行组中各个列块的标识信息、各个列块在所述行组中的位置信息;
位图索引模块:用于根据列块的实际数据中各个元素是否为空,生成所述列块的位图索引数据。
优选的,所述哈希单元具体用于:
以所述列块的列名和行组序号为键,以所述列块的实际数据为值,将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中。
优选的,所述哈希单元具体用于:
对所述哈希结构数据中的值进行编码压缩,将编码压缩后的哈希结构数据写入持久性内存中。
优选的,所述哈希单元具体用于:
利用持久性内存开发套件中的操作函数,将所述哈希结构数据写入持久性内存中。
优选的,所述哈希单元具体用于:
将所述列块转换为并发哈希结构数据,将所述并发哈希结构数据写入持久性内存中。
优选的,所述元数据模块具体用于:
根据文件划分情况生成所述格式化文件的元数据,其中所述元数据还包括所述列块的空值标志位,所述空值标志位用于表示列块的值全部为空。
优选的,还包括:
元数据存储模块:用于将所述元数据存储至类二维数组中。
第三方面,本申请提供了一种基于持久性内存的列式存储设备,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如上所述的基于持久性内存的列式存储方法的步骤。
第四方面,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的基于持久性内存的列式存储方法的步骤。
本申请所提供的一种基于持久性内存的列式存储方法,包括:对待存储的格式化文件进行划分,每预设数量的行划分为一个行组;对行组进行划分,每一列作为一个列块;将列块转换为哈希结构数据,将哈希结构数据写入持久性内存中;根据文件划分情况生成格式化文件的元数据,其中元数据包括格式化文件中各个行组的标识信息、各个行组在格式化文件中的位置信息,还包括行组中各个列块的标识信息、各个列块在行组中的位置信息;根据列块的实际数据中各个元素是否为空,生成列块的位图索引数据。
可见,该方法将文件转换为哈希结构数据并存储在持久性内存上,由于持久性内存具备字节寻址及非易失性,因此能够在数据读写过程中避免经过文件系统栈,大幅地提升数据查询速度;相比传统列式存储,该存储方式更易于实现修改、删除等实时数据操作,扩大了列式存储的应用场景;此外,该方法了采用一种逻辑简单的且占用空间极小的位图索引数据描述列块上的数据分布情况,避免了记录粉碎和组装算法的复杂性,在保留列式存储优势的同时简化存储逻辑,进一步提升列式存储的数据读写性能。
此外,本申请还提供了一种基于持久性内存的列式存储装置、设备及可读存储介质,其技术效果与上述方法的技术效果相对应,这里不再赘述。
附图说明
为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请所提供的一种基于持久性内存的列式存储方法实施例一的实现流程图;
图2为本申请所提供的一种基于持久性内存的列式存储方法实施例二的实现流程图;
图3为本申请所提供的一种基于持久性内存的列式存储方法实施例在实际应用中的过程示意图;
图4为本申请所提供的一种基于持久性内存的列式存储方法实施例二中行组键值化过程的示意图;
图5为本申请所提供的一种基于持久性内存的列式存储方法实施例二中位图索引数据生成过程的示意图;
图6为本申请所提供的一种基于持久性内存的列式存储装置实施例的功能框图;
图7为本申请所提供的一种基于持久性内存的列式存储设备实施例的结构示意图。
具体实施方式
本申请的核心是提供一种基于持久性内存的列式存储方法、装置、设备及可读存储介质,能够将文件划分为行组,将行组转换为哈希结构数据,并写入持久性内存中,能够在数据读写过程中避免经过文件系统栈,大幅地提升数据查询速度,且更易于实现修改、删除等实时数据操作;且采用位图索引数据描述列块上的数据分布情况,逻辑简单占用空间极小,简化了存储逻辑,进一步提升列式存储的数据读写性能。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面对本申请提供的一种基于持久性内存的列式存储方法实施例一进行介绍,参见图1,实施例一包括:
S101、对待存储的格式化文件进行划分,每预设数量的行划分为一个行组;对所述行组进行划分,每一列作为一个列块;
上述格式化文件是指每一行表示一条数据,每条数据包括多个属性,每一列的数据的属性相同的文件。
上述预设数量可以根据实际需求自行设定,本实施例不做限定。
S102、将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中;
哈希结构(HashMap)是Java中使用频率最高的用于映射(键值对)处理的数据类型,具有很快的访问速度。
S103、根据文件划分情况生成所述格式化文件的元数据,其中所述元数据包括所述格式化文件中各个行组的标识信息、各个行组在所述格式化文件中的位置信息,还包括所述行组中各个列块的标识信息、各个列块在所述行组中的位置信息;
S104、根据列块的实际数据中各个元素是否为空,生成所述列块的位图索引数据。
持久性内存(Persistent Memory,PM)是非易失性内存的一种,具有类似于内存的特性和类似于存储的特性,可像内存一样按字节寻址,且其存储的内容是非易失性的。位于持久性内存上的数据可以从用户空间直接访问,访问数据路径上没有内核代码、文件系统页缓存或中断。
本实施例基于持久性内存设备的物理特性,提供了一种键值结构的列式存储方案,能够大幅提高数据查询速度,满足即时查询的需求,同时可以更好地支持数据的修改与删除,拓展了列式存储的适用场景。
本实施例主要包括行组键值化阶段、元数据生成阶段和位图索引生成阶段。在行组键值化阶段,本实施例将文件划分为行组,并将行组中的列块转换为持久性内存介质的键值哈希结构,以充分利用持久性内存的高效读写优势;在元数据生成阶段,生成用于记录文件划分为哪些行组、每个行组包括哪些列块、行组在文件中的位置信息、列块在行组中的位置信息的元数据;在位图索引生成阶段,生成用于记录列块的实际数据的各个元素是否为空的位图索引数据。下面分别对这三个阶段进行介绍:
在行组键值化阶段,本实施例对格式化文件进行划分,每预设数量的行作为一个行组;每个行组含有多个列的数据,对行组做进一步划分,每一列作为一个列块。然后,为提升数据读写性能,将列块转换为哈希结构数据,并将哈希结构数据写入持久性内存中。
作为一种具体的实现方式,可以以列块的列名和行组序号为键,以列块的实际数据为值,从而将列块转换为哈希结构数据,将哈希结构数据写入持久性内存中。可以理解的是,在将哈希结构数据写入持久性内存之前,需要对哈希结构数据中的值进行编码,为了进一步减少空间占用,可以在编码之后,对哈希结构数据中的值进行压缩,具体采用何种编码方法或何种压缩方式,本实施例不做限定。
为了进一步提升数据读写性能,可以选用持久性内存中特有的并发哈希结构(Concurrent Hashmap)。在将列块转换为哈希结构数据的时候,具体将列块转换为并发哈希结构数据,并将并发哈希结构数据写入持久性内存中。
在将哈希结构数据写入持久性内存的时候,为了提升写入效率,可以采用更接近底层的函数实现该写入操作。具体的,可以利用持久性内存开发套件(PMDK)中的操作函数,例如libpmemkv(PMDK的一个子函数库),将所述哈希结构数据写入持久性内存中。通过这种写入方式,写操作不需要预先在内存中分配缓存,读取时应用也可以直接访问PM中的数据,速度远高于传统磁盘存储。
在元数据生成阶段,主要用于生成格式化文件的元数据,其中元数据包括但不限于格式化文件包括哪些行组,各个行组在格式化文件中的位置或顺序,行组包括哪些列块,各个列块在行组中的位置或顺序;此外,还可以包括列块的值的编码方法、列块的值压缩方法以及一些数据统计信息,例如列块的值中的最大值和最小值等。
作为一种优选的实施方式,元数据中还可以包括用于表示列块的值是否全部为空的空值标志位。从而在数据读写过程中,直接根据该空值标志位确定待读写的列是否为空,提升数据读写性能。
由于本实施例中列块的元数据既需要存储元素名称,也需要记录元素的位置,因此,在实际应用中,可以利用类二维数据存储列块的元数据。
在位图索引生成阶段,本实施例针对每一个列块生成对应的位图索引数据,位图索引数据主要表示对应列块中实际数据的有无。优选的,如果某一列块没有实际数据,那在列存储时,就可以不存储该列的值,这将比行式存储更节省空间。位图是通过一个比特数组来存储特定数据的一种数据结构,每一个比特位都能独立包含信息。本实施例中,位图索引数据中的每个比特用于表示列块中相应的元素是否为空,由于比特是数据的最小存储单元,因此能大量节省空间。
在数据查询时如果指定目标列,可以通过行组键值化阶段的键快速获取到目标列的值,基于持久性内存的直接访问特性可以绕过文件系统栈,使这个过程非常快速;如果需要查询目标行的数据,则通过位图索引数据,根据该索引将列式数据组织成行式数据,直接将索引相等的值还原为一行数据返回,而不用实现记录粉碎和组装算法(striping andassembly algorithms,前述Parquet采用的算法)。
本实施例所提供一种基于持久性内存的列式存储方法,将文件转换为哈希结构数据并存储在持久性内存上,由于持久性内存具备字节寻址及非易失性,因此能够在数据读写过程中避免经过文件系统栈,大幅地提升数据查询速度;相比传统列式存储,该存储方式更易于实现修改、删除等实时数据操作,扩大了列式存储的应用场景;此外,该方法了采用一种逻辑简单的且占用空间极小的位图索引数据描述列块上的数据分布情况,避免了记录粉碎和组装算法的复杂性,在保留列式存储优势的同时简化存储逻辑,进一步提升列式存储的数据读写性能。
下面开始详细介绍本申请提供的一种基于持久性内存的列式存储方法实施例二,实施例二基于前述实施例一实现,并在实施例一的基础上进行了一定程度上的拓展。
具体的,本实施例对键值化的列块的键和值进行了限定,采用了并发哈希结构进一步提升数据读写性能,对列块的值进行了编码压缩以节省存储空间。利用底层的操作函数执行写入操作,提升写入效率。利用类二维数组存储元数据,效率较高。
参见图2,实施例二具体包括:
S201、对待存储的格式化文件进行划分,每预设数量的行划分为一个行组;对所述行组进行划分,每一列作为一个列块;
S202、以所述列块的列名和行组序号为键,以所述列块的实际数据为值,将所述列块转换为并发哈希结构数据;
S203、对所述并发哈希结构数据中的值进行编码压缩;
S204、利用持久性内存开发套件中的操作函数,将所述哈希结构数据写入持久性内存中;
S205、根据文件划分情况生成所述格式化文件的元数据,将所述元数据存储至类二维数组中;
其中所述元数据包括所述格式化文件中各个行组的名称、各个行组在所述格式化文件中的位置信息、所述行组中各个列块的名称、各个列块在所述行组中的位置信息;还包括所述列块的空值标志位,所述空值标志位用于表示列块的值全部为空;还包括所述列块的值的压缩方法、编码方法;还包括所述列块的值中的最大值和最小值等。
S206、根据列块的实际数据中各个元素是否为空,生成所述列块的位图索引数据。
本实施例所提供一种基于持久性内存的列式存储方法,基于持久性内存的字节寻址特性,提供了一种键值结构的列式存储方案,主要包括行组键值化阶段、元数据生成阶段和位图索引生成阶段。行组键值化阶段将行组的各个列块转换为持久性内存介质的键值哈希结构,以充分利用持久性内存的高效读写优势;元数据生成阶段记录格式化文件拆分为何种键值,每种键值的属性、位置等信息;位图索引生成阶段生成用于记录列块中的连续数值是否为空的位图索引结构,在访问一行数据时根据该索引将列式数据组织成行式数据。
下面以实际应用为例,对本申请的基于持久性内存的列式存储过程进行说明,整体的实现过程如图3所示。
假设,目前有一个待存储的格式化文件如表1所示,表1中一行表示一条数据:
表1
在行组键值化阶段,将格式化文件按特定长度水平划分成行组。如特定长度为1024,则每1024行数据为一个行组,每个行组含有若干列,则每一列最多含有1024个元素。如图4所示,包括以下子步骤:
子步骤1:在如表1所示的数据中,第1个行组为ID1到ID1024的数据,第2个行组为ID 1025到ID 2048的数据,依次类推。如果一共N行数据,则共有N/1024个行组(向上取整数)。
子步骤2:在如表1所示的数据中,第1个行组划分为8个列块,将列名作为键,为区别不同行组的键,则键值化存储的键可设计为列名加行组序号,值设计为列块中的实际数据。比如,第1个行组的第1个列块的键为“ID_1”,其值为[1,2,3,4,5,6,7,8];第1个行组的第2个列块的键为“姓名_1”,其值为[小明,小李,小红,小华,小张,小黑,小黄,小宋];第1个行组的第3个列块的键为“性别_1”,其值为[男,女,女,女,男];第1个行组的第4个列块的键为“出生_1”,其值为空,依次类推,将行组中的所有值转换完毕。可以看出,每个列块的值都是相同类型的元素,因此可以进行高效的数据压缩。
子步骤3:使用持久性内存开发套件中的操作函数进行数据读写,将上述键值化数据通过libpmemkv(持久性内存开发套件的一个子函数库)中的存储方法写入到持久性内存中。
在元数据生成阶段,过程如图5所示,记录的元数据信息主要有格式化文件包括哪些行组,每个行组包括哪些列块,列块的键是什么,每个列块的值采用了什么方法压缩编码,以及列块值的统计信息,如最大最小值等。元数据信息可以使用类二维数组进行矩阵化存储,表1所示的格式化文件的元数据可这样表示:
[格式化文件(表1)]
[行组1 行组2 行组3 行组 ... 行组n]
其中,“格式化文件”记录如表1所示的数据按照1024的长度进行切分,文件属性等;“行组1”表示第1个行组的1024行数据,包含了“ID_1”,“姓名_1”等8个列名块;“ID_1”,“ID_2”到“ID_n”表示ID这一列的全部数据,可以按照列进行过滤,不需要扫描无关的列;如示例数据1的行组1的“出生”的列块值全部为空,则“出生_1”应添加空值标记,在扫描读取“出生”这一列的数据时,跳过行组1,依次类推,达到减少查询时间的目的。
在位图索引生成阶段,为每一个列块的值创建一个位图索引文件。一般地,该位图索引所占的比特数等于行组的划分长度,如1024位。为了便于说明问题,此处使用表1中的8行数据进行阐述,即假设一个位图索引仅8位。
比如“姓名_1”列块值,它的8个元素都存在,则位图索引为:11111111;再比如“性别_1”列块值,它有几个空元素,其位图索引为:10100111;又比如“职业_1”列块值,它前4个元素都存在,则位图索引为:11110000;如果一个列块值全空,如“出生_1”,无论行组长度为多少,其位图索引都是8位0:00000000。
位图索引占用的空间极小,1M的位图索引文件可以表示超过800万行数据,如果遇到列块值为空,则占用的空间会更少。
在实际应用中,该索引文件可以存放的位置包括但不限于:
位置一,直接与键绑定,即键为列名、行组序号、位图索引的有效组合;
位置二,存放在元数据中,与每个列块的元数据一起存放。
下面对本申请实施例提供的一种基于持久性内存的列式存储装置进行介绍,下文描述的一种基于持久性内存的列式存储装置与上文描述的一种基于持久性内存的列式存储方法可相互对应参照。
如图6所示,本实施例的基于持久性内存的列式存储装置,包括:
行组键值化模块601,包括:
文件划分单元:用于对待存储的格式化文件进行划分,每预设数量的行划分为一个行组;对所述行组进行划分,每一列作为一个列块;
哈希单元:用于将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中;
元数据模块602:用于根据文件划分情况生成所述格式化文件的元数据,其中所述元数据包括所述格式化文件中各个行组的标识信息、各个行组在所述格式化文件中的位置信息,还包括所述行组中各个列块的标识信息、各个列块在所述行组中的位置信息;
位图索引模块603:用于根据列块的实际数据中各个元素是否为空,生成所述列块的位图索引数据。
在一些具体的实施例中,所述哈希单元具体用于:
以所述列块的列名和行组序号为键,以所述列块的实际数据为值,将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中。
在一些具体的实施例中,所述哈希单元具体用于:
对所述哈希结构数据中的值进行编码压缩,将编码压缩后的哈希结构数据写入持久性内存中。
在一些具体的实施例中,所述哈希单元具体用于:
利用持久性内存开发套件中的操作函数,将所述哈希结构数据写入持久性内存中。
在一些具体的实施例中,所述哈希单元具体用于:
将所述列块转换为并发哈希结构数据,将所述并发哈希结构数据写入持久性内存中。
在一些具体的实施例中,所述元数据模块具体用于:
根据文件划分情况生成所述格式化文件的元数据,其中所述元数据还包括所述列块的空值标志位,所述空值标志位用于表示列块的值全部为空。
在一些具体的实施例中,还包括:
元数据存储模块:用于将所述元数据存储至类二维数组中。
本实施例的基于持久性内存的列式存储装置用于实现前述的基于持久性内存的列式存储方法,因此该装置中的具体实施方式可见前文中的基于持久性内存的列式存储方法的实施例部分。所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。
本实施例基于持久性内存的字节寻址特性,提供了基于持久性内存的高效列式存储装置,主要包括行组键值化模块、元数据模块和位图索引模块。行组键值化模块将行组的列块转换为持久性内存介质的键值哈希结构管理,以充分利用持久性内存的高效读写优势;元数据模块记录文件拆分为何种键值,每种键值的属性、位置等信息;位图索引模块生成用于记录列块中的连续数值是否为空的位图索引结构,在访问一行数据时根据该索引将列式数据组织成行式数据。
此外,本申请还提供了一种基于持久性内存的列式存储设备,如图7所示,包括:
存储器100:用于存储计算机程序;
处理器200:用于执行所述计算机程序,以实现如上文所述的基于持久性内存的列式存储方法的步骤。
其中,存储器至少包括一种类型的可读存储介质,例如闪存、硬盘、多媒体卡、卡型存储器、磁性存储器、磁盘、光盘等。存储器不仅可以用于存储应用软件及各类数据,还可以用于暂时地存储已经输出或者将要输出的数据。存储器在一些实施例中可以是内部存储单元,也可以是外部存储设备。
处理器在一些实施例中可以是一中央处理器、控制器、微控制器、微处理器等,用于运行存储器中存储的程序代码。
存储器和处理器之间设置有总线,该总线可以是外设部件互连标准(peripheralcomponent interconnect,简称PCI)总线、扩展工业标准结构(extended industrystandard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
最后,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的基于持久性内存的列式存储方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (16)
1.一种基于持久性内存的列式存储方法,其特征在于,包括:
对待存储的格式化文件进行划分,每预设数量的行划分为一个行组;对所述行组进行划分,每一列作为一个列块;
将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中;
根据文件划分情况生成所述格式化文件的元数据,其中所述元数据包括所述格式化文件中各个行组的标识信息、各个行组在所述格式化文件中的位置信息,还包括所述行组中各个列块的标识信息、各个列块在所述行组中的位置信息;
根据列块的实际数据中各个元素是否为空,生成所述列块的位图索引数据。
2.如权利要求1所述的基于持久性内存的列式存储方法,其特征在于,所述将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中,包括:
以所述列块的列名和行组序号为键,以所述列块的实际数据为值,将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中。
3.如权利要求2所述的基于持久性内存的列式存储方法,其特征在于,所述将所述哈希结构数据写入持久性内存中,包括:
对所述哈希结构数据中的值进行编码压缩,将编码压缩后的哈希结构数据写入持久性内存中。
4.如权利要求2所述的基于持久性内存的列式存储方法,其特征在于,所述将所述哈希结构数据写入持久性内存中,包括:
利用持久性内存开发套件中的操作函数,将所述哈希结构数据写入持久性内存中。
5.如权利要求2所述的基于持久性内存的列式存储方法,其特征在于,所述将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中,包括:
将所述列块转换为并发哈希结构数据,将所述并发哈希结构数据写入持久性内存中。
6.如权利要求1-5任意一项所述的基于持久性内存的列式存储方法,其特征在于,所述根据文件划分情况生成所述格式化文件的元数据,包括:
根据文件划分情况生成所述格式化文件的元数据,其中所述元数据还包括所述列块的空值标志位,所述空值标志位用于表示列块的值全部为空。
7.如权利要求6所述的基于持久性内存的列式存储方法,其特征在于,在所述根据文件划分情况生成所述格式化文件的元数据之后,还包括:
将所述元数据存储至类二维数组中。
8.一种基于持久性内存的列式存储装置,其特征在于,包括:
行组键值化模块,包括:
文件划分单元:用于对待存储的格式化文件进行划分,每预设数量的行划分为一个行组;对所述行组进行划分,每一列作为一个列块;
哈希单元:用于将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中;
元数据模块:用于根据文件划分情况生成所述格式化文件的元数据,其中所述元数据包括所述格式化文件中各个行组的标识信息、各个行组在所述格式化文件中的位置信息,还包括所述行组中各个列块的标识信息、各个列块在所述行组中的位置信息;
位图索引模块:用于根据列块的实际数据中各个元素是否为空,生成所述列块的位图索引数据。
9.如权利要求8所述的基于持久性内存的列式存储装置,其特征在于,所述哈希单元具体用于:
以所述列块的列名和行组序号为键,以所述列块的实际数据为值,将所述列块转换为哈希结构数据,将所述哈希结构数据写入持久性内存中。
10.如权利要求9所述的基于持久性内存的列式存储装置,其特征在于,所述哈希单元具体用于:
对所述哈希结构数据中的值进行编码压缩,将编码压缩后的哈希结构数据写入持久性内存中。
11.如权利要求9所述的基于持久性内存的列式存储装置,其特征在于,所述哈希单元具体用于:
利用持久性内存开发套件中的操作函数,将所述哈希结构数据写入持久性内存中。
12.如权利要求9所述的基于持久性内存的列式存储装置,其特征在于,所述哈希单元具体用于:
将所述列块转换为并发哈希结构数据,将所述并发哈希结构数据写入持久性内存中。
13.如权利要求8-12任意一项所述的基于持久性内存的列式存储装置,其特征在于,所述元数据模块具体用于:
根据文件划分情况生成所述格式化文件的元数据,其中所述元数据还包括所述列块的空值标志位,所述空值标志位用于表示列块的值全部为空。
14.如权利要求13所述的基于持久性内存的列式存储装置,其特征在于,还包括:
元数据存储模块:用于将所述元数据存储至类二维数组中。
15.一种基于持久性内存的列式存储设备,其特征在于,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如权利要求1-7任意一项所述的基于持久性内存的列式存储方法的步骤。
16.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如权利要求1-7任意一项所述的基于持久性内存的列式存储方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010850276.4A CN111984651A (zh) | 2020-08-21 | 2020-08-21 | 一种基于持久性内存的列式存储方法、装置及设备 |
PCT/CN2021/073472 WO2022037015A1 (zh) | 2020-08-21 | 2021-01-25 | 一种基于持久性内存的列式存储方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010850276.4A CN111984651A (zh) | 2020-08-21 | 2020-08-21 | 一种基于持久性内存的列式存储方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111984651A true CN111984651A (zh) | 2020-11-24 |
Family
ID=73443652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010850276.4A Withdrawn CN111984651A (zh) | 2020-08-21 | 2020-08-21 | 一种基于持久性内存的列式存储方法、装置及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111984651A (zh) |
WO (1) | WO2022037015A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113722623A (zh) * | 2021-09-03 | 2021-11-30 | 锐掣(杭州)科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
WO2022037015A1 (zh) * | 2020-08-21 | 2022-02-24 | 苏州浪潮智能科技有限公司 | 一种基于持久性内存的列式存储方法、装置及设备 |
CN114443703A (zh) * | 2021-12-15 | 2022-05-06 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113722623B (zh) * | 2021-09-03 | 2024-07-05 | 锐掣(杭州)科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160357740A1 (en) * | 2014-02-24 | 2016-12-08 | Huawei Technologies Co., Ltd. | Metadata Updating Method and Apparatus Based on Columnar Storage in Distributed File System, and Host |
CN107545021A (zh) * | 2017-05-10 | 2018-01-05 | 新华三信息安全技术有限公司 | 一种数据存储方法及装置 |
CN110166221A (zh) * | 2019-03-05 | 2019-08-23 | 西安电子科技大学 | 一种密文数据压缩存储结构rcpe及数据动态读写方法 |
CN110968585A (zh) * | 2019-12-20 | 2020-04-07 | 深圳前海微众银行股份有限公司 | 面向列的存储方法、装置、设备及计算机可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110153650A1 (en) * | 2009-12-18 | 2011-06-23 | Electronics And Telecommunications Research Institute | Column-based data managing method and apparatus, and column-based data searching method |
CN102214360B (zh) * | 2010-04-06 | 2013-07-17 | 腾讯科技(深圳)有限公司 | 一种位图构建方法及装置、求交的方法及装置 |
CN102402617A (zh) * | 2011-12-23 | 2012-04-04 | 天津神舟通用数据技术有限公司 | 一种利用分片及稀疏位图的易压缩数据库索引存储系统及其相应的构建、调度和查询处理方法 |
CN107967124B (zh) * | 2017-12-14 | 2021-02-05 | 南京云创大数据科技股份有限公司 | 一种分布式持久性内存存储系统及方法 |
CN111190895B (zh) * | 2018-11-15 | 2023-04-28 | 百度在线网络技术(北京)有限公司 | 列式存储数据的组织方法、装置及存储介质 |
CN111984651A (zh) * | 2020-08-21 | 2020-11-24 | 苏州浪潮智能科技有限公司 | 一种基于持久性内存的列式存储方法、装置及设备 |
-
2020
- 2020-08-21 CN CN202010850276.4A patent/CN111984651A/zh not_active Withdrawn
-
2021
- 2021-01-25 WO PCT/CN2021/073472 patent/WO2022037015A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160357740A1 (en) * | 2014-02-24 | 2016-12-08 | Huawei Technologies Co., Ltd. | Metadata Updating Method and Apparatus Based on Columnar Storage in Distributed File System, and Host |
CN107545021A (zh) * | 2017-05-10 | 2018-01-05 | 新华三信息安全技术有限公司 | 一种数据存储方法及装置 |
CN110166221A (zh) * | 2019-03-05 | 2019-08-23 | 西安电子科技大学 | 一种密文数据压缩存储结构rcpe及数据动态读写方法 |
CN110968585A (zh) * | 2019-12-20 | 2020-04-07 | 深圳前海微众银行股份有限公司 | 面向列的存储方法、装置、设备及计算机可读存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022037015A1 (zh) * | 2020-08-21 | 2022-02-24 | 苏州浪潮智能科技有限公司 | 一种基于持久性内存的列式存储方法、装置及设备 |
CN113722623A (zh) * | 2021-09-03 | 2021-11-30 | 锐掣(杭州)科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113722623B (zh) * | 2021-09-03 | 2024-07-05 | 锐掣(杭州)科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114443703A (zh) * | 2021-12-15 | 2022-05-06 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022037015A1 (zh) | 2022-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
US10061693B2 (en) | Method of generating secondary index and apparatus for storing secondary index | |
CN102411616B (zh) | 一种数据存储方法和系统及数据管理方法 | |
US11556466B2 (en) | Logical-to-physical data structures | |
CN108027764B (zh) | 可转换的叶的存储器映射 | |
CN107391544B (zh) | 列式存储数据的处理方法、装置、设备及计算机储存介质 | |
US11176033B2 (en) | Data storage devices and data processing methods | |
CN111984651A (zh) | 一种基于持久性内存的列式存储方法、装置及设备 | |
US11307979B2 (en) | Data storage device and non-volatile memory control method | |
CN112131202B (zh) | 一种分布式文件存储和读取方法、终端设备及存储介质 | |
CN116414304B (zh) | 基于日志结构化合并树的数据存储装置和存储控制方法 | |
CN114003169B (zh) | 一种用于ssd的数据压缩方法 | |
CN110780806A (zh) | 促进元数据和数据捆绑存储的原子性保证的方法和系统 | |
CN112486861B (zh) | 固态硬盘映射表数据查询方法、装置、计算机设备及存储介质 | |
CN116048396A (zh) | 基于日志结构化合并树的数据存储装置和存储控制方法 | |
CN114116711A (zh) | 数据处理方法、装置、数据库、存储介质及程序产品 | |
CN112015791B (zh) | 数据处理方法、装置、电子设备及计算机存储介质 | |
US20240220470A1 (en) | Data storage device and storage control method based on log-structured merge tree | |
CN117648338B (zh) | 一种时空数据范围索引过滤优化方法、装置、设备及介质 | |
US11055231B2 (en) | Data storage devices and data processing methods of skipping editing of fields in H2F table when consecutive addresses are present in F2H table | |
CN112433673B (zh) | 一种固态硬盘存储数据的方法和设备 | |
US11748023B2 (en) | Data storage device and non-volatile memory control method | |
US20240220460A1 (en) | Data storage device and storage control method based on log-structured merge tree | |
CN117891392A (zh) | 固态硬盘的压缩数据的管理方法及系统 | |
CN118170820A (zh) | 面向NVM的分层异构IoT时序数据检索系统及方法 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201124 |