CN118152357A - 数据湖的数据存储方法及装置、存储介质及电子设备 - Google Patents
数据湖的数据存储方法及装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN118152357A CN118152357A CN202410227305.XA CN202410227305A CN118152357A CN 118152357 A CN118152357 A CN 118152357A CN 202410227305 A CN202410227305 A CN 202410227305A CN 118152357 A CN118152357 A CN 118152357A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- operation identifier
- target
- determining
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 135
- 238000013500 data storage Methods 0.000 title claims abstract description 34
- 238000012217 deletion Methods 0.000 claims abstract description 144
- 230000037430 deletion Effects 0.000 claims abstract description 144
- 238000012986 modification Methods 0.000 claims abstract description 20
- 230000004048 modification Effects 0.000 claims abstract description 20
- 238000003780 insertion Methods 0.000 claims description 14
- 230000037431 insertion Effects 0.000 claims description 14
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000003321 amplification Effects 0.000 abstract description 8
- 238000003199 nucleic acid amplification method Methods 0.000 abstract description 8
- 238000012545 processing Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 13
- 238000005192 partition Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000007405 data analysis Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据湖的数据存储方法及装置、存储介质及电子设备,该方法包括:当接收到数据操作请求时,确定目标操作标识;确定目标操作类型;若目标操作类型表征数据修改操作,则确定第一数据主键和其对应的更新数据;在主键索引文件中,确定第一操作标识;确定第一删除位图文件;对第一删除位图文件进行更新,以标记第一操作标识对应的文件数据已被删除;将主键索引文件中,第一数据主键对应的操作标识修改为目标操作标识;确定第一数据文件,并将目标操作标识、第一数据主键和更新数据写入第一数据文件,并进行本地存储。应用本发明的方法,无需对分布式文件系统中的文件进行操作便可实现数据更新,可避免写放大问题,提高数据更新时效性。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种数据湖的数据存储方法及装置、存储介质及电子设备。
背景技术
在数据治理的场景中,数据湖是常用的存储工具之一。数据湖采用分布式文件系统(如HDFS或对象存储)集中存储各类数据,如结构化数据、半结构化数据、非结构化数据和二进制数据等。
流式数据湖是数据湖场景中常见的实际应用,流式数据湖中的结构化数据支持流式数据更新。目前流式数据湖的数据存储方式,对于数据的操作一般是分批对文件进行数据处理。具体的,对数据的操作请求进行积攒,当积攒的操作达到一定数量后,将积攒的操作请求视为一个批次,基于该批次的操作请求统一对分布式文件系统中相应的原文件进行修改,执行相应的写入、删除等操作,实现数据更新。
在实际的应用场景中,数据湖的数据操作十分频繁。基于现有方式,数据的更新需对分布式文件系统中的文件进行重写,需进行大量数据删除和写入操作,存在写放大的问题。其次,采用攒批写入的方式进行数据存储,更新请求需在其对应批次的处理过程结束后才能完成更新响应,数据更新具有一定的延迟性。
发明内容
有鉴于此,本发明实施例提供了一种数据湖的数据存储方法,以解决现有的数据存储方式,需对分布式文件系统中的文件进行攒批重写,存在写放大,且数据更新具有一定延迟性的问题。
本发明实施例还提供了一种数据湖的数据存储装置,用以保证上述方法实际中的实现及应用。
为实现上述目的,本发明实施例提供如下技术方案:
一种数据湖的数据存储方法,所述方法应用于数据湖的计算节点,所述方法包括:
当接收到数据操作请求时,确定所述数据操作请求对应的目标操作标识;所述目标操作标识为基于预设的递增编号规则,对所述数据操作请求进行编号处理所得到的编号;
确定所述数据操作请求对应的目标操作类型;
若所述目标操作类型表征数据修改操作,则确定所述目标操作类型对应的第一数据主键和所述第一数据主键对应的更新数据;
在预先构建的主键索引文件中,确定第一操作标识;所述主键索引文件中包含已存储的各个数据的数据主键对应的操作标识;所述第一操作标识为所述第一数据主键对应的操作标识;
确定所述第一操作标识对应的第一删除位图文件;所述第一删除位图文件为记录所述第一操作标识对应的数据文件中数据删除情况的文件;
对所述第一删除位图文件进行更新,以记录在所述第一操作标识对应的数据文件中,所述第一操作标识对应的文件数据已被删除;
将所述主键索引文件中,所述第一数据主键对应的操作标识修改为所述目标操作标识;
确定所述目标操作标识对应的第一数据文件,并将所述目标操作标识、所述第一数据主键和所述更新数据作为一组文件数据,写入所述第一数据文件,对所述第一数据文件进行本地存储,以通过所述计算节点中存储的数据和所述数据湖的分布式文件系统中存储的数据提供数据服务。
上述的方法,可选的,所述确定所述第一操作标识对应的第一删除位图文件,包括:
确定存储文件集合;所述存储文件集合包括多个存储文件,所述多个存储文件包括当前本地存储的各个数据文件以及各个操作标识文件;所述各个操作标识文件与所述数据湖的分布式文件系统中存储的各个数据文件一一对应;每个所述操作标识文件为记录其对应数据文件中所有文件数据所对应的操作标识的文件;
确定每个所述存储文件对应的范围过滤器;每个所述存储文件对应的范围过滤器为基于该存储文件中存储的操作标识所生成的过滤器;
通过各个所述范围过滤器对所述第一操作标识进行索引,得到所述第一操作标识对应的目标存储文件;
确定所述目标存储文件对应的目标删除位图文件,并将所述目标删除位图文件作为所述第一删除位图文件。
上述的方法,可选的,所述确定所述目标存储文件对应的目标删除位图文件,包括:
判断在当前时间窗口内是否已创建所述目标存储文件关联的删除位图文件;
若在所述当前时间窗口内已创建所述目标存储文件关联的删除位图文件,则获取在所述当前时间窗口内创建的所述目标存储文件关联的删除位图文件,并将该删除位图文件作为所述目标删除位图文件;
若在所述当前时间窗口内未创建所述目标存储文件关联的删除位图文件,则创建所述目标存储文件对应的初始化位图文件,并将该初始化位图文件作为所述目标删除位图文件。
上述的方法,可选的,所述对所述第一删除位图文件进行更新的过程,包括:
基于所述目标存储文件确定所述第一操作标识对应的文件数据位置;
在所述第一删除位图文件中,确定所述文件数据位置对应的位图数据位置;
将所述第一删除位图文件中,所述位图数据位置对应的数据值修改为表征数据已删除的预定数值。
上述的方法,可选的,还包括:
若所述目标操作类型表征数据插入操作,则确定所述目标操作类型对应的第二数据主键和所述第二数据主键对应的插入数据;
将所述目标操作标识作为所述第二数据主键对应的操作标识,以建立所述目标操作标识和所述第二数据主键的索引关系;
在所述主键索引文件中,增加所述第二数据主键对应的操作标识;
确定所述目标操作标识对应的第二数据文件,并将所述目标操作标识、所述第二数据主键和所述插入数据作为一组文件数据,写入所述第二数据文件,对所述第二数据文件进行本地存储。
上述的方法,可选的,还包括:
若所述目标操作类型表征数据删除操作,则确定所述目标操作类型对应的第三数据主键;
在所述主键索引文件中,确定第二操作标识;所述第二操作标识为所述第三数据主键对应的操作标识;
确定所述第二操作标识对应的第二删除位图文件;
对所述第二删除位图文件进行更新,以记录在所述第二操作标识对应的数据文件中,所述第二操作标识对应的文件数据已被删除;
将所述主键索引文件中所述第三数据主键对应的操作标识删除。
上述的方法,可选的,还包括:
监测本地存储的数据文件的文件数量是否超过预设的数量阈值;
在所述文件数量超过所述数量阈值的情况下,确定本地文件集合;所述本地文件集合包括当前本地存储的所有数据文件;
生成所述本地文件集合对应的操作标识文件,对该操作标识文件进行本地存储,该操作标识文件记录有所述本地文件集合中每个数据文件的所有文件数据所对应的操作标识;
确定所述本地文件集合对应的删除位图文件集合;所述删除位图文件集合包括当前本地存储的各个数据文件对应的删除位图文件;
对所述删除位图文件集合进行文件合并,得到合并删除位图文件,对该合并删除位图文件进行本地存储;
对所述本地文件集合进行文件合并,得到合并数据文件,将所述合并数据文件上传至所述数据湖的分布式文件系统。
一种数据湖的数据存储装置,所述装置应用于数据湖的计算节点,所述装置包括:
第一确定单元,用于当接收到数据操作请求时,确定所述数据操作请求对应的目标操作标识;所述目标操作标识为基于预设的递增编号规则,对所述数据操作请求进行编号处理所得到的编号;
第二确定单元,用于确定所述数据操作请求对应的目标操作类型;
第三确定单元,用于若所述目标操作类型表征数据修改操作,则确定所述目标操作类型对应的第一数据主键和所述第一数据主键对应的更新数据;
第四确定单元,用于在预先构建的主键索引文件中,确定第一操作标识;所述主键索引文件中包含已存储的各个数据的数据主键对应的操作标识;所述第一操作标识为所述第一数据主键对应的操作标识;
第五确定单元,用于确定所述第一操作标识对应的第一删除位图文件;所述第一删除位图文件为记录所述第一操作标识对应的数据文件中数据删除情况的文件;
更新单元,用于对所述第一删除位图文件进行更新,以记录在所述第一操作标识对应的数据文件中,所述第一操作标识对应的文件数据已被删除;
修改单元,用于将所述主键索引文件中,所述第一数据主键对应的操作标识修改为所述目标操作标识;
存储单元,用于确定所述目标操作标识对应的第一数据文件,并将所述目标操作标识、所述第一数据主键和所述更新数据作为一组文件数据,写入所述第一数据文件,对所述第一数据文件进行本地存储,以通过所述计算节点中存储的数据和所述数据湖的分布式文件系统中存储的数据提供数据服务。
一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行如上述的数据湖的数据存储方法。
一种电子设备,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行如上述的数据湖的数据存储方法。
基于上述本发明实施例提供的一种数据湖的数据存储方法,当数据湖的计算节点接收到数据操作请求时,确定数据操作请求对应的目标操作标识;目标操作标识为基于预设的递增编号规则,对数据操作请求进行编号处理所得到的编号;确定数据操作请求对应的目标操作类型;若目标操作类型表征数据修改操作,则确定目标操作类型对应的第一数据主键和第一数据主键对应的更新数据;在预先构建的主键索引文件中,确定第一操作标识;主键索引文件中包含已存储的各个数据的数据主键对应的操作标识;第一操作标识为第一数据主键对应的操作标识;确定第一操作标识对应的第一删除位图文件;第一删除位图文件为记录第一操作标识对应的数据文件中数据删除情况的文件;对第一删除位图文件进行更新,以记录在第一操作标识对应的数据文件中,第一操作标识对应的文件数据已被删除;将主键索引文件中,第一数据主键对应的操作标识修改为目标操作标识;确定目标操作标识对应的第一数据文件,并将目标操作标识、第一数据主键和更新数据作为一组文件数据,写入第一数据文件,对第一数据文件进行本地存储,以通过计算节点中存储的数据和数据湖的分布式文件系统中存储的数据提供数据服务。应用本发明实施例提供的方法,当需要对数据湖中的数据进行修改时,可以将更新的数据在计算节点进行本地存储,对主键索引进行修改,以删除位图文件记录原数据已被删除,结合计算节点存储的数据和分布式文件系统存储的数据提供数据服务,当查询数据时,可从分布式文件系统和计算节点获取所需的数据文件,并利用相应的删除位图文件对已删除的数据进行过滤,便可获得实时数据。在数据存储过程中,无需对分布式文件系统存储的文件进行重写,可减少读写操作,避免写放大的问题。其次,当计算节点完成数据存储后,对于数据服务而言已完成数据更新,可实现实时的数据更新,改善数据更新的延迟性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种数据湖的数据存储方法的方法流程图;
图2为本发明实施例提供的一种数据湖的数据存储方法的又一方法流程图;
图3为本发明实施例提供的一种数据湖的数据存储方法的另一方法流程图;
图4为本发明实施例提供的一种数据湖的数据存储装置的结构示意图;
图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明实施例提供了一种数据湖的数据存储方法,所述方法应用于数据湖的计算节点,该方法的执行主体可以为计算节点的服务器,所述方法的方法流程图如图1所示,包括:
S101:当接收到数据操作请求时,确定所述数据操作请求对应的目标操作标识;所述目标操作标识为基于预设的递增编号规则,对所述数据操作请求进行编号处理所得到的编号;
本发明实施例提供的方法中,结合数据湖的计算节点中存储的数据和数据湖的分布式文件系统中存储的数据提供数据服务。原始的数据文件在进行相应的索引处理后,可以直接上传至分布式文件系统,在数据湖的运行过程中,当需要对数据湖中的数据进行更新时,则可以由计算节点进行数据存储。本发明实施例中,数据文件以“操作标识-数据主键-业务实际数据”的形式存储文件数据。
本发明实施例提供的方法中,计算节点可以通过消费消息服务器中传递的请求,接收针对数据湖的数据操作请求。本发明实施例中的数据操作请求是针对流式数据湖中结构化数据的操作请求。消息服务器在接收到每个数据操作请求时,可按照递增编号的编号规则,对数据操作请求进行编号,生成数据操作请求对应的编号,即消息服务器中的各个数据操作请求的编号是按照请求产生的时间递增的。数据操作请求用于指示需要进行的数据操作,其中携带有用于数据操作的相关信息,本发明实施例中利用数据主键与实际的文件数据建立索引。例如若是请求进行数据修改,数据操作请求中则会携带需要修改的文件数据所对应的数据主键,以及修改后的新数据。
本发明提供的方法中,当计算节点接收到当前的数据操作请求时,可将预先针对该数据操作请求生成的编号作为该数据操作请求对应的目标操作标识。
S102:确定所述数据操作请求对应的目标操作类型;
本发明实施例提供的方法中,如果数据操作请求中携带有表征其请求的数据操作类型的请求标志,计算节点可通过数据操作请求中携带的请求标志确定该数据操作请求对应的目标操作类型,目标操作类型即该数据操作请求表征需执行的数据操作的类型,例如数据修改操作、数据插入操作或数据删除操作等。如果数据操作请求中没有携带请求标识,可以根据其携带的输入数据分析其所对应的操作类型,例如数据操作请求中携带数据主键及其对应数据,计算节点确认当前的索引中不存在该数据主键,故可将该数据操作请求视为请求进行数据插入操作的请求。
S103:若所述目标操作类型表征数据修改操作,则确定所述目标操作类型对应的第一数据主键和所述第一数据主键对应的更新数据;
本发明实施例提供的方法中,若目标操作类型为数据修改操作,即表征需要将数据操作请求中指示的文件数据修改为指定的新数据。通过对数据操作请求进行数据解析可获得第一数据主键和第一数据主键对应的更新数据。第一数据主键即为数据操作请求中携带的数据主键,该更新数据亦为数据操作请求中携带的输入数据,当前需实现的数据操作即为将第一数据主键所对应的文件数据修改为该更新数据。
S104:在预先构建的主键索引文件中,确定第一操作标识;所述主键索引文件中包含已存储的各个数据的数据主键对应的操作标识;所述第一操作标识为所述第一数据主键对应的操作标识;
本发明实施例提供的方法中,计算节点中预先构建有主键索引文件,该主键索引文件用于记录数据湖中已存储的各个数据的数据主键所对应的操作标识,也可以理解为记录的是各个数据主键和各个操作标识的索引关系。可以理解的是,数据湖中的数据按照本发明实施例提供的方法进行存储时,在存储每个数据主键对应的文件数据时,是通过相应的数据操作实现的,主键索引文件中记录了数据主键与针对该数据主键的最新数据插入请求/数据修改请求所对应的操作标识的索引关系。
本发明实施例提供的方法中,计算节点可从主键索引文件中,找到第一数据主键对应的操作标识,并将该操作标识作为第一操作标识。
S105:确定所述第一操作标识对应的第一删除位图文件;所述第一删除位图文件为记录所述第一操作标识对应的数据文件中数据删除情况的文件;
本发明实施例提供的方法中,计算节点针对数据湖中的数据文件,包括存储在计算节点的数据文件和分布式文件系统中的数据文件,当出现数据删除时,均通过相应的删除位图文件记录其中的数据删除情况。每个数据文件对应的删除位图文件中标记了相应的数据文件中哪些位置的数据实际上已删除了。具体的,删除位图文件可以是列式存储的二进制文件,可以理解是一列二进制数值,每一行的数字表征数据文件中该行文件数据的状态,即是否被删除。
本发明实施例提供的方法中,计算节点可以通过第一操作标识确定其对应的数据文件,继而确定该数据文件所对应的删除位图文件,将该数据文件对应的删除位图文件作为第一删除位图文件。
S106:对所述第一删除位图文件进行更新,以记录在所述第一操作标识对应的数据文件中,所述第一操作标识对应的文件数据已被删除;
本发明实施例提供的方法中,计算节点可根据第一操作标识所对应的文件数据在数据文件中所处的位置,对第一删除位图文件中的数据进行更新,以标记相应的文件数据已被删除。
S107:将所述主键索引文件中,所述第一数据主键对应的操作标识修改为所述目标操作标识;
本发明实施例提供的方法中,计算节点可将主键索引文件中第一数据主键对应的操作标识由当前的操作标识变更为目标操作标识,也就是将目标操作标识作为第一数据主键对应的操作标识。
S108:确定所述目标操作标识对应的第一数据文件,并将所述目标操作标识、所述第一数据主键和所述更新数据作为一组文件数据,写入所述第一数据文件,对所述第一数据文件进行本地存储,以通过所述计算节点中存储的数据和所述数据湖的分布式文件系统中存储的数据提供数据服务。
本发明实施例提供的方法中,计算节点可根据预先设定的存储策略,确定目标操作标识对应的第一数据文件,第一数据文件为用于存储目标操作标识对应的文件数据的数据文件,第一数据文件可以是一个已创建的数据文件,也可以是一个新建的数据文件。例如可预先设置一个数据文件中存储多少组文件数据,在进行数据存储时,如果最新创建的数据文件的文件数据已达到阈值,那么则新建一个数据文件作为第一数据文件,如果最新创建的数据文件的文件数据未达到阈值,则将该数据文件作为第一数据文件。
计算节点可将目标操作标识、第一数据主键、更新数据作为一组文件数据,将其存储至第一数据文件中,并对第一数据文件进行本地存储。
本发明实施例提供的方法中,当需要对外提供数据服务时,通过计算节点中存储的数据和分布式文件系统中存储的数据共同提供数据服务。例如需要进行数据查询,可根据数据文件的存储情况,从计算节点和分布式文件系统中获取所需的数据文件,并通过计算节点中存储的删除位图文件,对标记删除的文件数据进行过滤,继而得到最终的数据。具体的,可以通过虚拟的分布式存储系统实现数据服务,将分布式文件系统和计算节点存储的文件挂载到虚拟的分布式存储系统中,以此实现数据的访问。
基于本发明实施例提供的方法,当计算节点接收到数据操作请求时,确定数据操作请求对应的目标操作标识;确定数据操作请求对应的目标操作类型;若目标操作类型表征数据修改操作,则确定目标操作类型对应的第一数据主键和第一数据主键对应的更新数据;在预先构建的主键索引文件中,确定第一操作标识;确定第一操作标识对应的第一删除位图文件;对第一删除位图文件进行更新,以记录在第一操作标识对应的数据文件中,第一操作标识对应的文件数据已被删除;将主键索引文件中,第一数据主键对应的操作标识修改为目标操作标识;确定目标操作标识对应的第一数据文件,并将目标操作标识、第一数据主键和更新数据作为一组文件数据,写入第一数据文件,对第一数据文件进行本地存储,以通过计算节点中存储的数据和数据湖的分布式文件系统中存储的数据提供数据服务。应用本发明实施例提供的方法,当需要对数据湖中的数据进行修改时,可以将更新的数据在计算节点进行本地存储,对主键索引进行修改,以删除位图文件记录原数据已被删除,结合计算节点存储的数据和分布式文件系统存储的数据提供数据服务,当查询数据时,可从分布式文件系统和计算节点获取所需的数据文件,并利用相应的删除位图文件对已删除的数据进行过滤,便可获得实时数据。在数据存储过程中,无需对分布式文件系统存储的文件进行重写,可减少读写操作,避免写放大的问题。其次,当计算节点完成数据存储后,对于数据服务而言已完成数据更新,可实现实时的数据更新,改善数据更新的延迟性。
在图1所示方法的基础上,本发明实施例提供的方法中,步骤S105中提及的确定所述第一操作标识对应的第一删除位图文件的过程,包括:
确定存储文件集合;所述存储文件集合包括多个存储文件,所述多个存储文件包括当前本地存储的各个数据文件以及各个操作标识文件;所述各个操作标识文件与所述数据湖的分布式文件系统中存储的各个数据文件一一对应;每个所述操作标识文件为记录其对应数据文件中所有文件数据所对应的操作标识的文件;
本发明实施例提供的方法中,计算节点中存储有未上传至分布式文件系统的数据文件,以及已上传至分布式文件系统的数据文件所对应的操作标识文件。通过上述文件确定第一操作标识对应的第一删除位图文件。
确定每个所述存储文件对应的范围过滤器;每个所述存储文件对应的范围过滤器为基于该存储文件中存储的操作标识所生成的过滤器;
本发明实施例提供的方法中,计算节点对于每个存储文件可预先构建范围过滤器,范围过滤器用于统计该存储文件中操作标识的最大值和最小值。
通过各个所述范围过滤器对所述第一操作标识进行索引,得到所述第一操作标识对应的目标存储文件;
本发明实施例提供的方法中,计算节点可基于各个范围过滤器,利用二分查找法,找到第一操作标识所匹配的范围过滤器,由此在各个存储文件中索引到第一操作标识对应的目标存储文件。
确定所述目标存储文件对应的目标删除位图文件,并将所述目标删除位图文件作为所述第一删除位图文件。
本发明实施例提供的方法中,计算节点可根据目标存储文件确定其对应的删除位图文件,并将该删除位图文件作为第一删除位图文件。
基于本发明实施例提供的方法,可通过范围过滤器快速定位操作标识对应的存储文件,有利于提高数据处理速度。
在上述实施例提供的方法的基础上,本发明实施例提供的方法中,所述确定所述目标存储文件对应的目标删除位图文件的过程,包括:
判断在当前时间窗口内是否已创建所述目标存储文件关联的删除位图文件;
本发明实施例提供的方法中,计算节点划分时间窗口建立删除位图文件,即针对同一个数据文件,在每个时间窗口内,都会建立一个删除位图文件,用于记录在该时间窗口内发生的删除操作。
本发明实施例提供的方法中,计算节点可通过当前时间窗口内创建的删除位图文件与存储文件的关联关系,判断在当前时间窗口内是否已创建了目标存储文件所关联的删除位图文件。
若在所述当前时间窗口内已创建所述目标存储文件关联的删除位图文件,则获取在所述当前时间窗口内创建的所述目标存储文件关联的删除位图文件,并将该删除位图文件作为所述目标删除位图文件;
本发明实施例提供的方法中,如果在当前时间窗口内已创建过目标存储文件关联的删除位图文件,则直接将该删除位图文件作为目标删除位图文件。
若在所述当前时间窗口内未创建所述目标存储文件关联的删除位图文件,则创建所述目标存储文件对应的初始化位图文件,并将该初始化位图文件作为所述目标删除位图文件。
本发明实施例提供的方法中,如果在当前时间窗口内,没有创建过与目标存储文件相关联的删除位图文件,则建立初始化位图文件,初始化位图文件可基于目标存储文件最新关联的删除位图文件(例如上一个时间窗口内的删除位图文件)建立。
基于本发明实施例提供的方法,计算节点划分时间窗口建立删除位图文件,基于各个时间窗口的删除位图文件,可实现数据的增量查询和多版本数据查询,有利于满足数据服务需求。
在上述实施例提供的方法的基础上,本发明实施例提供的方法中,步骤S106中提及的对所述第一删除位图文件进行更新的过程,包括:
基于所述目标存储文件确定所述第一操作标识对应的文件数据位置;
本发明实施例提供的方法中,计算节点可在目标存储文件中,确定第一操作标识对应的文件数据在文件中所处的位置,例如第几行,将该位置作为第一操作标识对应的文件数据位置。
在所述第一删除位图文件中,确定所述文件数据位置对应的位图数据位置;
本发明实施例提供的方法中,计算节点在第一删除位图文件中查找表征文件数据位置的位图数据位置,该位图数据位置对应的数据值表征该文件数据位置的文件数据是否被删除的状态。例如文件数据位置为第7行,则将第一删除位图文件中第7行的位置作为文件数据位置对应的位图数据位置。
将所述第一删除位图文件中,所述位图数据位置对应的数据值修改为表征数据已删除的预定数值。
本发明实施例提供的方法中,计算节点可将第一删除位图文件中,位图数据位置的数据值修改为一个预定数值,该预定数值表征数据已被删除,以此标记目标存储文件中,第一操作标识对应的文件数据已被删除。例如一个数据文件中有十行文件数据。该数据文件对应的删除位图文件中对应有十行二进制数,数值1表征数据被删除,数值0表征数据未被删除,初始状态下每行的二进制数均为数值0。当请求将该数据文件中的第7行文件数据删除时,则将其对应的删除位图文件中的第7行的二进制数由0修改为1,以此标记数据已被删除。
在图1所示方法的基础上,参考图2所示流程图,本发明实施例提供的方法中,还包括:
S201:若所述目标操作类型表征数据插入操作,则确定所述目标操作类型对应的第二数据主键和所述第二数据主键对应的插入数据;
本发明实施例提供的方法中,若目标操作类型表征数据插入操作,则通过请求数据解析获取第二数据主键和第二数据主键对应的插入数据。第二数据主键即为数据操作请求中携带的数据主键,插入数据亦为数据操作请求中携带的输入数据,当前需执行的数据操作即为将第二数据主键及其对应的插入数据存储到数据湖中。
S202:将所述目标操作标识作为所述第二数据主键对应的操作标识,以建立所述目标操作标识和所述第二数据主键的索引关系;
S203:在所述主键索引文件中,增加所述第二数据主键对应的操作标识;
本发明实施例提供的方法中,计算节点将目标操作标识作为第二数据主键所对应的操作标识,以此建立两者索引关系,并将该索引关系添加到主键索引文件中。
S204:确定所述目标操作标识对应的第二数据文件,并将所述目标操作标识、所述第二数据主键和所述插入数据作为一组文件数据,写入所述第二数据文件,对所述第二数据文件进行本地存储。
本发明实施例提供的方法中,计算节点可按照存储策略,确定用于存储当前数据的数据文件,即第二数据文件。将目标操作标识、第二数据主键及其对应的插入数据存储至第二数据文件中,实现数据的本地存储。确定第二数据文件的方式与前文实施例中确定第一数据文件的方式相同,可参见前文实施例中的说明,在此不再赘述。
基于本发明实施例提供的方法,在进行数据插入操作时,可通过计算节点进行数据存储,无需对分布式文件系统中的文件进行操作,可减少读写操作,实时完成数据更新。
在图1所示方法的基础上,本发明实施例提供的方法中,还包括:
若所述目标操作类型表征数据删除操作,则确定所述目标操作类型对应的第三数据主键;
本发明实施例提供的方法中,若目标操作类型表征数据删除操作,计算节点通过请求数据解析可获取第三数据主键(即数据操作请求中携带的数据主键),即当前请求的数据操作为删除第三数据主键所对应的文件数据。
在所述主键索引文件中,确定第二操作标识;所述第二操作标识为所述第三数据主键对应的操作标识;
本发明实施例提供的方法中,计算节点可在主键索引文件中,找到第三数据主键对应的操作标识,并将该操作标识作为第二操作标识。
确定所述第二操作标识对应的第二删除位图文件;
本发明实施例提供的方法中,计算节点通过第二操作标识可定位其对应的数据文件,继而确定该数据文件所对应的删除位图文件,并将该删除位图文件作为第二删除位图文件。
对所述第二删除位图文件进行更新,以记录在所述第二操作标识对应的数据文件中,所述第二操作标识对应的文件数据已被删除;
本发明实施例提供的方法中,计算节点可根据第二操作标识所对应的文件数据在数据文件中所处的位置,对第二删除位图文件中的数据进行更新,以标记相应的文件数据已被删除。
本发明实施例提供的方法中,数据修改操作包含对原数据的删除和新数据的存储,故数据删除操作所对应的部分处理过程与图1所示方法中,步骤S104~步骤S106中所描述的数据修改操作所对应的处理过程,其处理原理是相类似的,可参考前文实施例中的说明,在此不再赘述。
将所述主键索引文件中所述第三数据主键对应的操作标识删除。
本发明实施例提供的方法中,计算节点将主键索引文件中关于第三数据主键的索引内容删除。
基于本发明实施例提供的方法,在进行数据删除操作时,可通过对主键索引和删除位图文件的修改,实现数据删除,无需对分布式文件系统中的文件进行操作,可减少读写操作,实时完成数据更新。
在图1所示方法的基础上,参考图3所示流程图,本发明实施例提供的方法中,还包括:
S301:监测本地存储的数据文件的文件数量是否超过预设的数量阈值;
本发明实施例提供的方法中,可预先根据实际需求设置数量阈值,即计算节点存储数据文件的上限。计算节点可实时监测当前本地存储的数据文件的文件数量是否大于预设的数量阈值。如果未超过数量阈值,则无需进行处理。
S302:在所述文件数量超过所述数量阈值的情况下,确定本地文件集合;所述本地文件集合包括当前本地存储的所有数据文件;
本发明实施例提供的方法中,当计算节点监测到本地存储的数据文件的文件数量超过数量阈值时,可获取当前存储的所有数据文件,得到本地文件集合。
S303:生成所述本地文件集合对应的操作标识文件,对该操作标识文件进行本地存储,该操作标识文件记录有所述本地文件集合中每个数据文件的所有文件数据所对应的操作标识;
本发明实施例提供的方法中,计算节点可将本地文件集合中每个数据文件中的各个操作标识,按顺序提取出来进行存储,生成该本地文件集合对应的操作标识文件。将该操作标识文件存储到本地。
S304:确定所述本地文件集合对应的删除位图文件集合;所述删除位图文件集合包括当前本地存储的各个数据文件对应的删除位图文件;
本发明实施例提供的方法中,计算节点可根据本地文件集合中的各个数据文件,找到与各个数据文件相对应的各个删除位图文件,即记录数据文件中的数据删除情况的文件,由此得到删除位图文件集合。
S305:对所述删除位图文件集合进行文件合并,得到合并删除位图文件,对该合并删除位图文件进行本地存储;
本发明实施例提供的方法中,计算节点将删除位图文件集合中的所有删除位图文件按照相应的顺序进行合并,将合并结果作为合并删除位图文件,将该合并删除位图文件存储到本地。可以将删除位图文件集合中的各个删除位图文件删除。
S306:对所述本地文件集合进行文件合并,得到合并数据文件,将所述合并数据文件上传至所述数据湖的分布式文件系统。
本发明实施例提供的方法中,计算节点将本地文件集合中的各个数据文件按顺序进行文件合并,将合并结果作为合并数据文件,将该合并数据文件上传至分布式文件系统进行存储。将计算节点中本地文件集合的各个数据文件删除。
可以理解的是,操作标识文件中各个操作标识与合并数据文件中的各个文件数据对应的操作标识在内容和顺序上,是一一对应的,合并删除位图文件中的位图数据也是与合并数据文件中的各个文件数据一一对应的。
基于本发明实施例提供的方法,计算节点可在本地存储的数据文件达到阈值后,将数据文件进行合并,上传至分布式文件系统,并删除本地数据,以降低计算节点的数据存储压力,避免大量的修改操作所带来的读放大问题。
为了更好地说明本发明实施例提供的方法,在前文各个实施例提供的方法的基础上,结合实际的应用场景,本发明实施例提供了又一种数据湖的数据存储方法。本发明实施例提供的方法应用于对数据湖存储的结构化数据进行处理,支持流式插入和更新,并把数据保存成方便大数据计算引擎(如spark、flink、presto)读取的形式。接下来对本发明实施例提供的方案作简要说明。
本发明实施例提供的方法中,数据湖平台的整体架构主要包括消息服务器、计算节点、分布式文件系统和虚拟的分布式存储系统。
消息服务器可以基于Kafka或Pulsar等消息组件实现,消息服务器主要用于接收关于数据操作的请求。消息服务器的消息可以作为预写日志(WAL),用于在计算节点发生故障,内存中没有持久化的数据时进行重做操作。
消息服务器为分区下每一条消息生成一个递增的唯一偏移量编号offset,计算节点复用该编号作为每条记录的唯一编号(即前文实施例中的操作标识)。
消息服务器的分区使用主键或主键的一部分进行分区,以保证分区下主键的唯一性,可以使用常用的哈希分区、列表分区和范围分区。消息服务器的数据源,可以是解析后的数据库日志(例如MySQL的binlog),也可以是其他来源的数据,按照约定的数据格式发送给消息服务器。
消息服务器的每个分区对应一个计算节点,计算节点消费消息服务器的消息,进行数据表的加工存储。计算节点本地部署用于快速存储的可嵌入持久化键值存储(如RocksDB),用于保存表的索引。当需要存储数据文件时,数据文件先写到ramdisk(虚拟内存盘),虚拟内存盘中的数据达到预定阈值后,将数据按列式存储方式压缩后存储到本地磁盘,当本地磁盘的数据文件数量到达阈值后合并上传到分布式文件系统。合并文件不大于分布式文件系统一个切片的大小(例如不大于HDFS中一个block的大小)。一个数据表的ramdisk,磁盘文件都在同一个表的目录下。
分布式文件系统可以采用HDFS或者对象存储,用于保存计算节点合并后的数据文件。
虚拟的分布式存储系统,可以采用开源软件Alluxio实现,屏蔽存储的异构性(不同存储访问接口,不同地址)。Alluxio是一种虚拟的分布式存储系统,提供全局命名空间、智能多层级缓存、服务器端API翻译转换功能。可以将计算节点的数据和分布式文件系统的数据均挂载到虚拟的分布式存储系统。具体的,在Alluxio上为每张数据表建立一个目录,表目录下建立一个计算节点目录,把计算节点的表数据文件目录挂载到该目录,表目录下再建立一个分布式存储文件目录,把分布式文件系统挂载到该目录。这样计算引擎(例如Spark、Flink、Presto)通过访问Alluxio的表目录,就可以访问整个表文件。Alluxio节点既可以部署在分布式文件系统上,即采用存算一体的架构,也可以部署在计算节点上或者独立部署,即采用存算分离的架构。
接下来对计算节点数据处理过程中存储和利用的数据作简要说明。计算节点主要存储及利用的数据包括主键索引(等同于前文实施例中的主键索引文件)、数据文件、删除位图文件和合并上传分布式文件系统的数据文件的唯一id列(等同于前文实施例中提及的操作标识文件)。
主键索引:采用RocksDB存储,提供高速的key-value服务,索引文件的key为表的主键,value为消息的唯一id,唯一id复用消息服务器生成的唯一偏移量编号(即offset)。主键索引实现高效的主键冲突判定并辅助数据文件定位;
数据文件:采用列存结构存储,文件的第一列是唯一id,文件是按照唯一id排序的(即采用聚簇索引),并对唯一id生成范围过滤器(统计每个文件的最小唯一id和最大id);
数据先保存在ramdisk中,到达阈值时,刷新到磁盘,同步把RocksDB中内存数据刷新到磁盘,保证索引和数据的一致性。
由于输入数据已经持久化到了消息服务器,因此在写ramdisk前,不用生成WAL,RocksDB的WAL也可以关闭,以便提升性能。
删除位图文件:每个数据文件对应一组位图,每组位图按照文件处理时间保存(位图名中包含文件处理时间),以便于支持增量查询和时间旅行。每个新版本的删除位图文件是基于上一个版本的删除位图文件生成的。每个文件对应的删除位图文件不上传分布式文件系统,删除位图文件中第N位为1表示相应数据文件中的第N行被标记为删除。删除位图文件的数据在列存模式下,相当于是表的一列数据。更新时只刷新位图数据,对查询性能几乎零破坏,且可降低IO的开销。
合并上传分布式文件系统的数据文件的唯一id列(通常是文件第一列):计算节点在合并数据文件上传分布式文件系统时,可将合并的数据文件的唯一id列进行本地存储。计算节点在加工删除位图文件时,只需要获取被删除数据所在文件的唯一id列。
接下来对计算节点的数据处理过程作简要说明。
当计算节点从消息服务器接收到数据操作请求时,按照以下过程进行处理:
1.1:如果数据操作请求的输入数据中已经有更新或删除标志,则根据更新或删除标志做响应处理(如果输入数据是解析数据库日志的结果,一般有该标志的,可以减少一次索引查询消耗)。如果输入的数据没有更新或删除标志,那么根据输入数据主键查询RockDB索引,如果存在,则根据数据主键获取唯一id,从步骤1.2开始按需执行数据更新或删除,如果不存在数据主键,则执行插入流程(从步骤1.5开始);
1.2:通过唯一id定位数据文件,由于id顺序递增,每个文件统计了最小id和最大id,根据二分查找法,可以迅速定位数据文件;
1.3:根据唯一id定位行号,如果数据文件已经上传到了分布式文件系统中,那么只需要获取本地数据文件(本地数据文件只有唯一id这一列,即合并上传分布式文件系统的数据文件的唯一id列);
1.4:如无需支持多版本数据查询和时间旅行,直接使用行号更新删除位图文件即可。若需支持多版本数据查询和时间旅行,需要划分时间窗口(可理解为时间周期,周期可以使用开始时间或者结束时间来唯一标识),每个时间窗口内如果发生了一次或者多次删除,那么在这个时间窗口内建立一个记录该时间窗口内删除操作的删除位图,如果在本时间窗口内删除位图是首次创建,那么初始化为上个时间窗口的删除位图,如果本次是整个存储场景中的第一次删除,那么初始化为空,如果在本时间窗口内已经存在删除位图,那么就在此位图的基础上更新。
1.5:更新索引,把主键对应的新的唯一ID写入RocksDB。
1.6:把数据写入ramdisk的数据文件,第一列为唯一ID。
1.7:如果ramdisk的数据文件大小达到设置的阈值,同步把RocksDB的内存和ramdisk持久化到磁盘,数据文件按照列式存储压缩后保存到磁盘。
1.8:本地磁盘文件数量到达阈值后(合并文件不大于分布式存储系统一个切片的大小(例如不大于HDFS中一个block的大小)),进行合并,合并后通过Alluxio上传到分布式文件系统中,同时删除本地文件,在本地生成数据文件的唯一id列。在合并数据文件同时,合并与数据文件对应的删除位图文件。本地文件操作(新增,删除)没有通过Alluxio进行操作,需要同步通知Alluxio更新本表对应目录的文件信息。
接下来对关于增量查询和多版本查询的实现作简要说明。
本发明实施例提供的方法中,在每个时间窗口中创建不同的删除位图文件,用以标记数据删除情况。在每个时间窗口结束的时候,可记录该时间窗内表分区下最大唯一ID号,根据此信息可以排除在某个周期后插入的数据,根据上个周期的最大唯一ID可以排除以前周期插入的数据。结合删除位图文件可以排除本周期内被删除(因更新被删除或者直接被删除)的数据,从而实现了增量查询和多版本查询机制,可有效支撑数据湖特性。本发明实施例提供的多版本时间机制只需要保存时间窗口内的最大唯一ID和一组删除位图文件,实现代价较小。传统数据库或数据湖多版本机制是按照操作的事务实现的,而本发明实施例提供的方案的增量查询和多版本查询机制可以精确定位到时间窗口,与数据的操作是分离的,不绑定的。
本发明实施例提供的方法,单机计算节点负责计算、小文件保存和索引的保存,小文件合并后上传分布式文件系统,通过Alluxio屏蔽本方案的异构存储。把数据湖文件和索引的生成设计成了一个非分布式的单机本地事务。数据文件先保存在计算节点的内存中,内存到达阈值后,往本地磁盘刷新,刷新后的数据按照压缩的列式文件存储在本地,由于列式文件压缩率较高,生成的文件比较小,本地磁盘文件数量到达阈值后,进行合并,合并后再上传到分布式文件系统中。本发明实施例提供的方法中的删除位图文件是按时间窗口建立的一组文件,因此支持时间旅行功能和查询增量数据功能。本发明实施例提供的方法在处理数据修改时,仅在计算节点的新文件里插入一条数据,把旧文件中的被删除的记录进行标记删除,然后更新数据索引,无需修改分布式文件系统中的文件,并且不需要攒批写入,而是实时写入的,可实现低延流式写入,没有写放大问题,写入即可查询。分区下主键每条记录的递增顺序编号复用消息服务器的偏移量,减少了生成偏移量的成本。
与图1所示的一种数据湖的数据存储方法相对应的,本发明实施例还提供了一种数据湖的数据存储装置,用于对图1中所示方法的具体实现,所述装置应用于数据湖的计算节点,所述装置的结构示意图如图4所示,包括:
第一确定单元401,用于当接收到数据操作请求时,确定所述数据操作请求对应的目标操作标识;所述目标操作标识为基于预设的递增编号规则,对所述数据操作请求进行编号处理所得到的编号;
第二确定单元402,用于确定所述数据操作请求对应的目标操作类型;
第三确定单元403,用于若所述目标操作类型表征数据修改操作,则确定所述目标操作类型对应的第一数据主键和所述第一数据主键对应的更新数据;
第四确定单元404,用于在预先构建的主键索引文件中,确定第一操作标识;所述主键索引文件中包含已存储的各个数据的数据主键对应的操作标识;所述第一操作标识为所述第一数据主键对应的操作标识;
第五确定单元405,用于确定所述第一操作标识对应的第一删除位图文件;所述第一删除位图文件为记录所述第一操作标识对应的数据文件中数据删除情况的文件;
更新单元406,用于对所述第一删除位图文件进行更新,以记录在所述第一操作标识对应的数据文件中,所述第一操作标识对应的文件数据已被删除;
修改单元407,用于将所述主键索引文件中,所述第一数据主键对应的操作标识修改为所述目标操作标识;
存储单元408,用于确定所述目标操作标识对应的第一数据文件,并将所述目标操作标识、所述第一数据主键和所述更新数据作为一组文件数据,写入所述第一数据文件,对所述第一数据文件进行本地存储,以通过所述计算节点中存储的数据和所述数据湖的分布式文件系统中存储的数据提供数据服务。
应用本发明实施例提供的装置,当需要对数据湖中的数据进行修改时,可以将更新的数据在计算节点进行本地存储,对主键索引进行修改,以删除位图文件记录原数据已被删除,结合计算节点存储的数据和分布式文件系统存储的数据提供数据服务,当查询数据时,可从分布式文件系统和计算节点获取所需的数据文件,并利用相应的删除位图文件对已删除的数据进行过滤,便可获得实时数据。在数据存储过程中,无需对分布式文件系统存储的文件进行重写,可减少读写操作,避免写放大的问题。其次,当计算节点完成数据存储后,对于数据服务而言已完成数据更新,可实现实时的数据更新,改善数据更新的延迟性。
在图4所示装置的基础上,本发明实施例提供的装置还可以进一步扩展出多个单元,各个单元的功能可参见前文对于数据湖的数据存储方法所提供的各个实施例中的说明,在此不再进一步举例说明。
本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行如上述的数据湖的数据存储方法。
本发明实施例还提供了一种电子设备,其结构示意图如图5所示,具体包括存储器501,以及一个或者一个以上的指令502,其中一个或者一个以上指令502存储于存储器501中,且经配置以由一个或者一个以上处理器503执行所述一个或者一个以上指令502进行以下操作:
当接收到数据操作请求时,确定所述数据操作请求对应的目标操作标识;所述目标操作标识为基于预设的递增编号规则,对所述数据操作请求进行编号处理所得到的编号;
确定所述数据操作请求对应的目标操作类型;
若所述目标操作类型表征数据修改操作,则确定所述目标操作类型对应的第一数据主键和所述第一数据主键对应的更新数据;
在预先构建的主键索引文件中,确定第一操作标识;所述主键索引文件中包含已存储的各个数据的数据主键对应的操作标识;所述第一操作标识为所述第一数据主键对应的操作标识;
确定所述第一操作标识对应的第一删除位图文件;所述第一删除位图文件为记录所述第一操作标识对应的数据文件中数据删除情况的文件;
对所述第一删除位图文件进行更新,以记录在所述第一操作标识对应的数据文件中,所述第一操作标识对应的文件数据已被删除;
将所述主键索引文件中,所述第一数据主键对应的操作标识修改为所述目标操作标识;
确定所述目标操作标识对应的第一数据文件,并将所述目标操作标识、所述第一数据主键和所述更新数据作为一组文件数据,写入所述第一数据文件,对所述第一数据文件进行本地存储,以通过所述计算节点中存储的数据和所述数据湖的分布式文件系统中存储的数据提供数据服务。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据湖的数据存储方法,其特征在于,所述方法应用于数据湖的计算节点,所述方法包括:
当接收到数据操作请求时,确定所述数据操作请求对应的目标操作标识;所述目标操作标识为基于预设的递增编号规则,对所述数据操作请求进行编号处理所得到的编号;
确定所述数据操作请求对应的目标操作类型;
若所述目标操作类型表征数据修改操作,则确定所述目标操作类型对应的第一数据主键和所述第一数据主键对应的更新数据;
在预先构建的主键索引文件中,确定第一操作标识;所述主键索引文件中包含已存储的各个数据的数据主键对应的操作标识;所述第一操作标识为所述第一数据主键对应的操作标识;
确定所述第一操作标识对应的第一删除位图文件;所述第一删除位图文件为记录所述第一操作标识对应的数据文件中数据删除情况的文件;
对所述第一删除位图文件进行更新,以记录在所述第一操作标识对应的数据文件中,所述第一操作标识对应的文件数据已被删除;
将所述主键索引文件中,所述第一数据主键对应的操作标识修改为所述目标操作标识;
确定所述目标操作标识对应的第一数据文件,并将所述目标操作标识、所述第一数据主键和所述更新数据作为一组文件数据,写入所述第一数据文件,对所述第一数据文件进行本地存储,以通过所述计算节点中存储的数据和所述数据湖的分布式文件系统中存储的数据提供数据服务。
2.根据权利要求1所述的方法,其特征在于,所述确定所述第一操作标识对应的第一删除位图文件,包括:
确定存储文件集合;所述存储文件集合包括多个存储文件,所述多个存储文件包括当前本地存储的各个数据文件以及各个操作标识文件;所述各个操作标识文件与所述数据湖的分布式文件系统中存储的各个数据文件一一对应;每个所述操作标识文件为记录其对应数据文件中所有文件数据所对应的操作标识的文件;
确定每个所述存储文件对应的范围过滤器;每个所述存储文件对应的范围过滤器为基于该存储文件中存储的操作标识所生成的过滤器;
通过各个所述范围过滤器对所述第一操作标识进行索引,得到所述第一操作标识对应的目标存储文件;
确定所述目标存储文件对应的目标删除位图文件,并将所述目标删除位图文件作为所述第一删除位图文件。
3.根据权利要求2所述的方法,其特征在于,所述确定所述目标存储文件对应的目标删除位图文件,包括:
判断在当前时间窗口内是否已创建所述目标存储文件关联的删除位图文件;
若在所述当前时间窗口内已创建所述目标存储文件关联的删除位图文件,则获取在所述当前时间窗口内创建的所述目标存储文件关联的删除位图文件,并将该删除位图文件作为所述目标删除位图文件;
若在所述当前时间窗口内未创建所述目标存储文件关联的删除位图文件,则创建所述目标存储文件对应的初始化位图文件,并将该初始化位图文件作为所述目标删除位图文件。
4.根据权利要求2所述的方法,其特征在于,所述对所述第一删除位图文件进行更新的过程,包括:
基于所述目标存储文件确定所述第一操作标识对应的文件数据位置;
在所述第一删除位图文件中,确定所述文件数据位置对应的位图数据位置;
将所述第一删除位图文件中,所述位图数据位置对应的数据值修改为表征数据已删除的预定数值。
5.根据权利要求1所述的方法,其特征在于,还包括:
若所述目标操作类型表征数据插入操作,则确定所述目标操作类型对应的第二数据主键和所述第二数据主键对应的插入数据;
将所述目标操作标识作为所述第二数据主键对应的操作标识,以建立所述目标操作标识和所述第二数据主键的索引关系;
在所述主键索引文件中,增加所述第二数据主键对应的操作标识;
确定所述目标操作标识对应的第二数据文件,并将所述目标操作标识、所述第二数据主键和所述插入数据作为一组文件数据,写入所述第二数据文件,对所述第二数据文件进行本地存储。
6.根据权利要求1所述的方法,其特征在于,还包括:
若所述目标操作类型表征数据删除操作,则确定所述目标操作类型对应的第三数据主键;
在所述主键索引文件中,确定第二操作标识;所述第二操作标识为所述第三数据主键对应的操作标识;
确定所述第二操作标识对应的第二删除位图文件;
对所述第二删除位图文件进行更新,以记录在所述第二操作标识对应的数据文件中,所述第二操作标识对应的文件数据已被删除;
将所述主键索引文件中所述第三数据主键对应的操作标识删除。
7.根据权利要求1所述的方法,其特征在于,还包括:
监测本地存储的数据文件的文件数量是否超过预设的数量阈值;
在所述文件数量超过所述数量阈值的情况下,确定本地文件集合;所述本地文件集合包括当前本地存储的所有数据文件;
生成所述本地文件集合对应的操作标识文件,对该操作标识文件进行本地存储,该操作标识文件记录有所述本地文件集合中每个数据文件的所有文件数据所对应的操作标识;
确定所述本地文件集合对应的删除位图文件集合;所述删除位图文件集合包括当前本地存储的各个数据文件对应的删除位图文件;
对所述删除位图文件集合进行文件合并,得到合并删除位图文件,对该合并删除位图文件进行本地存储;
对所述本地文件集合进行文件合并,得到合并数据文件,将所述合并数据文件上传至所述数据湖的分布式文件系统。
8.一种数据湖的数据存储装置,其特征在于,所述装置应用于数据湖的计算节点,所述装置包括:
第一确定单元,用于当接收到数据操作请求时,确定所述数据操作请求对应的目标操作标识;所述目标操作标识为基于预设的递增编号规则,对所述数据操作请求进行编号处理所得到的编号;
第二确定单元,用于确定所述数据操作请求对应的目标操作类型;
第三确定单元,用于若所述目标操作类型表征数据修改操作,则确定所述目标操作类型对应的第一数据主键和所述第一数据主键对应的更新数据;
第四确定单元,用于在预先构建的主键索引文件中,确定第一操作标识;所述主键索引文件中包含已存储的各个数据的数据主键对应的操作标识;所述第一操作标识为所述第一数据主键对应的操作标识;
第五确定单元,用于确定所述第一操作标识对应的第一删除位图文件;所述第一删除位图文件为记录所述第一操作标识对应的数据文件中数据删除情况的文件;
更新单元,用于对所述第一删除位图文件进行更新,以记录在所述第一操作标识对应的数据文件中,所述第一操作标识对应的文件数据已被删除;
修改单元,用于将所述主键索引文件中,所述第一数据主键对应的操作标识修改为所述目标操作标识;
存储单元,用于确定所述目标操作标识对应的第一数据文件,并将所述目标操作标识、所述第一数据主键和所述更新数据作为一组文件数据,写入所述第一数据文件,对所述第一数据文件进行本地存储,以通过所述计算节点中存储的数据和所述数据湖的分布式文件系统中存储的数据提供数据服务。
9.一种存储介质,其特征在于,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行如权利要求1~7任意一项所述的数据湖的数据存储方法。
10.一种电子设备,其特征在于,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行如权利要求1~7任意一项所述的数据湖的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410227305.XA CN118152357A (zh) | 2024-02-29 | 2024-02-29 | 数据湖的数据存储方法及装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410227305.XA CN118152357A (zh) | 2024-02-29 | 2024-02-29 | 数据湖的数据存储方法及装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118152357A true CN118152357A (zh) | 2024-06-07 |
Family
ID=91286184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410227305.XA Pending CN118152357A (zh) | 2024-02-29 | 2024-02-29 | 数据湖的数据存储方法及装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118152357A (zh) |
-
2024
- 2024-02-29 CN CN202410227305.XA patent/CN118152357A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7410181B2 (ja) | ハイブリッド・インデックス作成方法、システム、プログラム | |
US8868512B2 (en) | Logging scheme for column-oriented in-memory databases | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
US9171027B2 (en) | Managing a multi-version database | |
CN106951375B (zh) | 在存储系统中删除快照卷的方法及装置 | |
US11487714B2 (en) | Data replication in a data analysis system | |
CN113515487B (zh) | 查询目录的方法、计算设备和分布式文件系统 | |
JP2020502626A (ja) | データベース・システムにおけるテスト・データの形成及び動作 | |
JP6501916B2 (ja) | ファイルストレージにおけるインデックス付け実施方法及びシステム | |
CN109542892A (zh) | 一种实时数据库的关系化实现方法、装置及系统 | |
US8793288B2 (en) | Online access to database snapshots | |
EP3788505B1 (en) | Storing data items and identifying stored data items | |
CN111125171A (zh) | 一种监测数据存取方法、装置、设备及可读存储介质 | |
US10162841B1 (en) | Data management platform | |
US20100228787A1 (en) | Online data volume deletion | |
CN118152357A (zh) | 数据湖的数据存储方法及装置、存储介质及电子设备 | |
CN116049306A (zh) | 数据同步方法、装置、电子设备以及可读存储介质 | |
CN115858471A (zh) | 业务数据变更记录方法、装置、计算机设备及介质 | |
CN115470223A (zh) | 一种基于两层时间标识的数据湖数据增量消费方法 | |
CN116561138A (zh) | 数据处理方法和装置 | |
CN108984720B (zh) | 基于列存储的数据查询方法、装置、服务器及存储介质 | |
CN108376104B (zh) | 节点调度方法及装置、计算机可读存储介质 | |
CN110581779A (zh) | 基于本地缓存的配置下发平台系统及配置下发方法 | |
CN111782588A (zh) | 一种文件读取方法、装置、设备和介质 | |
CN117131023B (zh) | 数据表处理方法、装置、计算机设备和可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |