CN117033322A - 一种流批一体的大数据存储方法、***、电子设备及存储介质 - Google Patents

一种流批一体的大数据存储方法、***、电子设备及存储介质 Download PDF

Info

Publication number
CN117033322A
CN117033322A CN202310836016.5A CN202310836016A CN117033322A CN 117033322 A CN117033322 A CN 117033322A CN 202310836016 A CN202310836016 A CN 202310836016A CN 117033322 A CN117033322 A CN 117033322A
Authority
CN
China
Prior art keywords
data
file
storage module
directory
batch
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
Application number
CN202310836016.5A
Other languages
English (en)
Inventor
王军德
李诒雯
周明
周亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Kotei Informatics Co Ltd
Original Assignee
Wuhan Kotei Informatics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Kotei Informatics Co Ltd filed Critical Wuhan Kotei Informatics Co Ltd
Priority to CN202310836016.5A priority Critical patent/CN117033322A/zh
Publication of CN117033322A publication Critical patent/CN117033322A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems

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)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种流批一体的大数据存储方法、***、电子设备及存储介质,***包括内存表、数据文件存储模块和操作记录存储模块。本发明通过内存表对流式数据进行缓存,并在数据写入文件存储模块前进行键过滤,从而对流式数据进行去重,同时文件存储模块以LSM Tree结构进行存储,实现流式数据的增加、更新、删除,支持数据的全量批次读取,同时基于操作记录存储模块对文件存储模块中表的操作记录进行存储,更便于与上述文件存储模块结合实现流式数据的变更数据读取,从而实现了流批一体的存储,从根本上解决了流批一体的兼容性问题,完善了实时流式数据和离线批量数据一体的动态表存储。

Description

