CN113761294B - 数据管理方法、装置、存储介质以及电子设备 - Google Patents

数据管理方法、装置、存储介质以及电子设备 Download PDF

Info

Publication number
CN113761294B
CN113761294B CN202111062534.3A CN202111062534A CN113761294B CN 113761294 B CN113761294 B CN 113761294B CN 202111062534 A CN202111062534 A CN 202111062534A CN 113761294 B CN113761294 B CN 113761294B
Authority
CN
China
Prior art keywords
data
metadata
target
target data
request
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
Application number
CN202111062534.3A
Other languages
English (en)
Other versions
CN113761294A (zh
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.)
Beijing Volcano Engine Technology Co Ltd
Original Assignee
Beijing Volcano Engine Technology 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 Beijing Volcano Engine Technology Co Ltd filed Critical Beijing Volcano Engine Technology Co Ltd
Priority to CN202111062534.3A priority Critical patent/CN113761294B/zh
Publication of CN113761294A publication Critical patent/CN113761294A/zh
Priority to US18/278,149 priority patent/US20240054163A1/en
Priority to PCT/CN2022/117262 priority patent/WO2023036128A1/zh
Application granted granted Critical
Publication of CN113761294B publication Critical patent/CN113761294B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/908Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • 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/13File access structures, e.g. distributed indices
    • 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/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及一种数据管理方法、装置、存储介质以及电子设备,涉及数据库技术领域,该方法包括:获取引擎侧发送的数据访问请求,数据访问请求用于请求对数据湖中的第一目标数据进行访问操作;根据数据访问请求从元数据存储模块中确定对应第一目标数据的目标元数据,元数据存储模块采用不同的存储模式分别存储数据湖的元数据,采用不同的存储模式存储的元数据之间,具有至少一种相同的信息;将数据湖中对应目标元数据的第一目标数据发送给引擎侧。本公开的有益效果是:通过构建满足各种引擎需求的数据湖元数据统一服务视图,实现了不同引擎之间的元数据互通,从而达到数据共享的目的,避免产生额外的数据处理成本。

Description

数据管理方法、装置、存储介质以及电子设备
技术领域
本公开涉及数据库技术领域,具体地,涉及一种数据管理方法、装置、存储介质以及电子设备。
背景技术
数据湖是指使用大型二进制对象或者文件格式来存储数据的系统,被用于统一存储数据,既包括原系统中的原始副本,也包括转换后的数据,如报表、可视化的数据等等。
在大数据场景下,因业务场景、数据规模的不同,存在各类大数据引擎用于处理某一领域的需求。例如,计算引擎有用于数据分析的Spark(一种计算引擎)、交互式分析的Presto(数据查询引擎)、流处理的Flink(一种开源流出来框架)等,存储引擎有分布式文件系统(Hadoop Distributed File System,HDFS),对象存储(Object Storage Service,OSS)等。如果在同一份数据上综合使用这些系统,将会面临大量的ETL(Extract-Transform-Load,数据仓库技术)工作,进行数据加工、转换存储格式等,导致成本和时间增加。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
根据本公开实施例的第一方面,本公开提供一种数据管理方法,包括:
获取引擎侧发送的数据访问请求,其中,所述数据访问请求用于请求对数据湖中的第一目标数据进行访问操作;
根据所述数据访问请求从元数据存储模块中确定对应所述第一目标数据的目标元数据,其中,所述元数据存储模块采用不同的存储模式分别存储所述数据湖的元数据,采用所述不同的存储模式存储的元数据之间,具有至少一种相同的信息;
将所述数据湖中对应所述目标元数据的第一目标数据发送给所述引擎侧。
根据本公开实施例的第二方面,本公开提供一种数据管理装置,包括:
获取模块,配置为获取引擎侧发送的数据访问请求,其中,所述数据访问请求用于请求对数据湖中的第一目标数据进行访问操作;
确定模块,配置为根据所述数据访问请求从元数据存储模块中确定对应所述第一目标数据的目标元数据,其中,所述元数据存储模块采用不同的存储模式分别存储所述数据湖的元数据,采用所述不同的存储模式存储的元数据之间,具有至少一种相同的信息;
发送模块,配置为将所述数据湖中对应所述目标元数据的第一目标数据发送给所述引擎侧。
根据本公开实施例的第三方面,本公开提供一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现本公开第一方面所述方法的步骤。
根据本公开实施例的第四方面,本公开提供一种电子设备,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现本公开第一方面所述方法的步骤。
通过上述技术方案,利用元数据存储模块基于不同的存储模式分别存储数据湖的元数据,其中,采用不同的存储模式存储的元数据之间,具有至少一种相同的信息,实现不同引擎的统一元数据服务视图。不同引擎在获取数据湖中的第一目标数据时,均可以通过元数据存储模块获取到对应第一目标数据的目标元数据,进而向引擎侧返回对应该目标元数据的第一目标数据。通过构建满足各种引擎需求的数据湖元数据统一服务视图,实现了不同引擎之间的元数据互通,从而达到数据共享的目的,避免产生额外的数据处理成本。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:
图1是根据一示例性实施例提出的数据管理方法的应用场景示意图;
图2是根据一示例性实施例提出的数据管理方法的流程图;
图3是根据另一示例性实施例提出的数据管理方法的流程图;
图4是根据一示例性实施例提出的冲突检查方法的流程图;
图5是根据另一示例性实施例提出的冲突检查方法的流程图;
图6是根据一示例性实施例提出的数据管理方法的交互逻辑示意图;
图7是根据一示例性实施例提出的数据管理装置的模块连接示意图;
图8是根据一示例性实施例提出的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1是根据一示例性实施例提出的数据管理方法的应用场景示意图。如图1所示,该数据管理方法可以应用于元数据管理系统20,该元数据管理系统20包括管理服务模块201以及元数据存储模块202。其中,元数据管理系统20与引擎侧10通信连接,其中,在元数据管理系统20可以设计有统一的接口,引擎侧10通过该接口访问元数据管理系统20。元数据管理系统20与数据湖30通信连接,其中,数据湖30可以为存储系统,例如,可以为HDFS存储系统,用于存储海量的不同格式的数据。管理服务模块201与元数据存储模块202通信连接,管理服务模块201与数据湖30通信连接,元数据存储模块202与数据湖30通信连接。
应当理解的是,元数据存储模块202用于持久化存储数据湖30的元数据,管理服务模块201用于支持引擎侧10对数据湖30的读写访问。
值得说明的是,管理服务模块201与元数据存储模块202分别可以是独立设置的服务器。
图2是根据一示例性实施例提出的数据管理方法的流程图。如图2所示,该数据管理方法可以应用于元数据管理系统中的管理服务模块,该数据管理方法可以包括以下步骤。
在步骤S210中,获取引擎侧发送的数据访问请求,其中,所述数据访问请求用于请求对数据湖中的第一目标数据进行访问操作。
这里,管理服务模块接收引擎侧发送的数据访问请求,该数据访问请求用于请求对数据湖中的第一目标数据进行访问操作。其中,数据湖架构是面向多数据源的信息存储,用于存储海量的不同格式的数据,例如,结构化数据、半结构化数据和非结构化数据。
值得说明的是,引擎侧可以是不同的引擎,例如,可以是计算引擎Spark、Presto引擎等等。
在步骤S220中,根据所述数据访问请求从元数据存储模块中确定对应所述第一目标数据的目标元数据,其中,所述元数据存储模块采用不同的存储模式分别存储所述数据湖的元数据,采用所述不同的存储模式存储的元数据之间,具有至少一种相同的信息。
这里,管理服务模块响应于数据访问请求从元数据存储模块中获取与第一目标数据对应的目标元数据。其中,该元数据存储模块采用不同的存储模式分别存储数据湖的元数据,且采用不同的存储模式存储的元数据之间,具有至少一种相同的信息。值得说明的是,不同存储模式存储数据湖的元数据,可以是使用一种或多种存储模式存储数据湖中不同的元数据,对于不同的存储系统,存储模式可以相同也不相同。数据湖的不同元数据分别采用不同的存储模式进行存储时,不同的存储模式存储的元数据之间,具有至少一种相同的信息,以通过该相同的信息关联同一个数据的不同元数据。
在一些实施例中,元数据存储模块包括不同的存储系统,例如,HDFS存储系统、KV存储系统等。针对每一存储系统,采用对应存储系统的存储模式存储数据湖的元数据。应当理解的是,对于不同的存储系统,其使用的存储模式可以不同,但是不同存储模式存储的元数据之间具有一种或一种以上的相同信息。例如,HDFS存储系统采用存储模式A存储目标数据的元数据A,KV存储系统采用存储模式B存储目标数据的元数据B,采用存储模式A与存储模式B存储的元数据之间具有至少一种相同信息,如对应目标数据的唯一标识符。
由此,元数据存储模块包括不同的存储系统,可以将数据湖的元数据分散存储。
在步骤S230中,将所述数据湖中对应所述目标元数据的第一目标数据发送给所述引擎侧。
这里,在获取到目标元数据之后,根据该目标元数据从数据湖中获取与该目标元数据对应的第一目标数据,并将第一目标数据发送至引擎侧。
值得说明的是,在一些示例中,管理服务模块可以是将目标元数据发送至引擎侧,引擎侧根据目标元数据从数据湖中获取对应目标元数据的第一目标数据。在另一些示例中,管理服务模块可以通过目标元数据从数据湖中获取与目标元数据对应的第一目标数据,并将第一目标数据发送至引擎侧。
由此,利用元数据存储模块基于不同的存储模式分别存储数据湖的元数据,其中,不同的存储模式存储的元数据之间,具有至少一种相同的信息,实现不同引擎的统一元数据服务视图。不同引擎在获取数据湖中的第一目标数据时,均可以通过元数据存储模块获取到对应第一目标数据的目标元数据,进而向引擎侧返回对应该目标元数据的第一目标数据。通过构建满足各种引擎需求的数据湖元数据统一服务视图,实现了不同引擎之间的元数据互通,从而达到数据共享的目的,避免产生额外的数据处理成本。
在一些实施例中,元数据存储模块采用不同的存储模式分别存储所述数据湖的元数据包括实例元数据(Instant)、表级别元数据(Table Metadata)、提交元数据(CommitMetadata)以及版本信息元数据(Version Metadata)。
表级别元数据记录有数据在数据湖的数据表中的索引信息,例如,包括数据表的所有分区信息,以及每个分区下的所有文件信息,如文件名、文件路径、文件索引信息等。对于数据湖的数据表,管理服务模块可以为每个数据表维护一个全局唯一的标识符tbl_id,文件的元数据信息则可以通过tbl_id、partition(分区)、version(版本)和filename(文件名)的存储模式存储在元数据存储模块中。通过上述存储模式,既可以获取到数据表的各个分区,也可以获得每个分区下的所有文件信息,并且实现快照管理。
实例元数据是在接收引擎侧向数据湖写入数据的请求时,创建的用于记录数据写入状态的元数据。实例元数据是时间轴(Timeline)上的实例(Instant)的元数据,每个Instant记录了一次向数据湖的写入提交,该记录无论写入提交是否成功均会被记录。每个实例元数据表示在某个时间点对数据表进行操作,从而达到某一个状态,每个实例元数据包括timestamp(时间戳)、action(操作类型)以及state(状态),其中,state包括request(表示请求状态)、Inflight(表示正在执行某操作的状态)以及Commit(表示操作完成状态)。因此,对于实例元数据,可以采用tbl_id、timestamp、action、state的存储模式存储在元数据存储模块中。
提交元数据是在引擎侧向数据湖成功写入一次数据后提交的对应本次写入数据的元数据。提交元数据实际上为一次成功向数据湖写入提交的数据的元数据信息,包括本次写入涉及的更新文件、新增文件以及本次写入的新增数据条数等。对于提交元数据,可以拉平拆分为KV对,并以tbl_id和KV对的存储模式存储在元数据存储模块的KV存储系统中。
版本信息元数据表征写入到数据湖的数据表的版本信息,该版本信息记录所有已成功完成的写入操作。对于版本信息元数据,通过tbl_id以及自增的版本号(version)的存储模式存储在元数据存储模块中。其中,版本信息元数据用于进行版本控制,并为数据湖并发写场景提供乐观锁(Compare and Set,CAS)能力。时间轴会依照版本顺序对已成功完成的Instant进行构建,表级别元数据中每个分区下的文件信息也是依照版本维护对应的快照,进行同步的更新和清理。
值得说明的是,在上述实施方式中,实例元数据、表级别元数据、提交元数据以及版本信息元数据的存储模式不同,但是其至少具有一种共同的标识符“tbl_id”,用以构建实例元数据、表级别元数据、提交元数据以及版本信息元数据之间的关联关系。应当理解的是,在实际应用场景中,也可以通过其他信息来作为不同存储模式存储的元数据之间的同一信息。
在一些实施例中,管理服务模块可以包括数据拆分单元,该数据拆分单元用于对新增的实例元数据、表级别元数据、提交元数据以及版本信息元数据分别按照对应的存储模式进行拆解,并将拆解后的元数据按照对应的存储模式存储在元数据存储模块中。
在一些实施例中,表级别元数据包括数据分区信息以及每一分区下的每一数据的索引信息。步骤S230可以根据目标元数据中包括的目标分区下的每一数据的索引信息,对目标分区中的数据进行分割,得到第一目标数据,并将该第一目标数据发送给引擎侧。
这里,管理服务模块可以包括快照管理单元,该快照管理单元用于提供filespliting(文件分割与合并)的能力。快照管理单元可以基于文件大小以及谓词下推分割和过滤,对目标分区中的数据进行分割,得到第一目标数据,以降低返回给引擎侧的文件的大小,从而加速引擎车的查询速度。
在一些实施例中,该数据管理方法还可以包括:
将所述元数据存储模块中存储的预设类型的数据缓存至本地,以使所述引擎侧能够基于本地缓存的所述预设类型的数据访问所述数据湖中的数据。
这里,在管理服务模块中可以设置有缓存单元,管理服务模块将元数据存储模块中存储的预设类型的数据缓存至缓存单元中,以使引擎侧能够在缓存单元中访问预设类型的数据,提高引擎访问数据的速度。
可选地,针对第一类型的数据,将元数据存储模块中存储的第一类型的数据缓存至本地,其中,第一类型的数据为引擎侧的访问频率达到第一预设频率且数据大小达到第一数据量的数据。
这里,第一类型的数据是指引擎访问频次高且数据量小的元数据,例如,表级别元数据。对于第一类型的数据,管理服务模块将其一直维护在缓存单元中,以提高引擎侧的访问速度。
可选地,针对第二类型的数据,基于最近最少使用算法将元数据存储模块中存储的第二类型的数据缓存至本地,其中,第二类型的数据为引擎侧的访问频率达到第二预设频率且数据大小达到第二数据量的数据,第二预设频率小于第一预设频率,第二数据量大于第一数据量。
这里,第二类型的数据是指引擎侧方位频次低且数据量较大的元数据,例如,提交元数据、索引等元数据。对于第二类型的数据,可以存储在一个固定内存空间中,通过最近最少使用算法(Least Recently Used,LRU)进行更新和淘汰,以提高引擎侧的访问速度。
图3是根据另一示例性实施例提出的数据管理方法的流程图。如图3所示,在一些实施例中,该数据管理方法还可以包括以下步骤。
在步骤S310中,响应于向所述数据湖的目标数据表写入第二目标数据的请求,在所述元数据存储模块中创建对应请求时间点的实例元数据,并获取所述目标数据表在所述请求时间点的目标版本信息。
这里,当引擎需要向数据湖的目标数据表中写入第二目标数据时,向管理服务模块发送写入请求,管理服务模块响应于该写入请求,在元数据存储模块中创建对应请求时间点的实例元数据,并获取该目标数据表在管理服务模块在该请求时间点创建实例元数据时的目标版本信息。例如,管理服务模块在3021/02/07,10:00的请求时间点创建该实例元数据,则目标版本信息为目标数据表在3021/02/07,10:00时的版本信息。其中,第二目标数据为要写入数据湖中的数据。
在元数据存储模块中创建对应请求时间点的实例元数据,是在时间轴上创建“Instant HI_WRITE”,此时,Instant HI_WRITE的状态为“request”,表示请求向目标数据表中写入第二目标数据。
在步骤S320中,根据所述目标版本信息以及所述目标数据表的最新版本信息,在确定所述第二目标数据的写入与针对所述目标数据表的历史写入请求不冲突的情况下,将所述第二目标数据写入所述数据湖的所述目标数据表中,其中,所述历史写入请求包括正在向所述数据湖写入数据的第一提交请求以及在所述目标版本信息与所述最新版本信息之间的各个版本对应的第二提交请求。
这里,历史写入请求包括正在向数据湖写入数据的第一提交请求以及在目标版本信息与最新版本信息之间的各个版本对应的已完成的第二提交请求。根据目标版本信息以及目标数据表的最新版本信息,判断第二目标数据的写入与针对目标数据表的第一提交请求和第二提交请求是否冲突,在确定第二目标数据的写入与针对目标数据表的第一提交请求和第二提交请求均不冲突的情况下,将第二目标数据写入数据湖的目标数据表中。应当理解的是,第二目标数据的写入与针对目标数据表的第一提交请求和第二提交请求均不冲突,是指向目标数据表写入第二目标数据的请求不会更新第一提交请求和第二提交请求正在写入的数据。第二目标数据的写入与针对目标数据表的第一提交请求和/或第二提交请求冲突,是指向目标数据表写入第二目标数据的请求会更新第一提交请求和/或第二提交请求正在写入的数据。
其中,目标数据表的最新版本信息是指目标数据表的实时版本信息。第一提交请求可以是在时间轴上的状态为“Inflight”的Instant,第二提交请求可以是在目标版本信息至最新版本信息之间的所有版本对应的已完成向数据湖写入数据的请求,在时间轴上是状态为“Commit”的Instant。
在一些示例中,在第二目标数据的写入与针对目标数据表的第一提交请求和第二提交请求中的至少一者冲突的情况下,放弃向目标数据表写入第二目标数据的请求。其中,第二目标数据的写入与针对目标数据表的第一提交请求和第二提交请求中的至少一者冲突,表示向目标数据表写入第二目标数据的请求会影响在先提交的写入请求的数据文件。
值得说明的是,向目标数据表写入第二目标数据的请求与历史写入请求之间的冲突检查,可以是基于乐观锁机制。乐观锁机制是假设数据一般情况不会造成冲突,在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测。当然,在实际应用过程中,也可以基于并发写需求的场景不同选择不同的冲突检查机制,如使用悲观锁机制进行冲突检查。
在步骤S330中,在所述第二目标数据写入成功后,将对应所述第二目标数据的提交元数据存储在所述元数据存储模块中,并对所述元数据存储模块中对应所述目标数据表的表级别元数据和版本信息元数据以及为所述第二目标数据创建的实例元数据进行更新。
这里,在向数据湖的目标数据表成功写入第二目标数据之后,管理服务模块将对应于第二目标数据的提交元数据存储在元数据存储模块中,并对元数据存储模块中对应目标数据表的表级别元数据和版本信息元数据以及为第二目标数据创建的实例元数据进行更新。
其中,为第二目标数据创建的实例元数据对应的状态包括“request”、“Inflight”和“Commit”。在每个数据写入过程中,均同步更新该实例元数据的状态。例如,第二目标数据写入成功时,该实例元数据的状态从“Inflight”变更为“Commit”。
值得说明的是,管理服务模块完成写入第二目标数据的标志为管理服务模块申请原子创建V_READ+1成功,其中,V_READ为目标版本信息。如果申请原子创建V_READ+1失败,说明写入第二目标数据失败。
由此,基于元数据存储模块采用不同的存储模式分别存储数据湖的元数据,为管理服务模块的并发写控制提供了CAS能力,通过对向目标数据表写入第二目标数据的请求与历史写入请求进行冲突检查,可以实现并发写控制。应当理解的是,冲突检查的规则可以是按照用户的数据应用场景进行自定义实现,包括分区级别冲突检查、列级别冲突检查以及文件级别等。
图4是根据一示例性实施例提出的冲突检查方法的流程图。如图4所示,在一些可以实现的实施方式中,步骤S320中,根据所述目标版本信息以及所述目标数据表的最新版本信息,在确定所述第二目标数据的写入与针对所述目标数据表的历史写入请求不冲突的情况下,将所述第二目标数据写入所述数据湖的所述目标数据表中,可以包括以下步骤。
在步骤S321中,根据所述目标版本信息以及所述最新版本信息,在确定所述第二目标数据的写入与所述第一提交请求和所述第二提交请求均不冲突的情况下,定期为所述请求时间点的实例元数据续租,并开始向所述目标数据表写入所述第二目标数据。
这里,管理服务模块从元数据存储模块中获取目标数据表的最新版本信息,然后根据目标版本信息和最新版本信息判断第二目标数据的写入与第一提交请求和所述第二提交请求是否均不冲突,在均不冲突的情况下,管理服务模块定期为请求时间点的实例元数据续租,以防止该请求时间点的实例元数据在数据写入的过程中挂掉而造成数据写入失败,并开始向目标数据表中写入第二目标数据。此时,请求时间点的实例元数据的状态从“request”变为“Inflight”。
在一些实施例中,管理服务模块检测目标版本信息与目标数据表的最新版本信息是否一致,在目标版本信息与最新版本信息一致的情况下,检测向目标数据表写入第二目标数据的请求是否与第一提交请求冲突,如果不冲突,则确定第二目标数据的写入与第一提交请求和第二提交请求均不冲突。
可选地,在向目标数据表写入第二目标数据的请求与第一提交请求冲突的情况下,检测与向目标数据表写入第二目标数据的请求存在冲突的第一提交请求的租约是否过期,如果租约过期,则确定第二目标数据的写入与第一提交请求和第二提交请求均不冲突。
应当理解的是,如果与向目标数据表写入第二目标数据的请求存在冲突的第一提交请求的租约过期,说明该第一提交请求已终止,则向目标数据表写入第二目标数据的请求与该第一提交请求不冲突。如果与向目标数据表写入第二目标数据的请求存在冲突的第一提交请求的租约未过期,说明第一提交请求未终止,则可以放弃向目标数据表写入第二目标数据的请求,或者是重新执行向目标数据表写入第二目标数据的请求。
在一些实施例中,在目标版本信息与最新版本信息不一致的情况下,若第二目标数据的写入与第二提交请求不冲突,则将最新版本信息作为新的目标版本信息,并根据新的目标版本信息重新判断新的目标版本信息与目标数据表的最新版本信息是否一致。
这里,当目标版本信息与最新版本信息不一致,且向目标数据表写入第二目标数据的请求与第二提交请求不冲突,则将目标数据表的最新版本信息作为新的目标版本信息,并根据该新的目标版本信息重新判断新的目标版本信息与目标数据表的最新版本信息是否一致,如果一致则进一步判断向目标数据表写入第二目标数据的请求与第一提交请求是否冲突。
在步骤S322中,在向所述目标数据表中写入所述第二目标数据失败的情况下,若所述第二目标数据的写入与所述第二提交请求不冲突,则将所述最新版本信息作为新的目标版本信息,并根据所述新的目标版本信息完成向所述目标数据表写入所述第二目标数据。
这里,如果请求时间点的实例元数据的状态从“Inflight”转换为“Commit”失败,表示向目标数据表中写入第二目标数据失败,在这一情况下,检查第二目标数据的写入与在第二提交请求是否冲突,如果冲突,则将目标版本信息更新为目标数据表的最新版本信息,获得新的目标版本信息,并根据该新的目标版本信息完成向目标数据表写入第二目标数据。其中,当根据该新的目标版本信息成功向目标数据表写入第二目标数据时,请求时间点的实例元数据的状态从“Inflight”转换为“Commit”。
值得说明的是,在向目标数据表中写入第二目标数据成功的情况下,请求时间点的实例元数据的状态从“Inflight”转换为“Commit”,表示完成向目标数据表中写入第二目标数据。将对应第二目标数据的提交元数据存储在元数据存储模块中,并对元数据存储模块中对应目标数据表的表级别元数据和版本信息元数据以及为第二目标数据创建的实例元数据进行更新。
在一些实施例中,若向目标数据表写入第二目标数据的请求与第二提交请求冲突,则可以放弃向目标数据表写入第二目标数据的请求,或者是重新执行向目标数据表写入第二目标数据的请求。
下面结合附图5对上述实施例进行详细说明。
图5是根据另一示例性实施例提出的冲突检查方法的流程图。如图5所示,数据管理方法可以包括以下步骤。
步骤510,创建对应请求时间点的实例元数据。
这里,管理服务模块中的CLI(命令行接口)获取引擎向数据湖的目标数据表中写入第二目标数据的请求,并响应于该请求,向管理服务模块申请新建对应请求时间点的实例元数据(Instant HI_WRITE),该实例元数据的状态为“request”。
步骤520,获取V_READ和V_READ对应的实例元数据。
这里,CLI获取目标数据表的目标版本信息V_READ和目标版本信息V_READ对应的Instant HI_READ。其中,每一个版本信息指向一个实例元数据,Instant HI_READ为目标版本信息V_READ指向的实例元数据。
步骤530,创建Work Profile。
这里,CLI根据Instant HI_READ创建Work Profile(工作空间)。
步骤540,冲突检查。
其中,步骤540可以包括以下步骤:
步骤541,获取最新版本信息V_LATEST。
步骤542,判断V_READ与V_LATEST是否一致。
步骤543,当V_READ与V_LATEST一致时,获取第一提交请求。
步骤544,判断与第一提交请求是否冲突。
这里,CLI判断写入第二目标数据的请求与第一提交请求是否冲突,冲突判断的具体方法已经在上述实施例中进行了详细说明,在此不再赘述。
步骤545,当写入第二目标数据的请求与第一提交请求冲突,进一步判断与写入第二目标数据的请求存在冲突的第一提交请求的租约是否过期。
这里,当写入第二目标数据的请求与第一提交请求不冲突,则完成冲突检查,执行步骤550。
步骤546,当存在冲突的第一提交请求的租约未过期,判断是否重试。
这里,当存在冲突的第一提交请求的租约过期,则完成冲突检查,执行步骤550。
步骤547,当不需要重试时,终止向目标数据表写入第二目标数据。
这里,当需要重试时,返回执行步骤520。应当理解的是,是否重试可以是根据用户操作选择的。终止向目标数据表写入第二目标数据,该请求时间点的实例元数据的状态从“Inflight”转换为“Invalid(无效)”。
步骤548,当V_READ与V_LATEST不一致时,获取所有的第二提交请求。
步骤549,判断与第二提交请求是否冲突。
这里,CLI判断写入第二目标数据的请求与第二提交请求是否冲突,冲突判断的具体方法已经在上述实施例中进行了详细说明,在此不再赘述。
步骤5491,当写入第二目标数据的请求与第二提交请求不冲突,令V_READ等于V_LATEST,并返回执行步骤541。
其中,当写入第二目标数据的请求与第二提交请求冲突,则执行步骤547。
步骤550,请求时间点的实例元数据和提交元数据申请从“request”转换为“Inflight”。
这里,CLI向管理服务模块为请求时间点的实例元数据和提交元数据申请从“request”转换为“Inflight”。
步骤560,开始写入第二目标数据,并定期为请求时间点的实例元数据续租。
这里,CLI开始向目标数据表写入第二目标数据,并定期为请求时间点的实例元数据续租,CLI可以通过定期向管理服务模块发送心跳为请求时间点的实例元数据续租。
步骤570,CLI开始完成写入第二目标数据。
步骤580,判断CLI申请原子创建V_READ+1是否成功。
这里,CLI完成向目标数据表写入第二目标数据,申请提交Commit Metadata(提交元数据),并向元数据管理系统申请原子创建,使得目标数据表的版本信息变更为V_READ+1,V_READ+1指向Instant HI_WRITE。
步骤590,当原子创建成功,确定完成写入第二目标数据。
这里,完成写入第二目标数据,请求时间点的实例元数据和提交元数据申请从“Inflight”转换为“Commit”。
步骤591,当原子创建失败时,获取第二提交请求。
步骤592,判断第二目标数据的写入与第二提交请求是否冲突。
步骤593,当第二目标数据的写入与第二提交请求不冲突时,令V_READ等于V_LATEST,并返回执行步骤570。
步骤594,当第二目标数据的写入与第二提交请求不冲突时,判断是否需要重试写入第二目标数据。
这里,当不需要重试写入第二目标数据时,执行步骤547,终止向目标数据表写入第二目标数据。当需要重试写入第二目标数据时,返回执行步骤510。
图6是根据一示例性实施例提出的数据管理方法的交互逻辑示意图。如图6所示,在元数据存储模块43中,采用不同的存储模式分别存储数据湖的元数据,包括实例元数据、表级别元数据、提交元数据以及版本信息元数据。管理服务模块42包括用于对目标分区中的数据进行分割的文件分割单元、用于缓存元数据存储模块43中的元数据的缓存单元402以及用于并发写管理的提交管理单元401。当引擎侧41向管理服务模块42发送数据访问请求时,管理服务模块42响应于该数据访问请求,若缓存单元402缓存有引擎侧41需要访问的数据,则管理服务模块42从缓存单元402中读取响应的对应的目标元数据,并根据该目标元数据向引擎侧41返回对应的数据。若缓存单元402未缓存引擎侧41需要访问的数据,管理服务模块42从元数据存储模块43中获取相应的数据返回给引擎侧41。另外,对于返回给引擎侧41的数据,可以基于文件分割单元403对管理服务模块42获取到的数据进行分割,并向引擎侧41返回分割后的文件,以提高引擎侧41的访问速度。
对于引擎侧41发起的向数据湖的目标数据表写入第二目标数据的请求,提交管理单元401响应于该请求,在元数据存储模块43中创建对应请求时间点的实例元数据,并获取目标数据表在请求时间点的目标版本信息,根据目标版本信息以及目标数据表的最新版本信息,在确定第二目标数据的写入与针对目标数据表的历史写入请求不冲突的情况下,将第二目标数据写入数据湖的目标数据表中,其中,历史写入请求包括正在向数据湖写入数据的第一提交请求以及在所述目标版本信息与最新版本信息之间的各个版本对应的第二提交请求,在第二目标数据写入成功后,将对应第二目标数据的提交元数据存储在元数据存储模块43中,并对元数据存储模块43中对应目标数据表的表级别元数据和版本信息元数据以及为第二目标数据创建的实例元数据进行更新。
图7是根据一示例性实施例提出的数据管理装置的模块连接示意图。如图7所示,本公开实施例提供了一种数据管理装置,该数据管理装置60包括:
获取模块601,配置为获取引擎侧发送的数据访问请求,其中,所述数据访问请求用于请求对数据湖中的第一目标数据进行访问操作;
确定模块602,配置为根据所述数据访问请求从元数据存储模块中确定对应所述第一目标数据的目标元数据,其中,所述元数据存储模块采用不同的存储模式分别存储所述数据湖的元数据,采用所述不同的存储模式存储的元数据之间,具有至少一种相同的信息;
发送模块603,配置为将所述数据湖中对应所述目标元数据的第一目标数据发送给所述引擎侧。
在一些实施例中,所述元数据存储模块采用不同的存储模式分别存储所述数据湖的元数据包括实例元数据、表级别元数据、提交元数据以及版本信息元数据;
其中,所述实例元数据是在接收所述引擎侧向所述数据湖写入数据的请求时,创建的用于记录数据写入状态的元数据;
所述提交元数据是在所述引擎侧向所述数据湖成功写入一次数据后提交的对应本次写入数据的元数据;
所述版本信息元数据表征写入到所述数据湖的数据表的版本信息;
所述表级别元数据记录有数据在所述数据湖的数据表中的索引信息。
在一些实施例中,所述元数据存储模块包括不同的存储系统,其中,针对每一所述存储系统,采用对应所述存储系统的存储模式存储所述数据湖的元数据。
在一些实施例中,所述表级别元数据包括数据分区信息以及每一分区下的每一数据的索引信息,所述发送模块603包括:
分割单元,配置为根据所述目标元数据中包括的目标分区下的每一数据的索引信息,对所述目标分区中的数据进行分割,得到所述第一目标数据;
发送单元,配置为将所述第一目标数据发送给所述引擎侧。
在一些实施例中,所述装置还包括:
创建模块,配置为响应于向所述数据湖的目标数据表写入第二目标数据的请求,在所述元数据存储模块中创建对应请求时间点的实例元数据,并获取所述目标数据表在所述请求时间点的目标版本信息;
数据写入模块,配置为根据所述目标版本信息以及所述目标数据表的最新版本信息,在确定所述第二目标数据的写入与针对所述目标数据表的历史写入请求不冲突的情况下,将所述第二目标数据写入所述数据湖的所述目标数据表中,其中,所述历史写入请求包括正在向所述数据湖写入数据的第一提交请求以及在所述目标版本信息与所述最新版本信息之间的各个版本对应的第二提交请求;
数据更新模块,配置为在所述第二目标数据写入成功后,将对应所述第二目标数据的提交元数据存储在所述元数据存储模块中,并对所述元数据存储模块中对应所述目标数据表的表级别元数据和版本信息元数据以及为所述第二目标数据创建的实例元数据进行更新。
在一些实施例中,所述数据写入模块包括:
冲突检查单元,配置为根据所述目标版本信息以及所述最新版本信息,在确定所述第二目标数据的写入与所述第一提交请求和所述第二提交请求均不冲突的情况下,定期为所述请求时间点的实例元数据续租,并开始向所述目标数据表写入所述第二目标数据;
写入子单元,配置为在向所述目标数据表中写入所述第二目标数据失败的情况下,若所述第二目标数据的写入与所述第二提交请求不冲突,则将所述最新版本信息作为新的目标版本信息,并根据所述新的目标版本信息完成向所述目标数据表写入所述第二目标数据。
在一些实施例中,所述数据写入模块还包括:
第一确定子单元,配置为在所述目标版本信息与所述最新版本信息一致的情况下,若所述第二目标数据的写入与所述第一提交请求不冲突,则确定所述第二目标数据的写入与所述第一提交请求和所述第二提交请求均不冲突。
在一些实施例中,所述数据写入模块还包括:
第二确定子单元,配置为在所述第二目标数据的写入与所述第一提交请求冲突的情况下,若所述第一提交请求的租约过期,则确定所述第二目标数据的写入与所述第一提交请求和所述第二提交请求均不冲突。
在一些实施例中,所述数据写入模块还包括:
第三确定子单元,配置为在所述目标版本信息与所述最新版本信息不一致的情况下,若所述第二目标数据的写入与所述第二提交请求不冲突,则将所述最新版本信息作为新的目标版本信息,并根据所述新的目标版本信息重新判断所述新的目标版本信息与所述目标数据表的最新版本信息是否一致。
在一些实施例中,所述装置还包括:
缓存模块,配置为将所述元数据存储模块中存储的预设类型的数据缓存至本地,以使所述引擎侧能够在所述本地访问所述预设类型的数据。
在一些实施例中,所述缓存模块包括:
第一存储子单元,配置为将所述元数据存储模块中存储的第一类型的数据缓存至所述本地,其中,所述第一类型的数据为所述引擎侧的访问频率达到第一预设频率且数据大小达到第一数据量的数据;和/或
第二存储子单元,配置为基于最近最少使用算法将所述元数据存储模块中存储的第二类型的数据缓存至本地,其中,所述第二类型的数据为所述引擎侧的访问频率达到第二预设频率且数据大小达到第二数据量的数据,所述第二预设频率小于所述第一预设频率,所述第二数据量大于所述第一数据量。
关于上述实施例中的装置的各个功能模块的具体实施方式,已在关于方法的部分进行了详细说明,在此不再赘述。
图8是根据一示例性实施例提出的一种电子设备的结构示意图。如图8所示,其示出了适于用来实现本公开实施例的电子设备的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,服务器可以利用诸如HTTP(HyperText Transfer Protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取引擎侧发送的数据访问请求,其中,所述数据访问请求用于请求对数据湖中的第一目标数据进行访问操作;根据所述数据访问请求从元数据存储模块中确定对应所述第一目标数据的目标元数据,其中,所述元数据存储模块采用不同的存储模式分别存储所述数据湖的元数据,采用所述不同的存储模式存储的元数据之间,具有至少一种相同的信息;将所述数据湖中对应所述目标元数据的第一目标数据发送给所述引擎侧。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

Claims (12)

1.一种数据管理方法,其特征在于,包括:
获取引擎侧发送的数据访问请求,其中,所述数据访问请求用于请求对数据湖中的第一目标数据进行访问操作;
根据所述数据访问请求从元数据存储模块中确定对应所述第一目标数据的目标元数据,其中,所述元数据存储模块采用不同的存储模式分别存储所述数据湖的元数据,采用所述不同的存储模式存储的元数据之间,具有至少一种相同的信息;
将所述数据湖中对应所述目标元数据的第一目标数据发送给所述引擎侧;
所述元数据存储模块采用不同的存储模式分别存储所述数据湖的元数据包括实例元数据、表级别元数据、提交元数据以及版本信息元数据;
其中,所述实例元数据是在接收所述引擎侧向所述数据湖写入数据的请求时,创建的用于记录数据写入状态的元数据;
所述提交元数据是在所述引擎侧向所述数据湖成功写入一次数据后提交的对应本次写入数据的元数据;
所述版本信息元数据表征写入到所述数据湖的数据表的版本信息;
所述表级别元数据记录有数据在所述数据湖的数据表中的索引信息;
所述方法还包括:
响应于向所述数据湖的目标数据表写入第二目标数据的请求,在所述元数据存储模块中创建对应请求时间点的实例元数据,并获取所述目标数据表在所述请求时间点的目标版本信息;
根据所述目标版本信息以及所述目标数据表的最新版本信息,在确定所述第二目标数据的写入与针对所述目标数据表的历史写入请求不冲突的情况下,将所述第二目标数据写入所述数据湖的所述目标数据表中,其中,所述历史写入请求包括正在向所述数据湖写入数据的第一提交请求以及在所述目标版本信息与所述最新版本信息之间的各个版本对应的第二提交请求;
在所述第二目标数据写入成功后,将对应所述第二目标数据的提交元数据存储在所述元数据存储模块中,并对所述元数据存储模块中对应所述目标数据表的表级别元数据和版本信息元数据以及为所述第二目标数据创建的实例元数据进行更新。
2.根据权利要求1所述的方法,其特征在于,所述元数据存储模块包括不同的存储系统,其中,针对每一所述存储系统,采用对应所述存储系统的存储模式存储所述数据湖的元数据。
3.根据权利要求1所述的方法,其特征在于,所述表级别元数据包括数据分区信息以及每一分区下的每一数据的索引信息,所述将所述数据湖中对应所述目标元数据的第一目标数据发送给所述引擎侧,包括:
根据所述目标元数据中包括的目标分区下的每一数据的索引信息,对所述目标分区中的数据进行分割,得到所述第一目标数据;
将所述第一目标数据发送给所述引擎侧。
4.根据权利要求1所述的方法,其特征在于,所述根据所述目标版本信息以及所述目标数据表的最新版本信息,在确定所述第二目标数据的写入与针对所述目标数据表的历史写入请求不冲突的情况下,将所述第二目标数据写入所述数据湖的所述目标数据表中,包括:
根据所述目标版本信息以及所述最新版本信息,在确定所述第二目标数据的写入与所述第一提交请求和所述第二提交请求均不冲突的情况下,定期为所述请求时间点的实例元数据续租,并开始向所述目标数据表写入所述第二目标数据;
在向所述目标数据表中写入所述第二目标数据失败的情况下,若所述第二目标数据的写入与所述第二提交请求不冲突,则将所述最新版本信息作为新的目标版本信息,并根据所述新的目标版本信息完成向所述目标数据表写入所述第二目标数据。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在所述目标版本信息与所述最新版本信息一致的情况下,若所述第二目标数据的写入与所述第一提交请求不冲突,则确定所述第二目标数据的写入与所述第一提交请求和所述第二提交请求均不冲突。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述第二目标数据的写入与所述第一提交请求冲突的情况下,若所述第一提交请求的租约过期,则确定所述第二目标数据的写入与所述第一提交请求和所述第二提交请求均不冲突。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述目标版本信息与所述最新版本信息不一致的情况下,若所述第二目标数据的写入与所述第二提交请求不冲突,则将所述最新版本信息作为新的目标版本信息,并根据所述新的目标版本信息重新判断所述新的目标版本信息与所述目标数据表的最新版本信息是否一致。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述元数据存储模块中存储的预设类型的数据缓存至本地,以使所述引擎侧能够基于本地缓存的所述预设类型的数据访问所述数据湖中的数据。
9.根据权利要求8所述的方法,其特征在于,所述将所述元数据存储模块中存储的预设类型的数据缓存至本地,包括:
将所述元数据存储模块中存储的第一类型的数据缓存至所述本地,其中,所述第一类型的数据为所述引擎侧的访问频率达到第一预设频率且数据大小达到第一数据量的数据;和/或
基于最近最少使用算法将所述元数据存储模块中存储的第二类型的数据缓存至本地,其中,所述第二类型的数据为所述引擎侧的访问频率达到第二预设频率且数据大小达到第二数据量的数据,所述第二预设频率小于所述第一预设频率,所述第二数据量大于所述第一数据量。
10.一种数据管理装置,其特征在于,包括:
获取模块,配置为获取引擎侧发送的数据访问请求,其中,所述数据访问请求用于请求对数据湖中的第一目标数据进行访问操作;
确定模块,配置为根据所述数据访问请求从元数据存储模块中确定对应所述第一目标数据的目标元数据,其中,所述元数据存储模块采用不同的存储模式分别存储所述数据湖的元数据,采用所述不同的存储模式存储的元数据之间,具有至少一种相同的信息;
发送模块,配置为将所述数据湖中对应所述目标元数据的第一目标数据发送给所述引擎侧;
所述元数据存储模块采用不同的存储模式分别存储所述数据湖的元数据包括实例元数据、表级别元数据、提交元数据以及版本信息元数据;
其中,所述实例元数据是在接收所述引擎侧向所述数据湖写入数据的请求时,创建的用于记录数据写入状态的元数据;
所述提交元数据是在所述引擎侧向所述数据湖成功写入一次数据后提交的对应本次写入数据的元数据;
所述版本信息元数据表征写入到所述数据湖的数据表的版本信息;
所述表级别元数据记录有数据在所述数据湖的数据表中的索引信息;
所述装置还包括:
创建模块,配置为响应于向所述数据湖的目标数据表写入第二目标数据的请求,在所述元数据存储模块中创建对应请求时间点的实例元数据,并获取所述目标数据表在所述请求时间点的目标版本信息;
数据写入模块,配置为根据所述目标版本信息以及所述目标数据表的最新版本信息,在确定所述第二目标数据的写入与针对所述目标数据表的历史写入请求不冲突的情况下,将所述第二目标数据写入所述数据湖的所述目标数据表中,其中,所述历史写入请求包括正在向所述数据湖写入数据的第一提交请求以及在所述目标版本信息与所述最新版本信息之间的各个版本对应的第二提交请求;
数据更新模块,配置为在所述第二目标数据写入成功后,将对应所述第二目标数据的提交元数据存储在所述元数据存储模块中,并对所述元数据存储模块中对应所述目标数据表的表级别元数据和版本信息元数据以及为所述第二目标数据创建的实例元数据进行更新。
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理装置执行时实现权利要求1-9中任一项所述方法的步骤。
12.一种电子设备,其特征在于,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现权利要求1-9中任一项所述方法的步骤。
CN202111062534.3A 2021-09-10 2021-09-10 数据管理方法、装置、存储介质以及电子设备 Active CN113761294B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202111062534.3A CN113761294B (zh) 2021-09-10 2021-09-10 数据管理方法、装置、存储介质以及电子设备
US18/278,149 US20240054163A1 (en) 2021-09-10 2022-09-06 Data management method and apparatus, storage medium, and electronic device
PCT/CN2022/117262 WO2023036128A1 (zh) 2021-09-10 2022-09-06 数据管理方法、装置、存储介质以及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111062534.3A CN113761294B (zh) 2021-09-10 2021-09-10 数据管理方法、装置、存储介质以及电子设备

Publications (2)

Publication Number Publication Date
CN113761294A CN113761294A (zh) 2021-12-07
CN113761294B true CN113761294B (zh) 2023-03-24

Family

ID=78794720

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111062534.3A Active CN113761294B (zh) 2021-09-10 2021-09-10 数据管理方法、装置、存储介质以及电子设备

Country Status (3)

Country Link
US (1) US20240054163A1 (zh)
CN (1) CN113761294B (zh)
WO (1) WO2023036128A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113761294B (zh) * 2021-09-10 2023-03-24 北京火山引擎科技有限公司 数据管理方法、装置、存储介质以及电子设备
CN114265814B (zh) * 2022-03-01 2022-06-07 天津安锐捷技术有限公司 一种基于对象存储的数据湖文件系统
CN115208937A (zh) * 2022-07-07 2022-10-18 北京火山引擎科技有限公司 业务请求处理方法及装置
CN116028504B (zh) * 2023-02-20 2023-05-30 北京数元灵科技有限公司 一种数据湖元数据管理方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10949440B2 (en) * 2017-03-03 2021-03-16 Next Pathway Inc. Metadata-driven data management platform
US20180373781A1 (en) * 2017-06-21 2018-12-27 Yogesh PALRECHA Data handling methods and system for data lakes
US11537617B2 (en) * 2019-04-30 2022-12-27 Dremio Corporation Data system configured to transparently cache data of data sources and access the cached data
CN112307122B (zh) * 2020-10-30 2023-06-02 杭州海康威视数字技术股份有限公司 一种基于数据湖的数据管理系统及方法
CN113220693B (zh) * 2021-06-02 2023-10-20 北京火山引擎科技有限公司 计算存储分离系统及其数据访问方法、介质和电子设备
CN113761294B (zh) * 2021-09-10 2023-03-24 北京火山引擎科技有限公司 数据管理方法、装置、存储介质以及电子设备

Also Published As

Publication number Publication date
US20240054163A1 (en) 2024-02-15
CN113761294A (zh) 2021-12-07
WO2023036128A1 (zh) 2023-03-16

Similar Documents

Publication Publication Date Title
CN113761294B (zh) 数据管理方法、装置、存储介质以及电子设备
US8548945B2 (en) Database caching utilizing asynchronous log-based replication
CN113220693B (zh) 计算存储分离系统及其数据访问方法、介质和电子设备
US8200624B2 (en) Membership tracking and data eviction in mobile middleware scenarios
US10338917B2 (en) Method, apparatus, and system for reading and writing files
EP2653986B1 (en) Client-side caching of a database transaction token.
US20170192863A1 (en) System and method of failover recovery
CN111797121B (zh) 读写分离架构业务系统的强一致性查询方法、装置及系统
CN111177161B (zh) 数据处理方法、装置、计算设备和存储介质
US20190129982A1 (en) Just-in-time multi-indexed tables in a shared log
EP4216061A1 (en) Transaction processing method, system, apparatus, device, storage medium, and program product
CN113094430A (zh) 一种数据处理方法、装置、设备以及存储介质
US10565184B2 (en) Method and system for committing transactions in a semi-distributed manner
US10162841B1 (en) Data management platform
WO2020192663A1 (zh) 一种数据管理方法及相关设备
US8874682B2 (en) Composite graph cache management
US20140032590A1 (en) Windowed mid-tier data cache
US10331747B1 (en) Method and system for creating and using persona in a content management system
CN115113989B (zh) 事务执行方法、装置、计算设备及存储介质
CN112559560A (zh) 元数据读取方法及装置、更新方法及装置、存储装置
US10685014B1 (en) Method of sharing read-only data pages among transactions in a database management system
US7251660B2 (en) Providing mappings between logical time values and real time values in a multinode system
US11768741B2 (en) Replicating changes written by a transactional virtual storage access method
CN115098537A (zh) 事务执行方法、装置、计算设备及存储介质
US20240078221A1 (en) Systems and methods of modeling and querying dynamic temporal graph on massive parallel graph processing and storage engine

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