CN117725095B - 面向数据集的数据存储和查询方法、装置、设备及介质 - Google Patents
面向数据集的数据存储和查询方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117725095B CN117725095B CN202410171437.5A CN202410171437A CN117725095B CN 117725095 B CN117725095 B CN 117725095B CN 202410171437 A CN202410171437 A CN 202410171437A CN 117725095 B CN117725095 B CN 117725095B
- Authority
- CN
- China
- Prior art keywords
- data
- stored
- level
- run
- sets
- 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
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000013500 data storage Methods 0.000 title claims abstract description 32
- 238000003860 storage Methods 0.000 claims abstract description 43
- 238000004590 computer program Methods 0.000 claims description 9
- 238000003780 insertion Methods 0.000 abstract description 13
- 230000037431 insertion Effects 0.000 abstract description 13
- 238000004458 analytical method Methods 0.000 abstract description 7
- 238000012545 processing Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种面向数据集的数据存储和查询方法、装置、设备及介质,涉及关系型数据库技术领域,存储方法包括:接收待存储数据集并存储至Level数组中,将所述待存储数据集的基础元数据存储至第一数据块中;将所述待存储数据集按照设定的写入时间段分别划分至所述Level数组中的多个Level集合中,将每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;将每个所述Level集合中的多个待存储数据集按照时间顺序分别存储至多个Run集合中,在所述第二数据块中,将每个所述Run集合的元数据分别存储为按时间顺序排序的序号。本发明实现了面向有序数据集的数据高速插入、快速分析查询和事务处理需求。
Description
技术领域
本发明涉及关系型数据库技术领域,具体涉及一种面向数据集的数据存储和查询方法、装置、设备及介质。
背景技术
在关系型数据库中,对于有序数据集(例如时序数据)的高效存储和分析查询一直是一个挑战。传统的存储引擎在高速插入和查询方面存在性能瓶颈,而且在事务性处理和元数据管理上有一定的复杂性。
传统的存储引擎如PostgreSQL(对象-关系型数据库管理系统)的Heap(堆内存)存储在解决有序数据访问时,在元数据管理和动态逻辑块划分方面存在一些瓶颈,导致了在高速插入和查询时的性能问题。列式存储引擎,列式存储引擎在分析查询方面有优势,但在高速插入和事务处理方面可能存在一些挑战。RowStore(行存储)设计,一些数据库系统采用RowStore设计,可以提供高速插入和查询的性能,但在处理有序数据集时仍需进一步优化。LSMTree存储数据的删除,采用在关系型数据库中,数据的合并增大了删除的复杂度,通常所采用的标记删除策略占用的空间较多,维护的代价较高。
因此,针对有序的数据集,需要一种聚集存储方法,以满足在有序数据集背景下的高速插入、快速分析查询和事务处理的需求。
发明内容
有鉴于此,本申请实施例提供一种面向数据集的数据存储和查询方法、装置、设备及介质,以满足在有序数据集背景下的高速插入、快速分析查询和事务处理的需求。
本申请实施例提供以下技术方案:一种面向数据集的数据存储方法,包括:
接收待存储数据集,将所述待存储数据集存储至一个Level数组中,其中,将所述待存储数据集的基础元数据存储至所述Level数组中的第一数据块中;
将所述待存储数据集按照设定的写入时间段分别划分至所述Level数组中的多个Level集合中,其中,将每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
将每个所述Level集合中的多个待存储数据集按照时间顺序分别存储至多个Run集合中,其中,在所述第二数据块中,将每个所述Run集合的元数据分别存储为按时间顺序排序的序号。
根据本申请一种实施例,所述方法还包括:将每个所述Run集合对应的数据集中的数据按照行存储和列存储混用的方式进行存储,其中,将多行数据按照时间顺序分别保存至多个逻辑块Range中,将同一列数据的物理地址连续存储。
根据本申请一种实施例,所述方法还包括:对所述Run集合中的每条记录分别设置一个唯一标识,所述唯一标识包括该Run集合在所述第二数据块中的排序序号和当前记录在该Run集合中的逻辑块Range的位置序号;
将所述唯一标识保存至所述Run集合中的一个逻辑块TupleLink中,根据获取的数据删除请求或数据修改请求,在所述逻辑块TupleLink中进行查询,获得待删除或修改的数据记录对应的所述唯一标识,根据所述唯一标识,对所述待删除或修改的数据记录进行删除或修改操作。
根据本申请一种实施例,根据所述唯一标识,对所述待删除或修改的数据记录进行删除或修改操作,包括:
根据所述唯一标识,确定所述待删除或修改的数据记录对应的Run集合是否进行了合并操作;
若否,则在该Run集合中,根据所述唯一标识,对所述待删除或修改的数据记录进行删除或修改操作。
根据本申请一种实施例,根据所述唯一标识,确定所述待删除或修改的数据记录对应的Run集合是否进行了合并操作,还包括:
若所述待删除或修改的数据记录对应的Run集合开始了合并操作或者已经完成了合并操作,则将待删除或修改的数据记录对应的所述唯一标识在原Run集合的所述逻辑块TupleLink中进行标记,同时将待删除或修改的数据记录在原Run集合的Delta文件中进行记录;
根据原Run集合的所述逻辑块TupleLink中标记的所述唯一标识和记录的Delta文件,在合并后的新Run集合中进行查询,获得所述待删除或修改的数据记录在新Run集合中的位置,对该数据记录进行删除或修改操作。
本申请还提供一种面向数据集的数据查询方法,包括:
接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
根据所述键在关系型数据库的Level数组的第一数据块中进行查询,获得待查询数据对应的Level集合;其中,所述关系型数据库中的数据集存储至一个Level数组中,所述数据集的基础元数据存储至所述Level数组中的第一数据块中,所述数据集按照设定的写入时间段分别划分至所述Level数组中的多个Level集合中,每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
根据所述键在待查询数据对应的Level集合的所述第二数据块中进行查询,获得待查询数据对应的Run集合;其中,每个所述Level集合中的多个数据集按照时间顺序分别保存至多个Run集合中,且在所述第二数据块中,每个所述Run集合的元数据分别存储为按时间顺序排序的序号;
根据所述索引在待查询数据对应的Run集合中进行查询,输出查询数据。
本申请还提供一种面向数据集的数据存储装置,包括:
数据接收模块,用于接收待存储数据集,将所述待存储数据集存储至一个Level数组中,其中,将所述待存储数据集的基础元数据存储至所述Level数组中的第一数据块中;
第一存储模块,用于将所述待存储数据集按照设定的写入时间段分别划分至所述Level数组中的多个Level集合中,其中,将每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
第二存储模块,用于将每个所述Level集合中的多个待存储数据集按照时间顺序分别存储至多个Run集合中,其中,在所述第二数据块中,将每个所述Run集合的元数据分别存储为按时间顺序排序的序号。
本申请还提供一种面向数据集的数据查询装置,包括:
查询请求接收模块,用于接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
第一查询模块,用于根据所述键在关系型数据库的Level数组的第一数据块中进行查询,获得待查询数据对应的Level集合;其中,所述关系型数据库中的数据集存储至一个Level数组中,所述数据集的基础元数据存储至所述Level数组中的第一数据块中,所述数据集按照设定的写入时间段分别划分至所述Level数组中的多个Level集合中,每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
第二查询模块,用于根据所述键在待查询数据对应的Level集合的所述第二数据块中进行查询,获得待查询数据对应的Run集合;其中,每个所述Level集合中的多个数据集按照时间顺序分别保存至多个Run集合中,且在所述第二数据块中,每个所述Run集合的元数据分别存储为按时间顺序排序的序号;
第三查询模块,用于根据所述索引在待查询数据对应的Run集合中进行查询,输出查询数据。
本申请还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的面向数据集的数据存储方法和/或上述的面向数据集的数据查询方法。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述的面向数据集的数据存储方法和/或上述的面向数据集的数据查询方法的计算机程序。
与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:本发明是面向有序数据集的聚集存储方法设计,将有序数据集存储在一个Level数组中,将Level数组中的每个Level集合的元数据存储在一个数据块中,每个Level集合中通过单独的数据块记录了该集合中包括的全部Run集合的元数据,且每个Run集合的元数据仅采用序号来表示,这种精简格式和采用序号的方式大幅度提高了数据的访问速度。因此,本发明通过精简的文件管理机制,以及缩短元数据访问路径等技术,将有序数据集实现快速的元数据访问,进一步实现数据的高速插入、快速分析查询和事务处理,同时提高了系统的IO效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的一种面向数据集的数据存储方法的流程示意图;
图2是本发明实施例提供的一种面向数据集的数据存储方法的数据集存储结构示意图;
图3是本发明实施例提供的一种面向数据集的数据存储方法的数据存储结构示意图;
图4是本发明实施例提供的一种面向数据集的数据存储方法的数据删除过程示意图;
图5是本发明实施例提供的一种面向数据集的数据查询方法的流程示意图;
图6是本发明实施例提供的一种面向数据集的数据存储装置结构示意图;
图7是本发明实施例提供的一种面向数据集的数据查询装置结构示意图;
图8是本发明计算机设备的结构示意图。
具体实施方式
下面结合附图对本申请实施例进行详细描述。
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明实施例中的相关概念解释如下。
Range:是一个逻辑记录块,即指定条数的相邻记录的集合。同一Range的记录还可以按列切成若干块。
Run:是排序过的一组记录的集合。在一个Run可以实现自治的btree/brin等索引结构。它也是进一步排序的单位。每个Run可以有不同的存储方式和结构。
Level:为了实现数据保序存储,多个Run需要合并成大的有序集合。Level是一组Run的集合,同一Level的数据有相似的数据热度。
元数据(Metadata)是指描述数据的数据,主要包含数据属性和相关信息。它的目的是维护数据仓库,支持数据查询、历史数据查看、资源查找、文件记录等功能。元数据可以被视为一种电子式的目录,有助于编制目录,使数据检索更加高效。
在本发明实施例中,提供了一种面向数据集的数据存储方法,如图1所示,该方法包括:
S101.接收待存储数据集,将所述待存储数据集存储至一个Level数组中,其中,将所述待存储数据集的基础元数据存储至所述Level数组中的第一数据块中;
S102.将所述待存储数据集按照设定的写入时间段分别划分至所述Level数组中的多个Level集合中,其中,将每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
S103.将每个所述Level集合中的多个待存储数据集按照时间顺序分别存储至多个Run集合中,其中,在所述第二数据块中,将每个所述Run集合的元数据分别存储为按时间顺序排序的序号。
由图1和图2所示的流程可知,在本发明实施例中,将待存储数据集存储至一个Level数组中,该Level数组中包括了多个Level集合,其中,根据设定的写入时间段将待存储数据划分至多个Level集合中(设定的写入时间段,即上述的有相似的数据热度,将具有相似热度的数据集划分至同一个Level集合中),同时,将该待存储数据集的基础元数据(即每个Level集合的元数据)存储至所述Level数组中的第一数据块中(所述第一数据块即为图2中的MetaRoot)。进一步地,每一个Level集合中均包含了多个Run集合,将每个Run集合的元数据存储至该Level集合中的第二数据块中(所述第二数据块即为图2中的LevelMeta),并且每个所述Run集合的元数据分别存储为该Run集合在本Level集合中按时间顺序排序的序号,通过在上述的第二数据块中进行查询,即可快速定位到具体的Run集合中,且同一Level集合中中的多个Run集合的元数据(即附图2中的RunMeta)通过排序序号串起来,这种精简格式和采用序号的方式实现了快速的元数据访问,大幅提高了数据的访问速度,同时实现了数据的高速插入。
在具体实施时,每一个Level集合中包括多个Run集合,每一个Run集合可以存储一个数据集,即排序过的一组记录,在每个具体的Run集合中,可以根据需求设置btree/brin等索引结构,并包括了待存储数据的主数据,实现进一步的数据精准定位。在接收到数据访问请求时,根据数据访问请求信息,通过在8K的第一数据块的基础元数据中进行查询,即可快速定位到具体的Level集合中,通过在上述的第二数据块中进行查询,即可快速定位到具体的Run集合中,通过Run集合中的索引结构,即可查找到具体的数据记录。因此,本发明实施例的存储引擎是自包含的,不依赖于任何外部的高级机制,通过精简的文件管理机制、元数据访问路径缩短等技术,实现了数据的高速插入和快速分析查询。
在具体实施时,本发明实施例的所述方法还包括:将每个所述Run集合对应的数据集中的数据按照行存储和列存储混用的方式进行存储,其中,将多行数据按照时间顺序分别保存至多个逻辑块Range中,将同一列数据的物理地址连续存储。本实施例中,存储引擎仍采取行存和列存混用的方式。如图3所示,在列存格式上同一列的数据(Cn)在同一个Run集合(对应于一组物理文件)物理上是连续存储的,Range只是按记录数临时组成的逻辑集合。这种方式在保证IO顺序性的同时,提供了数据细粒度的弹性。
在具体实施时,由于列存对数据修改不友好,再加上合并操作会导致同一份数据在多个文件中,因此对于数据的正确性保证、代价控制,以及并发优化就非常重要。因此,在存储过程中,为了便于后续的数据修改和删除,本实施例引入了逻辑块TupleLink机制来解决了上述问题。
本发明实施例所述的逻辑块TupleLink机制具体包括:对所述Run集合中的每条记录分别设置一个唯一标识,所述唯一标识包括该Run集合在所述第二数据块中的排序序号和当前记录在该Run集合中的逻辑块Range的位置序号;将所述唯一标识保存至所述Run集合中的一个逻辑块TupleLink中,根据获取的数据删除请求或数据修改请求,在所述逻辑块TupleLink中进行查询,获得待删除或修改的数据记录对应的所述唯一标识,根据所述唯一标识,对所述待删除或修改的数据记录进行删除或修改操作。
在具体实施时,根据所述唯一标识,对所述待删除或修改的数据记录进行删除或修改操作前,先根据所述唯一标识,确定所述待删除或修改的数据记录对应的Run集合是否进行了合并操作;若否,则在该Run集合中,根据所述唯一标识,对所述待删除或修改的数据记录直接在该Run集合中进行删除或修改操作;若所述待删除或修改的数据记录对应的Run集合开始了合并操作或者已经完成了合并操作,则将待删除或修改的数据记录对应的所述唯一标识在原Run集合的所述逻辑块TupleLink中进行标记,同时将待删除或修改的数据记录在原Run集合的Delta文件中进行记录;根据原Run集合的所述逻辑块TupleLink中标记的所述唯一标识和记录的Delta文件,在合并后的新Run集合中进行查询,获得所述待删除或修改的数据记录在新Run集合中的位置,对该数据记录进行删除或修改操作。
如图4所示,本实施例以一个复杂删除流程说明具体的操作过程。系统为每一条数据记录分配一个唯一标识tid,该唯一标识tid可以表示为(Runid,offset)组合,其中Runid即为该Run集合在所述第二数据块中的排序序号,offset是该记录在该Run集合中的逻辑块Range的位置序号。
1.一条数据写入后经过合并,当前存储在columnstore-Run1(列存储-Run1)中。
2.用户发起了对某一条数据的删除请求,则首先通过一个查询定位到这条记录的唯一标识tid(Runid,offset)。此时该条记录对应的Run集合有可能未开始合并操作,也有可能在合并进行中。
3.若合并还未开始,则直接在该Run集合中进行删除操作。若合并操作已经开始,则首先在Runid对应的Delta文件中记录下删除记录,合并任务正在将columnstore-Run1和columnstore-Run2合并成一个新的Run集合,则该记录已经在columstore-newRun(列存储-新Run集合)里,因此通过在原Run集合的所述逻辑块TupleLink中对待删除的数据记录对应的所述唯一标识进行标记,通过标记指向了columstore-newRun里新位置,从而获取到待删除的数据。当合并完成时,逻辑块TupleLink中的记录会转成newRun里的Delta记录。此时,原Run集合已经不可见,Columnstore-Run1的数据、Delta文件及逻辑块TupleLink均可删除。
由于在进行合并操作时,标记每一条数据记录的唯一标识tid需要消耗大量空间,因此优化为仅记录原Run集合中的源Range和新Run集合中的目标Range的关系。本实施例增加逻辑块TupleLink,用于存储每条记录的唯一标识tid,最大程度保证了删除和合并可以并发执行,从而提高了修改操作的吞吐。
数据的修改实际上是删除和插入的组合,不再赘述。
如图5所示,本发明实施例还提供本申请还提供一种面向数据集的数据查询方法,包括:
S201.接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
S202.根据所述键在关系型数据库的Level数组的第一数据块中进行查询,获得待查询数据对应的Level集合;其中,所述关系型数据库中的数据集存储至一个Level数组中,所述数据集的基础元数据存储至所述Level数组中的第一数据块中,所述数据集按照设定的时间段分别划分至所述Level数组中的多个Level集合中,每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
S203.根据所述键在待查询数据对应的Level集合的所述第二数据块中进行查询,获得待查询数据对应的Run集合;其中,每个所述Level集合中的多个数据集按照时间顺序分别保存至多个Run集合中,且在所述第二数据块中,每个所述Run集合的元数据分别存储为按时间顺序排序的序号;
S204.根据所述索引在待查询数据对应的Run集合中进行查询,输出查询数据。
具体实施时,本发明实施例的面向数据集的数据查询方法可以结合btree索引一个Run集合的数据,也可以基于Run集合中的Range提供Brin索引,便于定位一个Range里是否有期望的数据。索引可以同时对rowstore (行存储)和columnstore(列存储)生效。查询请求经过解析后,最后要通过存储引擎对单个表的部分列进行扫描。由于数据已经经过排序,而每个文件记录了它的最大和最小的排序键,通过键筛选出待访问的文件列表。文件内部可以动态切成若干个更小的访问单元,并对这些单元设置min/max索引,从而定位到目标逻辑数据块。当访问到某一块的数据时,根据被筛选的列读取对应的数据范围。由于数据已经经过了排序,在选中的数据范围都可以顺序性地读取,从而提高了IO效率。
基于同一发明构思,本发明实施例中还提供了一种面向数据集的数据存储装置,如下面的实施例所述。由于面向数据集的数据存储装置解决问题的原理与面向数据集的数据存储方法相似,因此面向数据集的数据存储装置的实施可以参见面向数据集的数据存储方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图6是本发明实施例的面向数据集的数据存储装置300的一种结构框图,如图6所示,包括:数据接收模块301,用于接收待存储数据集,将所述待存储数据集存储至一个Level数组中,其中,将所述待存储数据集的基础元数据存储至所述Level数组中的第一数据块中;
第一存储模块302,用于将所述待存储数据集按照设定的时间段分别划分至所述Level数组中的多个Level集合中,其中,将每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
第二存储模块303,用于将每个所述Level集合中的多个待存储数据集按照时间顺序分别存储至多个Run集合中,其中,在所述第二数据块中,将每个所述Run集合的元数据分别存储为按时间顺序排序的序号。
在一个实施例中,第二存储模块,还包括:将每个所述Run集合对应的数据集中的数据按照行存储和列存储混用的方式进行存储,其中,将多行数据按照时间顺序分别保存至多个逻辑块Range中,将同一列数据的物理地址连续存储。
在一个实施例中,第二存储模块,还包括:对所述Run集合中的每条记录分别设置一个唯一标识,所述唯一标识包括该Run集合在所述第二数据块中的排序序号和当前记录在该Run集合中的逻辑块Range的位置序号;将所述唯一标识保存至所述Run集合中的一个逻辑块TupleLink中,根据获取的数据删除请求或数据修改请求,在所述逻辑块TupleLink中进行查询,获得待删除或修改的数据记录对应的所述唯一标识,根据所述唯一标识,对所述待删除或修改的数据记录进行删除或修改操作。
图7是本发明实施例的面向数据集的数据查询装置400的一种结构框图,如图7所示,包括:查询请求接收模块401,用于接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
第一查询模块402,用于根据所述键在关系型数据库的Level数组的第一数据块中进行查询,获得待查询数据对应的Level集合;其中,所述关系型数据库中的数据集存储至一个Level数组中,所述数据集的基础元数据存储至所述Level数组中的第一数据块中,所述数据集按照设定的时间段分别划分至所述Level数组中的多个Level集合中,每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
第二查询模块403,用于根据所述键在待查询数据对应的Level集合的所述第二数据块中进行查询,获得待查询数据对应的Run集合;其中,每个所述Level集合中的多个数据集按照时间顺序分别保存至多个Run集合中,且在所述第二数据块中,每个所述Run集合的元数据分别存储为按时间顺序排序的序号;
第三查询模块404,用于根据所述索引在待查询数据对应的Run集合中进行查询,输出查询数据。
本发明实施例实现了如下技术效果:
本发明实施例是面向有序数据集的聚集存储方法设计,将有序数据集存储在一个Level数组中,将Level数组中的每个Level集合的元数据存储在一个数据块中,每个Level集合中通过单独的数据块记录了该集合中包括的全部Run集合的元数据,且每个Run集合的元数据仅采用序号来表示,这种精简格式和采用序号的方式大幅度提高了数据的访问速度。因此,本发明通过精简的文件管理机制,以及缩短元数据访问路径等技术,将有序数据集实现快速的元数据访问,进一步实现数据的高速插入、快速分析查询和事务处理,同时提高了系统的IO效率,最大程度保证了IO的连续性。提供了TupleLink机制,将合并前后的数据关联起来,提供逻辑删除的能力。结合RowStore设计,在保证了高速插入和查询的同时,提供高QPS(每秒查询率)。
在一种实施例中,提供了一种计算机设备,如图8所示,包括存储器501、处理器502及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的面向数据集的数据存储方法和/或上述的面向数据集的数据查询方法。
具体的,该计算机设备可以是计算机终端、服务器或者类似的运算装置。
在本实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述任意的面向数据集的数据存储方法和/或上述的面向数据集的数据查询方法的计算机程序。
具体的,计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种面向数据集的数据存储方法,其特征在于,包括:
接收待存储数据集,将所述待存储数据集存储至一个Level数组中,其中,将所述待存储数据集的基础元数据存储至所述Level数组中的第一数据块中;
将所述待存储数据集按照设定的写入时间段分别划分至所述Level数组中的多个Level集合中,其中,将每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
将每个所述Level集合中的多个待存储数据集按照时间顺序分别存储至多个Run集合中,其中,在所述第二数据块中,将每个所述Run集合的元数据分别存储为按时间顺序排序的序号;
所述方法还包括:将每个所述Run集合对应的数据集中的数据按照行存储和列存储混用的方式进行存储,其中,将多行数据按照时间顺序分别保存至多个逻辑块Range中,将同一列数据的物理地址连续存储;
所述方法还包括:对所述Run集合中的每条记录分别设置一个唯一标识,所述唯一标识包括该Run集合在所述第二数据块中的排序序号和当前记录在该Run集合中的逻辑块Range的位置序号;
将所述唯一标识保存至所述Run集合中的一个逻辑块TupleLink中,根据获取的数据删除请求或数据修改请求,在所述逻辑块TupleLink中进行查询,获得待删除或修改的数据记录对应的所述唯一标识,根据所述唯一标识,对所述待删除或修改的数据记录进行删除或修改操作。
2.根据权利要求1所述的面向数据集的数据存储方法,其特征在于,根据所述唯一标识,对所述待删除或修改的数据记录进行删除或修改操作,包括:
根据所述唯一标识,确定所述待删除或修改的数据记录对应的Run集合是否进行了合并操作;
若否,则在该Run集合中,根据所述唯一标识,对所述待删除或修改的数据记录进行删除或修改操作。
3.根据权利要求2所述的面向数据集的数据存储方法,其特征在于,根据所述唯一标识,确定所述待删除或修改的数据记录对应的Run集合是否进行了合并操作,还包括:
若所述待删除或修改的数据记录对应的Run集合开始了合并操作或者已经完成了合并操作,则将待删除或修改的数据记录对应的所述唯一标识在原Run集合的所述逻辑块TupleLink中进行标记,同时将待删除或修改的数据记录在原Run集合的Delta文件中进行记录;
根据原Run集合的所述逻辑块TupleLink中标记的所述唯一标识和记录的Delta文件,在合并后的新Run集合中进行查询,获得所述待删除或修改的数据记录在新Run集合中的位置,对该数据记录进行删除或修改操作。
4.一种面向数据集的数据查询方法,所述数据集采用如权利要求1所述的面向数据集的数据存储方法进行存储,其特征在于,包括:
接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
根据所述键在关系型数据库的Level数组的第一数据块中进行查询,获得待查询数据对应的Level集合;其中,所述关系型数据库中的数据集存储至一个Level数组中,所述数据集的基础元数据存储至所述Level数组中的第一数据块中,所述数据集按照设定的写入时间段分别划分至所述Level数组中的多个Level集合中,每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
根据所述键在待查询数据对应的Level集合的所述第二数据块中进行查询,获得待查询数据对应的Run集合;其中,每个所述Level集合中的多个数据集按照时间顺序分别保存至多个Run集合中,且在所述第二数据块中,每个所述Run集合的元数据分别存储为按时间顺序排序的序号;
根据所述索引在待查询数据对应的Run集合中进行查询,输出查询数据。
5.一种面向数据集的数据存储装置,应用如权利要求1所述的面向数据集的数据存储方法,其特征在于,包括:
数据接收模块,用于接收待存储数据集,将所述待存储数据集存储至一个Level数组中,其中,将所述待存储数据集的基础元数据存储至所述Level数组中的第一数据块中;
第一存储模块,用于将所述待存储数据集按照设定的写入时间段分别划分至所述Level数组中的多个Level集合中,其中,将每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
第二存储模块,用于将每个所述Level集合中的多个待存储数据集按照时间顺序分别存储至多个Run集合中,其中,在所述第二数据块中,将每个所述Run集合的元数据分别存储为按时间顺序排序的序号。
6.一种面向数据集的数据查询装置,应用如权利要求4所述的面向数据集的数据查询方法,其特征在于,包括:
查询请求接收模块,用于接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
第一查询模块,用于根据所述键在关系型数据库的Level数组的第一数据块中进行查询,获得待查询数据对应的Level集合;其中,所述关系型数据库中的数据集存储至一个Level数组中,所述数据集的基础元数据存储至所述Level数组中的第一数据块中,所述数据集按照设定的写入时间段分别划分至所述Level数组中的多个Level集合中,每个所述Level集合的元数据分别存储至该Level集合的第二数据块中;
第二查询模块,用于根据所述键在待查询数据对应的Level集合的所述第二数据块中进行查询,获得待查询数据对应的Run集合;其中,每个所述Level集合中的多个数据集按照时间顺序分别保存至多个Run集合中,且在所述第二数据块中,每个所述Run集合的元数据分别存储为按时间顺序排序的序号;
第三查询模块,用于根据所述索引在待查询数据对应的Run集合中进行查询,输出查询数据。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至3中任一项所述的面向数据集的数据存储方法和/或权利要求4所述的面向数据集的数据查询方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至3中任一项所述的面向数据集的数据存储方法和/或权利要求4所述的面向数据集的数据查询方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410171437.5A CN117725095B (zh) | 2024-02-07 | 2024-02-07 | 面向数据集的数据存储和查询方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410171437.5A CN117725095B (zh) | 2024-02-07 | 2024-02-07 | 面向数据集的数据存储和查询方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117725095A CN117725095A (zh) | 2024-03-19 |
CN117725095B true CN117725095B (zh) | 2024-05-03 |
Family
ID=90201969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410171437.5A Active CN117725095B (zh) | 2024-02-07 | 2024-02-07 | 面向数据集的数据存储和查询方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117725095B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475507A (zh) * | 2020-03-31 | 2020-07-31 | 浙江大学 | 一种工作负载自适应单层lsmt的键值数据索引方法 |
CN112118262A (zh) * | 2020-09-21 | 2020-12-22 | 武汉中元华电科技股份有限公司 | 一种基于动态内存分配实现数据排序与合并的系统及方法 |
CN113722518A (zh) * | 2021-08-27 | 2021-11-30 | 中科星通(廊坊)信息技术有限公司 | 基于遥感影像元数据的存储方法、检索方法、设备及介质 |
CN114153377A (zh) * | 2020-09-07 | 2022-03-08 | 普利奥普斯有限公司 | 管理存储在非易失性存储器中的键值对的lsm树 |
CN114372071A (zh) * | 2022-01-11 | 2022-04-19 | 中国平安人寿保险股份有限公司 | 一种表数据删除方法、装置、计算机设备及存储介质 |
CN114676130A (zh) * | 2022-03-02 | 2022-06-28 | 阿里巴巴(中国)有限公司 | 时序数据的存储方法、计算设备及存储介质 |
CN116894041A (zh) * | 2023-09-06 | 2023-10-17 | 北京四维纵横数据技术有限公司 | 数据存储方法、装置、计算机设备及介质 |
-
2024
- 2024-02-07 CN CN202410171437.5A patent/CN117725095B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475507A (zh) * | 2020-03-31 | 2020-07-31 | 浙江大学 | 一种工作负载自适应单层lsmt的键值数据索引方法 |
CN114153377A (zh) * | 2020-09-07 | 2022-03-08 | 普利奥普斯有限公司 | 管理存储在非易失性存储器中的键值对的lsm树 |
CN112118262A (zh) * | 2020-09-21 | 2020-12-22 | 武汉中元华电科技股份有限公司 | 一种基于动态内存分配实现数据排序与合并的系统及方法 |
CN113722518A (zh) * | 2021-08-27 | 2021-11-30 | 中科星通(廊坊)信息技术有限公司 | 基于遥感影像元数据的存储方法、检索方法、设备及介质 |
CN114372071A (zh) * | 2022-01-11 | 2022-04-19 | 中国平安人寿保险股份有限公司 | 一种表数据删除方法、装置、计算机设备及存储介质 |
CN114676130A (zh) * | 2022-03-02 | 2022-06-28 | 阿里巴巴(中国)有限公司 | 时序数据的存储方法、计算设备及存储介质 |
CN116894041A (zh) * | 2023-09-06 | 2023-10-17 | 北京四维纵横数据技术有限公司 | 数据存储方法、装置、计算机设备及介质 |
Non-Patent Citations (1)
Title |
---|
基于关键列分组排序的列存储结构;徐涛;顾瑜;汪东升;;计算机工程与科学;20160815(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117725095A (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110149803B (zh) | 数据存储方法、系统及终端设备 | |
US10114908B2 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
US8700605B1 (en) | Estimating rows returned by recursive queries using fanout | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
CN105224546B (zh) | 数据存储和查询方法及设备 | |
CN105912687B (zh) | 海量分布式数据库存储单元 | |
CN106471501B (zh) | 数据查询的方法、数据对象的存储方法和数据系统 | |
CN107491487A (zh) | 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质 | |
CN103440245A (zh) | 数据库系统的行列混合存储方法 | |
US20150261783A1 (en) | Method and apparatus for storing and reading files | |
CN110309233A (zh) | 数据存储的方法、装置、服务器和存储介质 | |
US20140229429A1 (en) | Database management delete efficiency | |
EP3767486A1 (en) | Multi-record index structure for key-value stores | |
CN102779138A (zh) | 实时数据的硬盘存取方法 | |
CN110134335A (zh) | 一种基于键值对的rdf数据管理方法、装置及存储介质 | |
CN116257523A (zh) | 一种基于非易失存储器的列式存储索引方法及装置 | |
CN114372064B (zh) | 数据处理装置、方法、计算机可读介质及处理器 | |
CN109213760B (zh) | 非关系数据存储的高负载业务存储及检索方法 | |
CN114328601A (zh) | 数据降采样和数据查询方法、系统及存储介质 | |
CN111752941B (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
CN117725095B (zh) | 面向数据集的数据存储和查询方法、装置、设备及介质 | |
US20240220470A1 (en) | Data storage device and storage control method based on log-structured merge tree | |
CN115934583B (zh) | 分级缓存方法、装置及系统 | |
CN116756253A (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 |