一种流批一体的大数据存储方法、***、电子设备及存储介质
技术领域
本发明涉及大数据处理技术领域,更具体地,涉及一种流批一体的大数据存储方法、***、电子设备及存储介质。
背景技术
动态表是大数据实时数据处理框架(以Apache Flink为代表)的表API和SQL处理流数据的核心概念,与离线数仓中间层的静态表(以Apache Hive为代表)作用类似,动态表是实时数据仓库的中间层。动态表中数据是随时间持续变化永不停止的,而静态表仅能包含离线批量处理的数据。可以将实时计算看成对动态表上变更数据的处理,将离线或批量计算看成对动态表某个时间快照的处理。对动态表的查询将生成一个持续查询,这个查询不断更新下游的结果表,以反映输入动态表上的更改,这构成了实时数仓的基本处理思路。本质上,动态表上的连续查询非常类似于定义物化视图的查询。
作为存算分离的架构在传统意义上一直被认为是大数据架构演进的推荐的设计方式。然而现有的存储方式都是针对离线数据的静态表处理推动发展而来,对于实时数仓的动态表数据所对应的增删查改需求,显然是不能够满足要求的。因此,如何进一步完善实时流式数据和离线批量数据一体的动态表存储是亟待解决的问题。
发明内容
本发明针对现有技术中存在的技术问题,提供一种流批一体的大数据存储方法、***、电子设备及存储介质,用以解决如何进一步完善实时流式数据和离线批量数据一体的动态表存储的问题。
本发明的第一方面,提供了一种流批一体的大数据存储***,包括:内存表、数据文件存储模块和操作记录存储模块;
所述内存表,用于对输入的流式数据以键值对的方式进行缓存,并对所述流式数据进行键过滤,将过滤后的流式数据写入所述文件存储模块;
所述数据文件存储模块,用于以数据文件存储形式,基于LSM Tree数据结构,对所述过滤后的流式数据进行CURD操作;
所述操作记录存储模块,用于以不可变更序列存储所述数据文件存储模块中表的操作记录。
在上述技术方案的基础上,本发明还可以作出如下改进。
优选的,所述数据文件存储模块包括数据存储目录,所述数据存储目录包括:至少一个区目录,每个区目录中至少包括一个块目录;
所述块目录,用于基于LSM Tree数据结构,对所述过滤后的流式数据进行CURD操作。
优选的,所述数据文件存储模块还包括元数据存储目录,所述元数据存储目录包括:schema目录、meta目录和version目录;
所述schema目录,用于存储所述过滤后的流式数据写入所述数据文件存储模块时触发提交的表结构变更的记录文件,包括表结构的增加、删除和修改记录以及表索引结构的变更记录;
所述meta目录,用于存储所述过滤后的流式数据写入所述数据文件存储模块时触发提交的数据文件变更meta-list列表;
所述version目录,用于存储所述过滤后的流式数据写入所述数据文件存储模块时触发提交的版本快照文件,所述版本快照文件包括所述schema目录中的表结构文件和所述meta目录中的变更meta-list列表。
优选的,所述操作记录存储模块包括至少一个分区目录,每个分区目录中包括至少一个消息文件;
所述消息文件,用于以不可变更序列存储所述数据文件存储模块中表的操作记录。
本发明的第二方面,提供一种流批一体的大数据存储方法,应用于流批一体的大数据存储***,所述流批一体的大数据存储***包括内存表、数据文件存储模块和操作记录存储模块,所述方法包括:
在所述内存表满足预设刷盘条件时,对所述内存表中的流式数据按键值和序列号进行排序合并,并将排序后的流式数据写入所述数据文件存储模块中,所述流式数据包括键、值和序列号;
所述数据文件存储模块基于所述排序后的流式数据生成数据文件变更第一meta-list列表,并将本次写入记录存储至所述第一meta-list列表中;
所述数据文件存储模块基于所述排序后的流式数据生成第一version快照文件,并将所述第一version快照文件与所述本次写入记录进行关联,完成数据存储。
优选的,在所述排序后的流式数据写入所述数据存储模块并对所述数据存储模块中表结构更新时,所述数据存储模块生成所述排序后的流式数据对应的表结构文件,并将所述表结构文件存储至所述数据存储模块的schema目录中,并将所述第一version快照文件与所述表结构文件关联。
优选的,所述本次写入记录包括删除文件和新增文件。
优选的,所述方法还包括:
基于输入的数据读取指令,读取所述数据读取指令对应的第二version快照文件;
基于所述第二version快照文件获取所述第二meta-list列表,并生成文件清单;
将所述数据文件存储模块中所述文件清单对应的文件构建成LSM Tree;
基于所述LSM Tree将所述文件清单对应的数据返回至指令输入方。
本发明的第三方面,提供了一种电子设备,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现上述第二方面中任一流批一体的大数据存储方法的步骤。
本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现上述第二方面中任一流批一体的大数据存储方法的步骤。
本发明提供的一种流批一体的大数据存储方法、***、电子设备及存储介质,***包括内存表、数据文件存储模块和操作记录存储模块;所述内存表,用于对输入的流式数据以键值对的方式进行缓存,并对所述流式数据进行键过滤,将过滤后的流式数据写入所述文件存储模块;所述数据文件存储模块,用于以数据文件存储形式,基于LSM Tree数据结构,对所述过滤后的流式数据进行CURD操作;所述操作记录存储模块,用于以不可变更序列存储所述数据文件存储模块中表的操作记录。本发明通过内存表对流式数据进行缓存,并在数据写入文件存储模块前进行键过滤,从而对流式数据进行去重,同时文件存储模块以LSM Tree结构进行存储,实现流式数据的增加、更新、删除,支持数据的全量批次读取,同时基于操作记录存储模块对文件存储模块中表的操作记录进行存储,更便于与上述文件存储模块结合实现流式数据的变更数据读取,从而实现了流批一体的存储,从根本上解决了流批一体的兼容性问题,完善了实时流式数据和离线批量数据一体的动态表存储。
附图说明
图1为本发明提供的一种流批一体的大数据存储***结构示意图;
图2为本发明提供的流批一体的大数据存储***整体结构的示意图;
图3为本发明提供的数据文件存储模块中LSM Tree实现的示意图;
图4为本发明提供的一种流批一体的大数据存储方法流程图;
图5为本发明提供的一种可能的电子设备的硬件结构示意图;
图6为本发明提供的一种可能的计算机可读存储介质的硬件结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
从架构上看,大数据实时数仓架构常以Apache Kafka为代表的流式数据中间件作为接入数据,然而流式数据中间件作为中间层,其数据是不可直接查询的,只有最后落地到ODS(Operating Data Store,操作型数据存储层)才可访问,这会严重限制数据分析师的能力,毕竟数据分析是采用基于表操作的SQL语言,数据分析师对所有表数据的实时查询都有诉求;并且由于流式数据中间件数据只能保存一段时间,在中间件数据出现问题的场景下,对数据进行排查定位的成本是很大的。在某些场景下,以流式数据中间件作为实时计算链路的中间层甚至需要付出比较高的成本。
为了解决流式数据中间件不可查询的问题,业界的一种解决方案是构建实时数据和离线数据分离的所谓Lambda架构的数据仓库:对于实时计算建立一条数据链路,再去创建另一条离线批量数据链路,实时数据同时往离线批量链路进行批量写入,离线批量数据以天周期更新到下游,最后再用以更新实时链路中的错误数据和分析查询。由于在技术上流式实时数据中需要关注各种时间(事件时间,摄入时间,处理时间),窗口(滚动窗口,滑动窗口,会话窗口)和水位线等属性,而离线数据则需要考虑数据分区和合并问题,这种Lambda架构方案不仅存在两套***维护成本比较高的问题;而且两套***记录的口径也天然难以保持一致性,这就导致了两条链路不可避免的最终走向割裂。
随着大数据处理和存储需求越来越多样化,如何构建一个流数据和批量离线数据统一的表存储格式,并在其上进行多种形式的数据分析,成了企业构建大数据生态的一个重要方向。
参见图1,图1为本发明提供的一种流批一体的大数据存储***结构示意图,如图1所示,***包括:内存表100、数据文件存储模块200和操作记录存储模块300。
其中,所述内存表100,用于对输入的流式数据以键值对的方式进行缓存,并对所述流式数据进行键过滤,将过滤后的流式数据写入所述文件存储模块;所述数据文件存储模块200,用于以数据文件存储形式,基于LSM Tree数据结构,对所述过滤后的流式数据进行CURD操作;所述操作记录存储模块300,用于以不可变更序列存储所述数据文件存储模块中表的操作记录。
可以理解的是,本实施例是围绕使用LSM Tree(Log Structured Merge Tree,日志结构合并树)为中心设计底层存储,LSM Tree是大数据规模场景下的核心数据结构。在写入LSM Tree文件之前首先在内存中先进行Sort-Merge(排序合并)生成有序的数据,这样LSM Tree的数据查询(Key-Value查询、范围查询)的性能也是比较可观的。鉴于LSM Tree原本是基于单一文件存储的设计范式,我们加上了分层的策略实现多文件存储设计。
进一步的,所述数据文件存储模块包括数据存储目录,所述数据存储目录包括:至少一个区目录,每个区目录中至少包括一个块目录;所述块目录,用于基于LSM Tree数据结构,对所述过滤后的流式数据进行CURD操作。
进一步的,所述数据文件存储模块还包括元数据存储目录,所述元数据存储目录包括:schema目录、meta目录和version目录;所述schema目录,用于存储所述过滤后的流式数据写入所述数据文件存储模块时触发提交的表结构变更的记录文件,包括表结构的增加、删除和修改记录以及表索引结构的变更记录;所述meta目录,用于存储所述过滤后的流式数据写入所述数据文件存储模块时触发提交的数据文件变更meta-list列表;所述version目录,用于存储所述过滤后的流式数据写入所述数据文件存储模块时触发提交的版本快照文件,所述版本快照文件包括所述schema目录中的表结构文件和所述meta目录中的变更meta-list列表。
进一的,所述操作记录存储模块包括至少一个分区目录,每个分区目录中包括至少一个消息文件;所述消息文件,用于以不可变更序列存储所述数据文件存储模块中表的操作记录。
可以理解的是,本实施例中的数据文件存储模块构建在底层的对象存储或者文件***之上,采用数据文件先分区(segment)再分块(block)的方式,每个块内各自维护一棵LSM Tree。每条数据记录以Kev-Value方式写入Memory Table中,通过key进行hash映射落入对应的分区内,也就确定了写入的分区目录路径。在刷入(flush)到磁盘的过程中,以主键排序对数据进行压缩合并(去重),以追加的方式写入磁盘。Sort Merge直接在Buffer内进行,避免了像Apache Hudi索引来判断一条记录是新增还是更新来获取写入文件的filegroup的tagging。另外,触发Memory Table Flush发生在Buffer充满时,不需要额外通过像Apache Hudi的Auto-File Sizing机制来避免小文件产生,整个写入过程都是局部有序的,避免了随机I/O产生。
进一步的,数据文件的更新由元数据文件进行跟踪,版本快照文件再跟踪元数据文件变更,同时跟踪表结构文件变动。这样通过访问版本快照文件就能够获取所需要的所有历史数据记录。
进一步的,本实施例中所有的更新都应基于存储自身而不依赖于定时查询流式实时框架的处理状态,只是依赖于流处理框架的checkPoint的触发通知,这样的好处不仅仅是***开销小,而且易用性非常高。由于存储的更新不依赖写入作业的状态,写入作业可以在流处理和批处理之间随意切换。
进一步的,对于读取数据,基于LSM Tree的数据结构能够非常快速进行SortedMerge,数据合并采用基于MOR(Merge On Read,读取时合并)的高效实现方式,对有序数据的合并影响非常低,对比Apache Iceberg这种COW(Copy On Write,写入时拷贝)表存储方式的查询时延影响很小。从实现原理来说,MOR的查询性能低于COW,而COW的写入性能低于MOR是难以避免的,没有两全的完美方案。本文提出的表存储机制由于数据按照主键key排序,相当于主键key上有索引,所以基于Key-Value的Filter查询或Range Filter查询,查询速度会非常快。由于底层基于排序的查询已经排除掉大量的文件,基于Key-Value的查询能在几百毫秒这个事件响应级别返回。
可以理解的是,基于背景技术中的缺陷,本发明实施例提出了一种流批一体的大数据存储***。***包括内存表、数据文件存储模块和操作记录存储模块;所述内存表,用于对输入的流式数据以键值对的方式进行缓存,并对所述流式数据进行键过滤,将过滤后的流式数据写入所述文件存储模块;所述数据文件存储模块,用于以数据文件存储形式,基于LSM Tree数据结构,对所述过滤后的流式数据进行CURD操作;所述操作记录存储模块,用于以不可变更序列存储所述数据文件存储模块中表的操作记录。本发明通过内存表对流式数据进行缓存,并在数据写入文件存储模块前进行键过滤,从而对流式数据进行去重,同时文件存储模块以LSM Tree结构进行存储,实现流式数据的增加、更新、删除,支持数据的全量批次读取,同时基于操作记录存储模块对文件存储模块中表的操作记录进行存储,更便于与上述文件存储模块结合实现流式数据的变更数据读取,从而实现了流批一体的存储,从根本上解决了流批一体的兼容性问题,完成了实时流式数据和离线批量数据一体的动态表存储。
在一种可能的实施例方式中,从存储设计结构上看,动态表内部有两个处理组件,Table Storage和WAL Storage,如图2所示。
其中,Table Storage即表的数据文件存储形式,采用LSM Tree数据结构,支持流式数据的增加、更新、删除等。采用开放的列存储结构,支持压缩等优化。对应实时处理框架的批模式,支持数据的全量批次读取。
进一步的,WAL Storage即表的操作记录,是一个不可变更序列,对应实时处理框架的流模式,可以通过流式处理的SQL查询来订阅表的增量变化做实时分析,支持插件化实现。依赖流式中间件Apache Kafka作为底层存储,WAL Storage中的对应的目录和文件,分别对应于Kafka的Segment和Partition文件。
进一步的,从Table Storage的存储目录结构可知,动态表的目录结构包含数据存储目录和元数据目录,他们都在同一级目录下,可分为数据存储目录和元数据存储目录。
其中,数据存储目录多个segment(区)目录,每个segment目录有多个block(块)目录。用户在定义表的时候需要设置其包含的block数量。这样每个segment中包含多个独立的block,数据通过hash函数映射到block中。每个block中都是一个支持更新的LSM Tree。LSM Tree一开始设计就并非单个文件,从而避免了单个block的数据存储在一个文件中,以此来支持更新以及查询性能的提升。LSM Tree数据文件支持ORC、Parquet等主流大数据文件存储格式。
进一步的,如果block内只有一个数据文件,每次更新时需要对文件中的数据全部重写,当文件中的数据达到GB量级时的代价就非常大。但又不能把block数量设置太多,当block的数量很大时每个block都对应一个小文件,此时对底层对象存储***或者文件存储***的压力很大。
进一步的,数据文件主要采用LSM Tree作为文件存储的数据结构,LSM Tree基于已经一组有序的数据集合进行文件组织,数据集合文件由一个或者多个文件组成。每个数据文件包含一段范围内的有序数据集合。不用的数据文件可能有数据范围的重叠。
进一步的,查询LSM Tree时,必须结合多个数据文件中的有序结合,合并具有相同主键记录的文件数据,结合最新的时间戳来获取真正准确的最新数据。写入LSM Tree的记录首先保存在内存中的Memory Table中,当Memory Table写满时或者超出写入硬盘间隔时间时,会通知流处理框架checkPoint触发通知,同时所有记录经过Sort Merge写入Tablestorage的各种元数据和数据文件。
其中,元数据存储目录包括schema目录,meta目录和version目录。schema目录记录了每次经过流式处理框架checkPoint触发提交的表结构变更的记录文件,包括表结构的增加、删除和修改记录,以及一些表的索引结构的变更记录。meta目录下中记录了每次经过流式处理框架checkPoint触发提交的数据文件变更meta-list列表,对应每一次新增和删除的数据文件,meta记录都会增量文件的版本。version目录下记录了每次经过流式处理框架checkPoint触发提交的版本快照文件,每个版本快照它关联两部分内容,一部分是schema目录对应当前版本的表结构文件;另一部分是meta目录下的meta-list目录下的对应的关联LSM数据文件的增加和删除记录的meta文件。
本实施例中,通过构建Table Storage和WAL Storage使得数据存储和历史记录分离,解决了常规流式处理框架全量数据同步阶段产生了大量数据乱序引起的随机写入,导致性能回退、吞吐毛刺及不稳定等问题。同时应用本实施例提出的设计方法,所有的更新都应基于存储自身而不应依赖流式实时处理框架的状态。这样会明显的提高整个流处理框架的处理性能并极大地减小***资源开销。
在一种可能的实施例方式中,参见图3,图3展示了每个block内LSM Tree实现过程。以流作业写入为例,在每次到达的checkPoint时,Table storage机制会产生一次提交(commit),包含以下信息:
步骤S1:生成当前数据文件存储模块中table的在version目录下的一个文件version-a之类的按照随机字典序增长的版本文件。
步骤S2:版本文件关联着schema目录下的表结构文件,如果这次提交有表结构字段的改动,schema目录下面会会生成新的version-a之类的按照随机字典序增长的模式文件用于被版本文件关联。如果没有表结构字段变更,那么版本文件关联之前的模式文件。
步骤S3:版本文件同时关联着meta目录下的meta-list列表文件,meta-list列表文件,文件中包含了本次commit新增了哪些meta文件、删除了哪些meta文件。
步骤S4:每个meta文件中记录了产生了segment目录下block目录下哪些数据文件、删除了哪些数据文件,以及每个数据文件所包含记录的主键范围、每个字段的min/max/count等统计信息。
步骤S5:每个数据文件则包含了按主键排好序的、列存格式的记录的LSM Tree的数据结构文件。随着数据更新使得数据文件变大,这时候需要把一个数据文件拆分到多个数据文件。与此同时,Table Store会异步地触发compact合并线程来消除主键范围重叠带来的多个数据结构文件开销。合并过程中可能会减少数据文件。
进一步的,当数据文件存储模块中table的数据达到TB量级甚至PB量级时,这种量级的数据文件自身的元数据就非常大。表存储机制通过分层的手段支持meta的增量更新,从而实现文件元数据的更新。表存储机制通过这种分层结构来支持大规模数据存储,同时通过commit级别来实现ACID事务语义。
本实施例中,虽然没有像Apache Hudi那样定义额外的索引,但是得益于meta的管理和列存格式,另外在ORC/Parquet格式中,文件的尾部记录了稀疏索引以及每个segment的统计信息和offset。因此数据在有Predicate PushDown(谓词下推)filter时,可以根据下述信息做如下过滤:1)读取meta:根据文件的min/max/bloom filter约束,分区,执行分区和字段的约束条件,淘汰多余的文件。2)读取block文件footer:根据footer的min/max/count以及查询的其他过滤器约束,过滤不需要读取的文件部分。过滤器以插件的形式提供给用户,可自定义复杂的约束逻辑。3)读取剩下与文件以及其中的block。这些过滤机制都可以大大提高表存储检索的效率。
请参阅图4,图4为本发明提供的一种流批一体的大数据存储方法流程图,如图4所示,一种流批一体的大数据存储方法,应用于流批一体的大数据存储***,所述流批一体的大数据存储***包括内存表、数据文件存储模块和操作记录存储模块,所述方法包括:
步骤S100:在所述内存表满足预设刷盘条件时,对所述内存表中的流式数据按键值和序列号进行排序合并,并将排序后的流式数据写入所述数据文件存储模块中,所述流式数据包括键、值和序列号;
需要说明的是,本实施例方法的执行主体可以是具有数据处理、网络通信及程序运行功能的计算机终端设备,例如:电脑、平板电脑等;也可以是具有相同相似功能的服务器设备,还可以是具有相似功能的云服务器,本实施例对此不做限制。为了便于理解,本实施例及下述各实施例将以服务器设备为例进行说明。
在具体实现中,首先在内存中维护Memory Table,数据直接写入Memory Table,每条数据都有一个Sequence Number。对于相同的key,最大Sequence Number对应的数据将会覆盖小的Sequence Number的数据。当Memory Table已满或者刷盘间隔时间已到,即执行刷盘,按key加Sequence Number进行排序,合并重复的key,通过异步线程,使用用户知道的数据格式将数据写入LSM Tree相应的segment目录下的block目录下的数据文件中。
步骤S200:所述数据文件存储模块基于所述排序后的流式数据生成数据文件变更第一meta-list列表,并将本次写入记录存储至所述第一meta-list列表中;
在具体实现中,接下来生成新的meta目录下面的meta-list目录,记录提交信息,包括删除文件和新增文件。
步骤S300:所述数据文件存储模块基于所述排序后的流式数据生成第一version快照文件,并将所述第一version快照文件与所述本次写入记录进行关联,完成数据存储。
进一步的,所述本次写入记录包括删除文件和新增文件。
进一步的,在所述排序后的流式数据写入所述数据存储模块并对所述数据存储模块中表结构更新时,所述数据存储模块生成所述排序后的流式数据对应的表结构文件,并将所述表结构文件存储至所述数据存储模块的schema目录中,并将所述第一version快照文件与所述表结构文件关联。
在具体实现中,如果有表结构更新,更新schema,生成新的schema的表结构文件。最后是更新verison。生成新的version快照文件,关联上meta-list目录和schema表结构文件。
进一步的,上述方法还包括数据读取的步骤:
步骤S400:基于输入的数据读取指令,读取所述数据读取指令对应的第二version快照文件;
步骤S500:基于所述第二version快照文件获取所述第二meta-list列表,并生成文件清单;
步骤S600:将所述数据文件存储模块中所述文件清单对应的文件构建成LSMTree;
步骤S700:基于所述LSM Tree将所述文件清单对应的数据返回至指令输入方。
在具体实现中,读取当前的verison快照文件,获得需要读取的meta-list,根据过滤条件裁剪分区,为每个segment中的每个block,合并meta-list中的删除文件和新增文件,生成一个文件清单。遍历需要读取segment下的block,根据过滤条件过滤出block中需要读取的文件清单,生成一颗LSM Tree。最后根据LSM Tree生成Merge Iterator,遍历读取数据。
可以理解的是,本发明提供的一种流批一体的大数据存储方法与前述各实施例提供的流批一体的大数据存储***相对应,流批一体的大数据存储方法的相关技术特征可参考流批一体的大数据存储***的相关技术特征,在此不再赘述。
请参阅图5,图5为本发明实施例提供的电子设备的实施例示意图。如图5所示,本发明实施例提供了一种电子设备,包括存储器1310、处理器1320及存储在存储器1310上并可在处理器1320上运行的计算机程序1311,处理器1320执行计算机程序1311时实现以下步骤:
在所述内存表满足预设刷盘条件时,对所述内存表中的流式数据按键值和序列号进行排序合并,并将排序后的流式数据写入所述数据文件存储模块中,所述流式数据包括键、值和序列号;所述数据文件存储模块基于所述排序后的流式数据生成数据文件变更第一meta-list列表,并将本次写入记录存储至所述第一meta-list列表中;所述数据文件存储模块基于所述排序后的流式数据生成第一version快照文件,并将所述第一version快照文件与所述本次写入记录进行关联,完成数据存储。
请参阅图6,图6为本发明提供的一种计算机可读存储介质的实施例示意图。如图6所示,本实施例提供了一种计算机可读存储介质1400,其上存储有计算机程序1411,该计算机程序1411被处理器执行时实现如下步骤:
在所述内存表满足预设刷盘条件时,对所述内存表中的流式数据按键值和序列号进行排序合并,并将排序后的流式数据写入所述数据文件存储模块中,所述流式数据包括键、值和序列号;所述数据文件存储模块基于所述排序后的流式数据生成数据文件变更第一meta-list列表,并将本次写入记录存储至所述第一meta-list列表中;所述数据文件存储模块基于所述排序后的流式数据生成第一version快照文件,并将所述第一version快照文件与所述本次写入记录进行关联,完成数据存储。
本发明提供的一种流批一体的大数据存储方法、***、电子设备及存储介质,***包括内存表、数据文件存储模块和操作记录存储模块;所述内存表,用于对输入的流式数据以键值对的方式进行缓存,并对所述流式数据进行键过滤,将过滤后的流式数据写入所述文件存储模块;所述数据文件存储模块,用于以数据文件存储形式,基于LSM Tree数据结构,对所述过滤后的流式数据进行CURD操作;所述操作记录存储模块,用于以不可变更序列存储所述数据文件存储模块中表的操作记录。本发明通过内存表对流式数据进行缓存,并在数据写入文件存储模块前进行键过滤,从而对流式数据进行去重,同时文件存储模块以LSM Tree结构进行存储,实现流式数据的增加、更新、删除,支持数据的全量批次读取,同时基于操作记录存储模块对文件存储模块中表的操作记录进行存储,更便于与上述文件存储模块结合实现流式数据的变更数据读取,从而实现了流批一体的存储,从根本上解决了流批一体的兼容性问题,完成了实时流式数据和离线批量数据一体的动态表存储。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

Claims (10)

1.一种流批一体的大数据存储***,其特征在于,包括内存表、数据文件存储模块和操作记录存储模块;
所述内存表,用于对输入的流式数据以键值对的方式进行缓存,并对所述流式数据进行键过滤,将过滤后的流式数据写入所述文件存储模块;
所述数据文件存储模块,用于以数据文件存储形式,基于LSM Tree数据结构,对所述过滤后的流式数据进行CURD操作;
所述操作记录存储模块,用于以不可变更序列存储所述数据文件存储模块中表的操作记录。
2.根据权利要求1所述的流批一体的大数据存储***,其特征在于,所述数据文件存储模块包括数据存储目录,所述数据存储目录包括:至少一个区目录,每个区目录中至少包括一个块目录;
所述块目录,用于基于LSM Tree数据结构,对所述过滤后的流式数据进行CURD操作。
3.根据权利要求2所述的流批一体的大数据存储***,其特征在于,所述数据文件存储模块还包括元数据存储目录,所述元数据存储目录包括:schema目录、meta目录和version目录;
所述schema目录,用于存储所述过滤后的流式数据写入所述数据文件存储模块时触发提交的表结构变更的记录文件,包括表结构的增加、删除和修改记录以及表索引结构的变更记录;
所述meta目录,用于存储所述过滤后的流式数据写入所述数据文件存储模块时触发提交的数据文件变更meta-list列表;
所述version目录,用于存储所述过滤后的流式数据写入所述数据文件存储模块时触发提交的版本快照文件,所述版本快照文件包括所述schema目录中的表结构文件和所述meta目录中的变更meta-list列表。
4.根据权利要求1所述的流批一体的大数据存储***,其特征在于,所述操作记录存储模块包括至少一个分区目录,每个分区目录中包括至少一个消息文件;
所述消息文件,用于以不可变更序列存储所述数据文件存储模块中表的操作记录。
5.一种流批一体的大数据存储方法,其特征在于,应用于流批一体的大数据存储***,所述流批一体的大数据存储***包括内存表、数据文件存储模块和操作记录存储模块,所述方法包括:
在所述内存表满足预设刷盘条件时,对所述内存表中的流式数据按键值和序列号进行排序合并,并将排序后的流式数据写入所述数据文件存储模块中,所述流式数据包括键、值和序列号;
所述数据文件存储模块基于所述排序后的流式数据生成数据文件变更第一meta-list列表,并将本次写入记录存储至所述第一meta-list列表中;
所述数据文件存储模块基于所述排序后的流式数据生成第一version快照文件,并将所述第一version快照文件与所述本次写入记录进行关联,完成数据存储。
6.根据权利要求5所述的流批一体的大数据存储方法,其特征在于,在所述排序后的流式数据写入所述数据存储模块并对所述数据存储模块中表结构更新时,所述数据存储模块生成所述排序后的流式数据对应的表结构文件,并将所述表结构文件存储至所述数据存储模块的schema目录中,并将所述第一version快照文件与所述表结构文件关联。
7.根据权利要求6所述的流批一体的大数据存储方法,其特征在于,所述本次写入记录包括删除文件和新增文件。
8.根据权利要求5所述的流批一体的大数据存储方法,其特征在于,所述方法还包括:
基于输入的数据读取指令,读取所述数据读取指令对应的第二version快照文件;
基于所述第二version快照文件获取所述第二meta-list列表,并生成文件清单;
将所述数据文件存储模块中所述文件清单对应的文件构建成LSM Tree;
基于所述LSM Tree将所述文件清单对应的数据返回至指令输入方。
9.一种电子设备,其特征在于,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现如权利要求5-8任一项所述的流批一体的大数据存储方法的步骤。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现如权利要求5-8任一项所述的流批一体的大数据存储方法的步骤。
CN202310836016.5A 2023-07-08 2023-07-08 一种流批一体的大数据存储方法、***、电子设备及存储介质 Pending CN117033322A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310836016.5A CN117033322A (zh) 2023-07-08 2023-07-08 一种流批一体的大数据存储方法、***、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310836016.5A CN117033322A (zh) 2023-07-08 2023-07-08 一种流批一体的大数据存储方法、***、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117033322A true CN117033322A (zh) 2023-11-10

Family

ID=88634383

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310836016.5A Pending CN117033322A (zh) 2023-07-08 2023-07-08 一种流批一体的大数据存储方法、***、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117033322A (zh)

Similar Documents

Publication Publication Date Title
CN112534396B (zh) 数据库***中的日记表
US10963456B2 (en) Querying of materialized views for time-series database analytics
US11182356B2 (en) Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems
US10592488B2 (en) Application-centric object interfaces
EP2901323B1 (en) Policy driven data placement and information lifecycle management
Santos et al. Real-time data warehouse loading methodology
RU2665212C2 (ru) Система обработки событий
US9411866B2 (en) Replication mechanisms for database environments
EP2270691B1 (en) Computer-implemented method for operating a database and corresponding computer system
US20020165724A1 (en) Method and system for propagating data changes through data objects
US20130226959A1 (en) Method of Storing and Accessing Data in a Database System
EP2270692A1 (en) Lifecycle-based horizontal partitioning
CN106716409A (zh) 基于查询需求从行存储数据库自适应地构建和更新列存储数据库的方法和***
US10990571B1 (en) Online reordering of database table columns
US10909091B1 (en) On-demand data schema modifications
Schaffner et al. A hybrid row-column OLTP database architecture for operational reporting
US20230098227A1 (en) Change control and version management of data
US11182260B1 (en) Avoiding recovery log archive access in database accelerator environments
CN110096509A (zh) 大数据环境下实现历史数据拉链表存储建模处理的***及方法
Durner et al. Crystal: a unified cache storage system for analytical databases
Santos et al. Optimizing data warehouse loading procedures for enabling useful-time data warehousing
US11921704B2 (en) Version control interface for accessing data lakes
CN117033322A (zh) 一种流批一体的大数据存储方法、***、电子设备及存储介质
Schönig Mastering PostgreSQL 11: Expert techniques to build scalable, reliable, and fault-tolerant database applications
US20240095246A1 (en) Data query method and apparatus based on doris, storage medium and device

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