CN113778975B - 基于分布式数据库的数据处理方法及装置 - Google Patents
基于分布式数据库的数据处理方法及装置 Download PDFInfo
- Publication number
- CN113778975B CN113778975B CN202111082463.3A CN202111082463A CN113778975B CN 113778975 B CN113778975 B CN 113778975B CN 202111082463 A CN202111082463 A CN 202111082463A CN 113778975 B CN113778975 B CN 113778975B
- Authority
- CN
- China
- Prior art keywords
- file
- version
- data
- file version
- metadata
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 46
- 238000003860 storage Methods 0.000 claims description 121
- 238000004140 cleaning Methods 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 26
- 238000010586 diagram Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011066 ex-situ storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供基于分布式数据库的数据处理方法及装置,其在每个执行节点的本地缓存中均存储有包括多个文件版本和对应文件元数据的文件版本信息,而针对不同执行节点来说,其文件版本信息中同一文件版本的文件元数据是相同的;在执行节点执行读请求时,可基于该文件版本信息找到对应的最新的第一目标文件版本,并将该第一目标文件版本发送至其他执行节点,以使得在各执行节点执行读请求时均利用第一目标文件版本对应的第一目标元数据来进行数据读处理,而得到的数据读结果将汇总至执行节点中一并展示给用户。通过这样的数据处理方式,使得各执行节点执行读请求时所得到的数据读结果是一致的,保证了分布式数据库的读一致性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于分布式数据库的数据处理方法及装置。
背景技术
随着互联网行业的飞速发展,利用分布式数据库对数据进行读写操作和查询处理成为主流趋势。
在现有的基于共享存储的分布式数据库中,读操作和写操作会被分配到不同的执行节点执行。在一些用于支持业务查询的分布式数据库中,往往会要求数据库能够支持数据的实时查询获取。由于现有的分布式数据库的各执行节点一般采用异步的方式进行数据同步,这就使得在执行节点触发数据查询的读操作时,其所读取的数据可能已经被其他执行节点进行了删除或修改等更新,此时,在其他执行节点读取该数据的用户所获得的读结果将与当前执行节点提供给用户的读结果不一致。
因此,如何提供一种可使得分布式数据库的数据读一致的数据处理方法成为难题。
发明内容
本申请实施例提供一种基于分布式数据库的数据处理方法及装置,以用于为分布式数据库提供读一致的数据处理方法。
第一方面,本申请提供了基于分布式数据库的数据处理方法,其特征在于,所述数据处理方法应用于分布式数据库,所述分布式数据库包括多个执行节点以及共享存储磁盘,所述数据处理方法由所述多个执行节点中的任一执行节点执行;
所述数据处理方法,包括:
获取用户发送的第一数据读请求;
根据本地缓存中的文件版本信息,确定第一目标文件版本以及对应的第一目标文件元数据;其中,所述文件版本信息中包括有多个文件版本以及每个文件版本对应的文件元数据,所述第一目标文件版本是所述多个文件版本中最新的文件版本;
将所述第一数据读请求和所述第一目标文件版本发送至所述分布式数据库中的各其他执行节点,以使所述分布式数据库中的接收到所述第一数据读请求的全部执行节点根据所述第一目标文件版本并发执行所述第一数据读请求;
确定所述第一数据读请求的数据读结果,其中所述数据读结果中包括有所述第一目标文件元数据对应的第一目标文件数据。
可选实施方式中,还包括:
获取其他执行节点发送的第二数据读请求以及所述第二数据读请求对应的第二目标文件版本;
判断本地缓存的文件版本信息中是否包括有所述第二目标文件版本;
若是,则确定所述第二目标文件版本对应的第二目标文件元数据;
利用所述第二目标文件元数据执行所述第二数据读请求,并将所述第二数据读请求的数据结果反馈至所述其他执行节点。
可选实施方式中,若本地缓存的文件版本信息中不包括有所述第二目标文件版本,则所述数据处理方法还包括:
从所述共享存储磁盘读取包括所述第二目标文件版本和所述第二目标文件元数据在内的版本更新数据,利用所述版本更新数据对所述本地缓存的文件版本信息进行更新,以将所述第二目标文件版本和所述第二目标文件元数据存储在本地缓存的文件版本信息;
利用所述第二目标文件元数据执行所述第二数据读请求,并将所述第二数据读请求的数据结果反馈至所述其他执行节点。
可选实施方式中,还包括:
获取用户发送的数据写请求,所述数据写请求包括待写入的文件数据;
利用所述待写入的文件数据对本地缓存中的文件版本信息进行更新得到更新后的文件版本信息,所述更新后的文件版本信息包括第三目标文件版本和对应的第三目标文件元数据;
将所述待写入的文件数据以及包括所述第三目标文件版本和所述第三目标文件元数据的版本更新数据发送并存储至所述共享存储磁盘,以利使得各其他执行节点从所述共享存储磁盘中读取将包括所述第三目标文件版本和所述第三目标文件元数据在内的版本更新数据,并根据所述版本更新数据对各其他执行节点在其本地缓存的文件版本信息进行更新。
可选实施方式中,所述共享存储磁盘中还包括有各文件版本对应的版本使用状态;
所述数据处理方法,还包括:
若所述分布式数据库中存在任一执行节点利用文件元数据执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的版本使用状态置为使用状态;
若所述分布式数据库中不存在执行节点利用文件元数据执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的版本使用状态置为空闲状态。
可选实施方式中,所述共享存储磁盘中每个文件版本的版本使用状态是利用计数器的计数值来确定的;
所述数据处理方法,还包括:
若执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的计数器的计数值加一;
若完成执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的计数器的计数值减一;
其中,若所述共享存储磁盘中文件版本的计数器的计数值不为0,则所述文件版本的版本使用状态为使用状态;若所述共享存储磁盘中文件版本的计数器的计数值为0,则所述文件版本的版本使用状态为空闲状态。
可选实施方式中,还包括:
根据所述各文件版本的版本状态进行版本清理。
可选实施方式中,所述根据各文件版本的版本状态进行版本清理,包括:
根据各文件版本的版本状态和各文件版本之间的先后关系,确定待清理的文件版本:
将待清理的文件版本的清理消息通过共享存储磁盘发送至其他执行节点,以使得分布式数据库中的各执行节点对各自本地缓存的文件版本信息中所述待清理的文件版本以及对应的文件元数据进行清理。
可选实施方式中,所述根据各文件版本的版本状态和各文件版本之间的先后关系,确定待清理的文件版本,包括:
根据本地缓存中的文件版本信息,确定第四目标文件版本,其中,所述第四目标文件版本是文件版本信息中最老的文件版本;
读取所述共享存储磁盘中第四目标文件版本对应的版本使用状态,若所述第四目标文件版本的版本使用状态为空闲状态,则将该第四目标文件文件版本作为所述待清理的文件版本。
可选实施方式中,所述文件版本信息中还包括有各文件元数据对应的文件数据的文件状态信息;
所述数据处理方法,还包括:
根据所述文件版本信息中各文件元数据对应的文件数据的文件状态信息,确定是否有待清理的文件数据;
若有,则向所述共享存储磁盘发送清理消息,以清除所述待清理的文件数据。
可选实施方式中,所述确定是否有待清理的文件数据,包括:
若所述文件数据的文件状态信息指示为所述文件数据为失效文件;
则所述文件数据将作为待清理的文件数据,向所述共享存储磁盘发送清理所述待清理的文件数据的清理消息。
可选实施方式中,所述确定是否有待清理的文件数据,还包括:
确定任一文件数据的文件元数据是否包括在最新的文件版本对应的文件元数据中且包括有该任一文件数据的文件元数据的文件版本处于空闲状态,则将该任一文件数据作为待清理的文件数据;
第二方面,本申请提供了一种执行节点,所述执行节点设置于分布式数据库中,所述分布式数据库包括多个执行节点以及共享存储磁盘,所述执行节点,包括:
收发控制模块,用于获取用户发送的第一数据读请求;
版本处理模块,用于根据本地缓存中的文件版本信息,确定第一目标文件版本以及对应的第一目标文件元数据;其中,所述文件版本信息中包括有多个文件版本以及每个文件版本对应的文件元数据,所述第一目标文件版本是所述多个文件版本中最新的文件版本;
所述收发控制模块,还用于将所述第一数据读请求和所述第一目标文件版本发送至所述分布式数据库中的各其他执行节点,以使所述分布式数据库中的接收到所述第一数据读请求的全部执行节点根据所述第一目标文件版本并发执行所述第一数据读请求;
执行模块,用于确定所述第一数据读请求的数据读结果,其中所述数据读结果中包括有所述第一目标文件元数据对应的第一目标文件数据。
可选实施方式中,所述收发控制模块还用于:
获取其他执行节点发送的第二数据读请求以及所述第二数据读请求对应的第二目标文件版本;
所述版本处理模块,还用于判断本地缓存的文件版本信息中是否包括有所述第二目标文件版本;若是,则确定所述第二目标文件版本对应的第二目标文件元数据;利用所述第二目标文件元数据执行所述第二数据读请求,并通过所述收发控制模块将所述第二数据读请求的数据结果反馈至所述其他执行节点。
可选实施方式中,若本地缓存的文件版本信息中不包括有所述第二目标文件版本,则所述收发控制模块还用于:
从所述共享存储磁盘读取包括所述第二目标文件版本和所述第二目标文件元数据在内的版本更新数据,所述版本处理模块,还用于利用所述版本更新数据对所述本地缓存的文件版本信息进行更新,以将所述第二目标文件版本和所述第二目标文件元数据存储在本地缓存的文件版本信息;
所述执行模块,用于利用所述第二目标文件元数据执行所述第二数据读请求,并通过所述收发控制模块将所述第二数据读请求的数据结果反馈至所述其他执行节点。
可选实施方式中,所述收发控制模块还用于:获取用户发送的数据写请求,所述数据写请求包括待写入的文件数据;
所述版本处理模块,用于利用所述待写入的文件数据对本地缓存中的文件版本信息进行更新得到更新后的文件版本信息,所述更新后的文件版本信息包括第三目标文件版本和对应的第三目标文件元数据;
所述收发控制模块还用于将所述待写入的文件数据以及包括所述第三目标文件版本和所述第三目标文件元数据的版本更新数据发送并存储至所述共享存储磁盘,以利使得各其他执行节点从所述共享存储磁盘中读取将包括所述第三目标文件版本和所述第三目标文件元数据在内的版本更新数据,并根据所述版本更新数据对各其他执行节点在其本地缓存的文件版本信息进行更新。
可选实施方式中,所述共享存储磁盘中还包括有各文件版本对应的版本使用状态;
所述版本处理模块,还用于若所述分布式数据库中存在任一执行节点利用文件元数据执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的版本使用状态置为使用状态;
若所述分布式数据库中不存在执行节点利用文件元数据执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的版本使用状态置为空闲状态。
可选实施方式中,所述共享存储磁盘中每个文件版本的版本使用状态是利用计数器的计数值来确定的;
所述版本处理模块,还用于若执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的计数器的计数值加一;若完成执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的计数器的计数值减一;其中,若所述共享存储磁盘中文件版本的计数器的计数值不为0,则所述文件版本的版本使用状态为使用状态;若所述共享存储磁盘中文件版本的计数器的计数值为0,则所述文件版本的版本使用状态为空闲状态。
可选实施方式中,所述版本处理模块,还用于:
根据所述各文件版本的版本状态进行版本清理。
可选实施方式中,所述版本处理模块,具体用于:根据各文件版本的版本状态和各文件版本之间的先后关系,确定待清理的文件版本:
将待清理的文件版本的清理消息通过共享存储磁盘发送至其他执行节点,以使得分布式数据库中的各执行节点对各自本地缓存的文件版本信息中所述待清理的文件版本以及对应的文件元数据进行清理。
可选实施方式中,所述版本处理模块,具体用于:根据本地缓存中的文件版本信息,确定第四目标文件版本,其中,所述第四目标文件版本是文件版本信息中最老的文件版本;读取所述共享存储磁盘中第四目标文件版本对应的版本使用状态,若所述第四目标文件版本的版本使用状态为空闲状态,则将该第四目标文件文件版本作为所述待清理的文件版本。
可选实施方式中,所述文件版本信息中还包括有各文件元数据对应的文件数据的文件状态信息;
所述版本处理模块,还用于:根据所述文件版本信息中各文件元数据对应的文件数据的文件状态信息,确定是否有待清理的文件数据;若有,则向所述共享存储磁盘发送清理消息,以清除所述待清理的文件数据。
可选实施方式中,所述版本处理模块具体用于:若所述文件数据的文件状态信息指示为所述文件数据为失效文件;
则所述文件数据将作为待清理的文件数据,向所述共享存储磁盘发送清理所述待清理的文件数据的清理消息。
可选实施方式中,所述版本处理模块具体用于:确定任一文件数据的文件元数据是否包括在最新的文件版本对应的文件元数据中且包括有该任一文件数据的文件元数据的文件版本处于空闲状态,则将该任一文件数据作为待清理的文件数据。
第三方面,本申请提供了一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面所述的方法。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面的所述的方法。
第五方面,本申请提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面的所述的方法。
本申请实施例提供基于分布式数据库的数据处理方法及装置,在每个执行节点的本地缓存中均存储有包括多个文件版本和对应文件元数据的文件版本信息,而针对不同执行节点来说,其文件版本信息中同一文件版本的文件元数据是相同的;在执行节点执行读请求时,可基于该文件版本信息找到对应的最新的第一目标文件版本,并将该第一目标文件版本发送至其他执行节点,以使得在各执行节点执行读请求时均利用第一目标文件版本对应的第一目标元数据来进行数据读处理,而得到的数据读结果将汇总至执行节点中一并展示给用户。通过这样的基于文件版本信息的数据读请求的数据处理方式,使得各执行节点执行读请求时所得到的数据读结果是一致的,保证了分布式数据库的读一致性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为现有技术中分布式数据库的数据处理流程的示意图;
图2为本申请所基于的一种网络架构的示意图;
图3是本申请提供的一种基于分布式数据库的数据处理方法的流程示意图;
图4为本申请实施例提供的数据写请求的处理流程的示意图;
图5为本申请实施例提供的一种对文件版本信息进行清理的处理流程的示意图;
图6为本申请实施例提供的一种执行节点的结构示意图;
图7为本发明实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的***和方法的例子。
随着互联网行业的飞速发展,利用分布式数据库对数据进行读写操作和查询处理成为主流趋势。
在现有的基于共享存储的分布式数据库中,读操作和写操作会被分配到不同的执行节点执行。在一些用于支持业务查询的分布式数据库中,往往会要求数据库能够支持数据的实时查询获取。由于现有的分布式数据库的各执行节点一般采用异步的方式进行数据同步,这就使得在执行节点触发数据查询的读操作时,其所读取的数据可能已经被其他执行节点进行了删除或修改等更新,此时,在其他执行节点读取该数据的用户所获得的读结果将与当前执行节点提供给用户的读结果不一致。
图1为现有技术中分布式数据库的数据处理流程的示意图,如图1所示的,在分布式数据库包括有多个执行节点(如图1所示的4个)和共享存储磁盘。
在time为0的t0时刻,共享存储磁盘中的文件数据包括F1、F2和F3。
在time为1的t1时刻,执行节点A对F1和F2这两个文件数据进行了合并处理,得到了F4,此时,共享存储磁盘中存储有F3和F4。同时,在t1时刻,执行节点A的本地缓存内将包括有F3和F4。而由于各执行节点的本地缓存是异步更新的,即对于执行节点B、C和D来说,其执行本地缓存更新的时刻要晚于执行节点A的缓存更新时间(假设执行节点B、C和D的缓存更新时刻为time为4的t4时刻)。
在time为2的t2时刻,执行节点A接收到了用户触发的数据读请求,以请求查看共享存储磁盘中的全部文件数据。此时,基于分布式数据库的分布读的处理方式,该数据读请求将被执行节点A转发至执行节点B、C和D以并发执行。
在time为3的t3时刻,执行节点A根据缓存中的F3和F4执行数据读请求,并在共享存储磁盘查询到该F3和F4;但是,对于执行节点B、C和D来说,其缓存中依旧为F1、F2和F3,基于该F1、F2和F3执行节点B、C和D执行数据读请求,但共享存储磁盘2中并无F1和F2,此时执行节点B、C和D将得到读请求错误的信息。执行节点B、C和D会将读请求的结果(即,读请求错误)返回至执行节点A,但是显然的,对于执行节点A来说,其接收到的读结果和自身处理得到的读结果不一致,当用户拿到这样不一致的读结果时,其无法判定哪些数据是准确的。
因此,如何提供一种可使得分布式数据库的数据读一致的数据处理方法成为难题。
面对这种问题,在本申请提供的基于分布式数据库的数据处理方法中,用过在每个执行节点的本地缓存中设置文件版本信息,而在文件版本信息中包括有多个文件版本以及每个文件版本对应的文件元数据。其中,同一个文件版本在不同执行节点中所对应的文件元数据是完全相同的。
执行节点在执行读请求时,可基于该文件版本信息找到对应的最新的第一目标文件版本,并将该第一目标文件版本发送至其他执行节点,以使得在各执行节点执行读请求时均利用第一目标文件版本对应的第一目标元数据来进行数据读处理,而得到的数据读结果将汇总至执行节点中一并展示给用户。通过这样的基于文件版本信息的数据读请求的数据处理方式,使得各执行节点执行读请求时所得到的数据读结果是一致的,保证了分布式数据库的读一致性,从而有效解决图1所提及的问题。
下面将结合不同实现方式对本申请提供的方法进行说明。
参考图2,图2为本申请所基于的一种网络架构的示意图,该图2所示网络架构,具体可包括分布式数据库1以及用户端2;
其中,分布式数据库1具体可包括多个执行节点以及共享存储磁盘,而用户端2具体可为可用于执行业务请求发送或触发业务操作的硬件设备,其包括但不限于台式电脑、平板电脑、云计算平台。
在本申请中,用户端2可向分布式数据库1发送读请求、写请求等多种数据请求,分布式数据库1在接收到请求后将为请求分配执行节点,而执行节点将按照本申请提供的数据处理方法来执行相应的操作。
而为了便于说明,本申请将以其中一个执行节点作为执行主体并结合附图,对本案中的基于分布式数据库的数据处理方法进行描述。而对于其他执行节点来说,其实现数据处理方法与本申请所描述的当前的执行节点的数据处理方法相同,本申请对其不再进行赘述。
实施例一
图3是本申请提供的一种基于分布式数据库的数据处理方法的流程示意图。其中,在本申请实施例中基于分布式数据库包括多个执行节点以及共享存储磁盘,图3所示流程的执行主体为多个执行节点中的其中任一执行节点。
如图3所示的,该数据处理方法,包括:
步骤301、获取用户发送的第一数据读请求;
步骤302、根据本地缓存中的文件版本信息,确定第一目标文件版本以及对应的第一目标文件元数据;其中,所述文件版本信息中包括有多个文件版本以及每个文件版本对应的文件元数据,所述第一目标文件版本是所述多个文件版本中最新的文件版本;
步骤303、将所述第一数据读请求和所述第一目标文件版本发送至所述分布式数据库中的各其他执行节点,以使所述分布式数据库中的接收到所述第一数据读请求的全部执行节点根据所述第一目标文件版本并发执行所述第一数据读请求;
步骤304、确定所述第一数据读请求的数据读结果,其中所述数据读结果中包括有所述第一目标文件元数据对应的第一目标文件数据。
本申请提供的基于分布式数据库的数据处理方法具体可应用在分布式数据库中的任一执行节点中。而对于分布式数据库中的其他执行节点具体可指分布式数据库中除当前执行主体的执行节点以外的剩余执行节点,其中,该其他业务设备的数量可为至少一个。
此外,针对分布式数据库的各执行节点均需采用本申请实施例提供的数据处理方法进行读请求的处理,从而保证分布式数据库在执行读请求时各执行节点可得到具有一致性的读数据结果。
在本申请实施例中,在步骤301中,用户通过用户端向分布式数据库发送第一数据读请求。分布式数据库在获取该第一数据读请求之后,会将该第一数据读请求下发给当前的执行节点,以使执行节点执行本实施方式提供的数据处理方法。
与现有技术不同的是,在执行节点的本地缓存中存储有文件版本信息,在文件版本信息中存储有多个文件版本,以及每一个文件版本对应的文件元数据。每一个文件版本和对应的文件元数据可利用{version,{file}}的格式进行表示。
举例来说,{version1,{file1、file2}};{version2,{file1、file2、file3}};{version3,{file1、file4}}等。
其中,在文件元数据中一般存储有文件数据的名称和存储地址等信息。而文件版本的次数则用于记录对文件版本信息的更新次数。
换句话说,上述的文件版本信息可以理解为,在每一次任一执行节点对文件数据进行合并、增加、删除、修改等操作时,均将生成一个文件版本,而本次操作所得到的文件数据的元数据将成为该文件版本对应的文件元数据。
也就是说,上述示例中,在version1这一文件版本中,其具有的文件数据包括有file1、file2;而在version2这一文件版本中,其具有的文件数据包括有file1 file2、file3;而在version3这一文件版本中,其具有的文件数据包括有file1、file4。
基于此,在步骤302中,执行节点在获取第一数据读请求之后,为了保证读出来的数据的时效性,执行节点将在当前本地缓存的文件版本信息中确定出最新的那个版本,即第一目标文件版本,并将该第一目标文件版本对应的第一目标文件元数据。而最新的那个文件版本一般是指创建时间最晚,文件版本序号最大的那个文件版本。
再后,执行节点执行分布式读处理过程,即将所述第一数据读请求和所述第一目标文件版本发送至所述分布式数据库中的各其他执行节点,以使包括当前的执行节点在内的接收到所述第一数据读请求的全部执行节点,根据该第一目标文件版本确定对应的第一目标文件元数据,并通过利用第一目标元数据从共享存储磁盘中读取与第一目标文件版本对应的文件数据。
依旧以前述示例为例,当前的执行节点确定出第一目标文件版本为version3,其对应的第一目标文件元数据为file1的元数据以及file4的元数据。
此时,当前的执行节点会先将version3以及第一数据读请求发送至其他执行节点,随后,当前的执行节点还会根据file1的元数据以及file4的元数据从共享存储磁盘中读取file1和file4,得到数据读结果;
当然,由于读请求是分布式进行的,在当前的执行节点读取file1和file4的同时,其他执行节点也会根据接收到的version3在自身缓存的文件版本信息中确定出version3对应的file1的元数据以及file4的元数据,并从共享存储磁盘中读取file1和file4,得到数据读结果
最后,其他执行节点会将读取到的结果一并发送至当前的执行节点。也就是说,在步骤304中,当前的执行节点会汇总并确定出第一数据读请求的数据读结果,其中所述数据读结果中包括有所述第一目标文件元数据对应的第一目标文件数据,即file1和file4的相关数据。
通过这样的基于文件版本信息的数据读请求的数据处理方式,使得各执行节点执行读请求时所得到的数据读结果是一致的,保证了分布式数据库的读一致性。
进一步来说,当分布式数据库中的其他执行节点接收到数据读请求时,当前的执行节点也需要执行相应的数据读请求,以实现对分布式读处理。基于此,在可选的实施方式中,当前的执行节点还可执行分配到其他执行节点的数据读处理。
具体来说,首先,当前的执行节点还将获取其他执行节点发送的第二数据读请求以及所述第二数据读请求对应的第二目标文件版本。
其中,该第二目标文件版本是该其他执行节点本地缓存的文件版本信息所包括的多个文件版本中最新的那个文件版本。
随后,当前的执行节点将判断本地缓存的文件版本信息中是否包括有所述第二目标文件版本。其中,如之前所述的,在分布式数据库中,各执行节点的本地缓存为异步执行的,也就是说,当前的执行节点中很可能未存储有第二目标文件版本以及其对应的第二目标文件元数据。
因此,在本实施方式中,当前的执行节点在本地缓存的文件版本信息中未找到第二目标文件版本,则需要等待对文件版本信息的更新,并在更新后再次执行确定第二目标文件版本的处理。
换句话说,若文件版本信息中包括有第二目标文件版本,则确定出第二目标文件版本对应的第二目标文件元数据。然后,利用该第二目标文件元数据,从共享存储磁盘中读取第二目标文件元数据所包含的文件数据,并将读取得到的数据结果反馈给该其他执行节点;
反之,若文件版本信息中不包括有第二目标文件版本,则当前的执行节点需要等待,直至接收到共享存储磁盘发送的第二目标文件版本和第二目标文件元数据的版本更新数据。此时,当前的执行节点将利用该版本更新数据对本地缓存的文件版本信息进行更新,以将第二目标文件版本和所述第二目标文件元数据存储在本地缓存的文件版本信息中。当前的执行节点,此时利用该第二目标文件元数据,从共享存储磁盘中读取第二目标文件元数据所包含的文件数据,并将读取得到的数据结果反馈给该其他执行节点。
当然,在上述对当前的执行节点中的文件版本信息进行更新时,一种更新方式中,当前的执行节点会从共享存储磁盘中读取完整的更新后的文件版本信息,并利用接收到的更新后的文件版本信息对本地缓存的原有的文件版本信息进行覆盖处理,从而完成更新;
在另一种更新方式中,当前的执行节点可从共享存储磁盘读取发生变动的文件元数据并基于该发生变动的文件元数据对本地缓存的原有的文件版本信息中文件元数据进行更新得到更新后的文件元数据,再将文件版本的版本号加一以作为更新后的文件版本。此时,当前的执行节点的文件版本信息中将包括有更新后的文件版本以及对应的更新后的文件元数据。
在上述实施方式的基础上,本申请还提供了执行节点对于数据写请求的处理。可选实施方式中,分布式数据库还将接收用户发送的数据写请求,并对该数据写请求进行分配。此时,当前的执行节点获取到用户发送的数据写请求,所述数据写请求包括待写入的文件数据。
由于在本申请提供的分布式数据库中,各执行节点中均包括有文件版本信息,而执行数据写请求必定会对共享存储磁盘中的文件数据进行修改,即文件版本信息必将发生更新。
其中该第二目标文件元数据中应包括有所述待写入的文件数据的文件元数据,而第三目标文件版本则为在原有文件版本上加一所得到的。
图4为本申请实施例提供的数据写请求的处理流程的示意图,如图4所示的,在time为0的t0时刻,共享存储磁盘中的文件数据包括F1和F2,相应的,各执行节点中存储的文件版本信息中包括有:{version1,{file1、file2}}。
在time为1的t1时刻,执行节点A获取到的数据写请求中的待写入的文件数据表示为file3。此时,执行节点A将对自身本地缓存中的文件版本信息进行更新得到:{version1,{file1、file2}};{version2,{file1、file2、file3}}。
在完成对自身本地缓存的文件版本信息的更新之后,当前的执行节点还会将所述待写入的文件数据以及包括所述第三目标文件版本和所述第三目标文件元数据的版本更新数据发送并存储至所述共享存储磁盘,以利使得各其他执行节点从所述共享存储磁盘中读取将包括所述第三目标文件版本和所述第三目标文件元数据在内的版本更新数据,并根据所述版本更新数据对各其他执行节点在其本地缓存的文件版本信息进行更新。
依旧以图4为例,在time为2的t2时刻,执行节点A会将该file3、以及包括有{version2,{file1、file2、file3}}的版本更新数据发送至共享存储磁盘,而共享存储磁盘会将该file3进行存储,各其他执行节点会从共享存储磁盘中读取包括有{version2,{file1、file2、file3}}的版本更新数据。
在time为3的t3时刻,其他执行节点B会根据获取的包括有{version2,{file1、file2、file3}}的版本更新数据,并对其本地缓存的文件版本信息{version1,{file1、file2}}进行更新,得到{version1,{file1、file2}};{version2,{file1、file2、file3}}的更新后的文件版本信息。
此时,各执行节点中将包括有相同的文件版本信息,且同一文件版本对应的文件元数据也是相同的。
其中对于其他执行节点利用版本更新数据进行文件版本的更新的步骤与前述实施例中的相关流程类似,在此不进行赘述。
当然,在上述对其他执行节点中的文件版本信息进行更新时,一种更新方式中,其他执行节点可执行从共享存储磁盘读取完整的更新后的文件版本信息,并利用接收到的更新后的文件版本信息对本地缓存的原有的文件版本信息进行覆盖处理,从而完成更新;
在另一种更新方式中,其他执行节点可从共享存储磁盘读取发生变动的文件元数据并基于发生变动的文件元数据对本地缓存的原有的文件版本信息中文件元数据进行更新得到更新后的文件元数据,再将文件版本的版本号加一以作为更新后的文件版本。此时,其他执行节点的文件版本信息中将包括有更新后的文件版本以及对应的更新后的文件元数据。
也就是说,基于数据量的不同,对于执行节点A发送的版本更新数据来说,其可仅包括有新增加的信息,即{version2,{file1、file2、file3}};也可包括有全部信息,即{version1,{file1、file2}};{version2,{file1、file2、file3}}。而执行节点B将根据接收到的不同的版本更新数据,对自身缓存中的文件版本信息执行相应的更新。
在上述各实施方式的基础上,为了保证各执行节点中的数据量不会过大,还需要对各执行节点中的文件版本信息中的文件版本以及相应的文件元数据进行及时清理。在清理时,为了避免清理到正在被读或被使用的文件版本,本申请将采用版本使用状态来记录各文件版本的使用状态。
可选实施方式中,共享存储磁盘中还包括有各文件版本对应的版本使用状态。如共享存储磁盘中包括有version1、version2、version3和version4,以及每个version对应的版本使用状态。
其中,若所述分布式数据库中存在任一执行节点利用文件元数据执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的版本使用状态置为使用状态。举例来说,若version3正在被当前的执行节点使用,则version3对应的版本使用状态将表征为使用状态。
反之,若所述分布式数据库中不存在执行节点利用文件元数据执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的版本使用状态置为空闲状态。举例来说,若version3未被任意一个执行节点使用,则version3对应的版本使用状态将表征为空闲状态。
进一步来说,在本申请实施方式中,共享存储磁盘中每个文件版本的版本使用状态是利用计数器的计数值来确定的。其中,若所述共享存储磁盘中文件版本的计数器的计数值不为0,则所述文件版本的版本使用状态为使用状态;若所述共享存储磁盘中文件版本的计数器的计数值为0,则所述文件版本的版本使用状态为空闲状态。
若任一执行节点执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的计数器的计数值加一;若任一执行节点完成执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的计数器的计数值减一。
举例来说,若version3的计数器的计数值为3,则说明该文件版本被3个执行节点在进行不同的读处理(即3个查询处理);若version3的计数器的计数值为0,则说明该文件版本未被执行节点使用(即未被查询)。
基于上述对于文件版本的版本使用状态的记录,可选实施方式中,当前的执行节点可根据所述各文件版本的版本使用状态进行版本清理。
具体的,当前的执行节点将根据各文件版本的版本状态和各文件版本之间的先后关系,确定待清理的文件版本。然后,将待清理的文件版本的清理消息通过共享存储磁盘发送至其他执行节点,以使得分布式数据库中的各执行节点对各自本地缓存的文件版本信息中所述待清理的文件版本以及对应的文件元数据进行清理。
由于版本使用状态是记录在共享存储磁盘中的,执行节点可实时从共享存储磁盘中调取各文件版本的版本使用状态,以便及时对版本进行清理。
图5为本申请实施例提供的一种对文件版本信息进行清理的处理流程的示意图,如图5所示的,在time为0的t0时刻,共享存储磁盘中包括有version1、version2、version3和version4,以及每个version对应的版本使用状态分别表示为0(空闲状态)、0(空闲状态)、1(使用状态)、3(使用状态)。
同时,在执行节点需要确定待清理的文件版本时,首先可从其本地缓存的文件版本信息中找到各文件版本中找到最老的文件版本,一般最老的文件版本为版本号最小的那个文件版本。如图5所示的,各执行节点的文件版本信息为{version1,{file1、file2}};{version2,{file1、file2、file3}};{version3,{file1、file4}};{version4,{file1、file4、file5}},此时,最老的文件版本为version1。
然后,在time为1的t1时刻,执行节点(如执行节点A)将从共享存储磁盘中调用version1相应的版本使用状态,如0(空闲状态),由于该版本较老且无执行节点使用,因此,可将其进行清理。
也就是说,执行节点可根据本地缓存中的文件版本信息,确定第四目标文件版本,其中,所述第四目标文件版本是文件版本信息中最老的文件版本;读取所述共享存储磁盘中第四目标文件版本对应的版本使用状态,若所述第四目标文件版本的版本使用状态为空闲状态,则将该第四目标文件文件版本作为所述待清理的文件版本。
当然,在time为2的t2时刻,在执行节点(如执行节点A)完成对version1的清理之后,执行节点(如执行节点A)还会将需要对该文件版本进行清理的清理消息,发送至各其他执行节点(如执行节点B),以供各其他执行节点(如执行节点B)异步的对该version1以及对应的元数据进行清理。
在time为3的t3时刻,各其他执行节点(如执行节点B)对该version1以及对应的元数据进行清理。此时,执行节点(如执行节点A)中的文件版本信息为{version2,{file1、file2、file3}};{version3,{file1、file4}};{version4,{file1、file4、file5}}。而各其他执行节点(如执行节点B)中的文件版本信息也为{version2,{file1、file2、file3}};{version3,{file1、file4}};{version4,{file1、file4、file5}}。
当然,在完成对version1的清理之后,执行节点(如执行节点A)还将对version2是否为待清理的文件版本进行判定,直至完成对全部较老的文件版本以及其元数据的清理处理。
对于分布式数据库来说,其全部的文件数据均存储在共享存储磁盘的存储空间中。为了降低磁盘的存储压力,本实施方式将对共享存储磁盘中的各文件数据进行清理,以提升存储空间的利用率。
可选实施方式中,被清理的文件数据一般为过时的文件数据,为了对文件数据是否过时进行表征,文件版本信息中还包括有各文件元数据对应的文件数据的文件状态信息。
也就是说,执行节点可根据所述文件版本信息中各文件元数据对应的文件数据的文件状态信息,确定是否有待清理的文件数据;若有,则向所述共享存储磁盘发送清理消息,以清除所述待清理的文件数据。
举例来说,文件版本信息还包括:{file1,outdated},{file21,outdated},{file3,outdated-in-use},{file4,in-use}。此时可知的是,“outdated”用于表征file1、file2均已失效,“outdated-in-use”用于表征file3已失效但仍处于被使用状态,而“in-use”用于表征file4为有效。
基于此,可将file1和file2作为待清理的文件数据,以使得共享存储磁盘对该file1和file2进行数据清理。而当file3从使用状态转为空闲状态时,则可对该file3进行数据清理。
可选实施方式中,确定任一文件数据的文件元数据是否包括在最新的文件版本对应的文件元数据中且包括有该任一文件数据的文件元数据的文件版本处于空闲状态,则将该任一文件数据作为待清理的文件数据。
举例来说,对于执行节点的文件版本信息来说,其表示为:{version1,{file1、file2}};{version2,{file1、file2、file3}};{version3,{file1、file4}};{version4,{file1、file4、file5}},此时,version3处于使用状态,其余版本为空闲状态。
基于上述实例,对于file1来说,由于该file1的元数据存在于最新的version4的元数据中,该file1将无法作为待清理的文件数据;对于file2来说,由于该file2的元数据不在version4的元数据中,且包括有file2的version1、version2均处于空闲状态,那么该file2可作为待清理的文件数据;对于file3来说,由于file3的元数据不在version4的元数据中,且包括有file3的version2均处于空闲状态,那么该file3可作为待清理的文件数据;最后的,对于file4、file5来说,由于该两个文件数据对应的版本为最新的版本,那么该两个数据无法被作为待清理的文件数据。上述方式可对共享存储磁盘中的文件数据进行有效清理,提升存储空闲的利用效率。
本申请实施例提供基于分布式数据库的数据处理方法及装置,在每个执行节点的本地缓存中均存储有包括多个文件版本和对应文件元数据的文件版本信息,而针对不同执行节点来说,其文件版本信息中同一文件版本的文件元数据是相同的;在执行节点执行读请求时,可基于该文件版本信息找到对应的最新的第一目标文件版本,并将该第一目标文件版本发送至其他执行节点,以使得在各执行节点执行读请求时均利用第一目标文件版本对应的第一目标元数据来进行数据读处理,而得到的数据读结果将汇总至执行节点中一并展示给用户。通过这样的基于文件版本信息的数据读请求的数据处理方式,使得各执行节点执行读请求时所得到的数据读结果是一致的,保证了分布式数据库的读一致性。
实施例二
对应于上文实施例的基于方法,图6为本申请实施例提供的一种执行节点的结构示意图,该执行节点设置于分布式数据库中,所述分布式数据库包括多个执行节点以及共享存储磁盘。
如图6所示,执行节点,包括:收发控制模块10、版本处理模块20和执行模块30。
其中,收发控制模块10,用于获取用户发送的第一数据读请求;
版本处理模块20,用于根据本地缓存中的文件版本信息,确定第一目标文件版本以及对应的第一目标文件元数据;其中,所述文件版本信息中包括有多个文件版本以及每个文件版本对应的文件元数据,所述第一目标文件版本是所述多个文件版本中最新的文件版本;
所述收发控制模块10,还用于将所述第一数据读请求和所述第一目标文件版本发送至所述分布式数据库中的各其他执行节点,以使所述分布式数据库中的接收到所述第一数据读请求的全部执行节点根据所述第一目标文件版本并发执行所述第一数据读请求;
执行模块30,用于确定所述第一数据读请求的数据读结果,其中所述数据读结果中包括有所述第一目标文件元数据对应的第一目标文件数据。
可选实施方式中,所述收发控制模块10还用于:
获取其他执行节点发送的第二数据读请求以及所述第二数据读请求对应的第二目标文件版本;
所述版本处理模块20,还用于判断本地缓存的文件版本信息中是否包括有所述第二目标文件版本;若是,则确定所述第二目标文件版本对应的第二目标文件元数据;利用所述第二目标文件元数据执行所述第二数据读请求,并通过所述收发控制模块10将所述第二数据读请求的数据结果反馈至所述其他执行节点。
可选实施方式中,若本地缓存的文件版本信息中不包括有所述第二目标文件版本,则所述收发控制模块10还用于:从所述共享存储磁盘读取包括所述第二目标文件版本和所述第二目标文件元数据在内的版本更新数据,所述版本处理模块20,还用于利用所述版本更新数据对所述本地缓存的文件版本信息进行更新,以将所述第二目标文件版本和所述第二目标文件元数据存储在本地缓存的文件版本信息;
所述执行模块30,用于利用所述第二目标文件元数据执行所述第二数据读请求,并通过所述收发控制模块10将所述第二数据读请求的数据结果反馈至所述其他执行节点。
可选实施方式中,所述收发控制模块10还用于:获取用户发送的数据写请求,所述数据写请求包括待写入的文件数据;
所述版本处理模块20,用于利用所述待写入的文件数据对本地缓存中的文件版本信息进行更新得到更新后的文件版本信息,所述更新后的文件版本信息包括第三目标文件版本和对应的第三目标文件元数据;
所述收发控制模块10还用于将所述待写入的文件数据以及包括所述第三目标文件版本和所述第三目标文件元数据的版本更新数据发送并存储至所述共享存储磁盘,以利使得各其他执行节点从所述共享存储磁盘中读取将包括所述第三目标文件版本和所述第三目标文件元数据在内的版本更新数据,并根据所述版本更新数据对各其他执行节点在其本地缓存的文件版本信息进行更新。
可选实施方式中,所述共享存储磁盘中还包括有各文件版本对应的版本使用状态;
所述版本处理模块20,还用于若所述分布式数据库中存在任一执行节点利用文件元数据执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的版本使用状态置为使用状态;若所述分布式数据库中不存在执行节点利用文件元数据执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的版本使用状态置为空闲状态。
可选实施方式中,所述共享存储磁盘中每个文件版本的版本使用状态是利用计数器的计数值来确定的;
所述版本处理模块20,还用于若执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的计数器的计数值加一;若完成执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的计数器的计数值减一;其中,若所述共享存储磁盘中文件版本的计数器的计数值不为0,则所述文件版本的版本使用状态为使用状态;若所述共享存储磁盘中文件版本的计数器的计数值为0,则所述文件版本的版本使用状态为空闲状态。
可选实施方式中,所述版本处理模块20,还用于:根据所述各文件版本的版本状态进行版本清理。
可选实施方式中,所述版本处理模块20,具体用于:根据各文件版本的版本状态和各文件版本之间的先后关系,确定待清理的文件版本:将待清理的文件版本的清理消息通过共享存储磁盘发送至其他执行节点,以使得分布式数据库中的各执行节点对各自本地缓存的文件版本信息中所述待清理的文件版本以及对应的文件元数据进行清理。
可选实施方式中,所述版本处理模块20,具体用于:根据本地缓存中的文件版本信息,确定第四目标文件版本,其中,所述第四目标文件版本是文件版本信息中最老的文件版本;读取所述共享存储磁盘中第四目标文件版本对应的版本使用状态,若所述第四目标文件版本的版本使用状态为空闲状态,则将该第四目标文件文件版本作为所述待清理的文件版本。
可选实施方式中,所述文件版本信息中还包括有各文件元数据对应的文件数据的文件状态信息;
所述版本处理模块20,还用于:根据所述文件版本信息中各文件元数据对应的文件数据的文件状态信息,确定是否有待清理的文件数据;若有,则向所述共享存储磁盘发送清理消息,以清除所述待清理的文件数据。
可选实施方式中,所述版本处理模块20具体用于:若所述文件数据的文件状态信息指示为所述文件数据为失效文件;则所述文件数据将作为待清理的文件数据,向所述共享存储磁盘发送清理所述待清理的文件数据的清理消息。
可选实施方式中,所述版本处理模块20具体用于:确定任一文件数据的文件元数据是否包括在最新的文件版本对应的文件元数据中且包括有该任一文件数据的文件元数据的文件版本处于空闲状态,则将该任一文件数据作为待清理的文件数据。
本申请实施例提供的执行节点,在每个执行节点的本地缓存中均存储有包括多个文件版本和对应文件元数据的文件版本信息,而针对不同执行节点来说,其文件版本信息中同一文件版本的文件元数据是相同的;在执行节点执行读请求时,可基于该文件版本信息找到对应的最新的第一目标文件版本,并将该第一目标文件版本发送至其他执行节点,以使得在各执行节点执行读请求时均利用第一目标文件版本对应的第一目标元数据来进行数据读处理,而得到的数据读结果将汇总至执行节点中一并展示给用户。通过这样的基于文件版本信息的数据读请求的数据处理方式,使得各执行节点执行读请求时所得到的数据读结果是一致的,保证了分布式数据库的读一致性。
实施例三
图7为本发明实施例提供的电子设备的结构示意图,如图7所示,本发明实施例还提供一种电子设备1400,包括:存储器1401,处理器1402以及计算机程序。
其中,计算机程序存储在存储器1401中,并被配置为由处理器1402执行以实现本发明任意一个实施例提供的基于异地多活***的数据同步方法。相关说明可以对应参见附图中的步骤所对应的相关描述和效果进行理解,此处不做过多赘述。
其中,本实施例中,存储器1401和处理器1402通过总线连接。
实施例四
本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现本发明任意一个实施例提供的基于异地多活***的数据同步方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的***和方法,可以通过其它的方式实现。例如,以上所描述的***实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,***或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个版本处理模块20中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程问答***的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、***或设备使用或与指令执行***、***或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、***或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,本申请提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现前所述的基于异地多活***的数据同步方法。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (15)
1.一种基于分布式数据库的数据处理方法,其特征在于,所述数据处理方法应用于分布式数据库,所述分布式数据库包括多个执行节点以及共享存储磁盘,所述数据处理方法由所述多个执行节点中的任一执行节点执行;
所述数据处理方法,包括:
获取用户发送的第一数据读请求;
根据本地缓存中的文件版本信息,确定第一目标文件版本以及对应的第一目标文件元数据;其中,所述文件版本信息中包括有多个文件版本以及每个文件版本对应的文件元数据,所述第一目标文件版本是所述多个文件版本中最新的文件版本;
将所述第一数据读请求和所述第一目标文件版本发送至所述分布式数据库中的各其他执行节点,以使所述分布式数据库中的接收到所述第一数据读请求的全部执行节点根据所述第一目标文件版本并发执行所述第一数据读请求;
确定所述第一数据读请求的数据读结果,其中所述数据读结果中包括有所述第一目标文件元数据对应的第一目标文件数据。
2.根据权利要求1所述的数据处理方法,其特征在于,还包括:
获取其他执行节点发送的第二数据读请求以及所述第二数据读请求对应的第二目标文件版本;
判断本地缓存的文件版本信息中是否包括有所述第二目标文件版本;
若是,则确定所述第二目标文件版本对应的第二目标文件元数据;
利用所述第二目标文件元数据执行所述第二数据读请求,并将所述第二数据读请求的数据结果反馈至所述其他执行节点。
3.根据权利要求2所述的数据处理方法,其特征在于,若本地缓存的文件版本信息中不包括有所述第二目标文件版本,则所述数据处理方法还包括:
从所述共享存储磁盘读取包括所述第二目标文件版本和所述第二目标文件元数据在内的版本更新数据,利用所述版本更新数据对所述本地缓存的文件版本信息进行更新,以将所述第二目标文件版本和所述第二目标文件元数据存储在本地缓存的文件版本信息;
利用所述第二目标文件元数据执行所述第二数据读请求,并将所述第二数据读请求的数据结果反馈至所述其他执行节点。
4.根据权利要求1所述的数据处理方法,其特征在于,还包括:
获取用户发送的数据写请求,所述数据写请求包括待写入的文件数据;
利用所述待写入的文件数据对本地缓存中的文件版本信息进行更新得到更新后的文件版本信息,所述更新后的文件版本信息包括第三目标文件版本和对应的第三目标文件元数据;
将所述待写入的文件数据以及包括所述第三目标文件版本和所述第三目标文件元数据的版本更新数据发送并存储至所述共享存储磁盘,以使得各其他执行节点从所述共享存储磁盘中读取包括所述第三目标文件版本和所述第三目标文件元数据在内的版本更新数据,并根据所述版本更新数据对各其他执行节点在其本地缓存的文件版本信息进行更新。
5.根据权利要求1所述的数据处理方法,其特征在于,所述共享存储磁盘中还包括有各文件版本对应的版本使用状态;
所述数据处理方法,还包括:
若所述分布式数据库中存在任一执行节点利用文件元数据执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的版本使用状态置为使用状态;
若所述分布式数据库中不存在执行节点利用文件元数据执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的版本使用状态置为空闲状态。
6.根据权利要求5所述的数据处理方法,其特征在于,所述共享存储磁盘中每个文件版本的版本使用状态是利用计数器的计数值来确定的;
所述数据处理方法,还包括:
若执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的计数器的计数值加一;
若完成执行对相应文件数据的数据读请求,则将所述共享存储磁盘中所述文件元数据对应的文件版本的计数器的计数值减一;
其中,若所述共享存储磁盘中文件版本的计数器的计数值不为0,则所述文件版本的版本使用状态为使用状态;若所述共享存储磁盘中文件版本的计数器的计数值为0,则所述文件版本的版本使用状态为空闲状态。
7.根据权利要求6所述的数据处理方法,其特征在于,还包括:
根据所述各文件版本的版本使用状态进行版本清理。
8.根据权利要求7所述的数据处理方法,其特征在于,所述根据各文件版本的版本状态进行版本清理,包括:
根据各文件版本的版本状态和各文件版本之间的先后关系,确定待清理的文件版本:
将待清理的文件版本的清理消息通过共享存储磁盘发送至其他执行节点,以使得分布式数据库中的各执行节点对各自本地缓存的文件版本信息中所述待清理的文件版本以及对应的文件元数据进行清理。
9.根据权利要求8所述的数据处理方法,其特征在于,所述根据各文件版本的版本状态和各文件版本之间的先后关系,确定待清理的文件版本,包括:
根据本地缓存中的文件版本信息,确定第四目标文件版本,其中,所述第四目标文件版本是文件版本信息中最老的文件版本;
读取所述共享存储磁盘中第四目标文件版本对应的版本使用状态,若所述第四目标文件版本的版本使用状态为空闲状态,则将该第四目标文件版本作为所述待清理的文件版本。
10.根据权利要求1所述的数据处理方法,其特征在于,所述文件版本信息中还包括有各文件元数据对应的文件数据的文件状态信息;
所述数据处理方法,还包括:
根据所述文件版本信息中各文件元数据对应的文件数据的文件状态信息,确定是否有待清理的文件数据;
若有,则向所述共享存储磁盘发送清理消息,以清除所述待清理的文件数据。
11.根据权利要求10所述的数据处理方法,其特征在于,所述确定是否有待清理的文件数据,包括:
若所述文件数据的文件状态信息指示为所述文件数据为失效文件;
则所述文件数据将作为待清理的文件数据,向所述共享存储磁盘发送清理所述待清理的文件数据的清理消息。
12.根据权利要求11所述的数据处理方法,其特征在于,所述确定是否有待清理的文件数据,还包括:
确定任一文件数据的文件元数据是否包括在最新的文件版本对应的文件元数据中且包括有该任一文件数据的文件元数据的文件版本处于空闲状态,则将该任一文件数据作为待清理的文件数据。
13.一种执行节点,其特征在于,所述执行节点设置于分布式数据库中,所述分布式数据库包括多个执行节点以及共享存储磁盘,所述执行节点,包括:
收发控制模块,用于获取用户发送的第一数据读请求;
版本处理模块,用于根据本地缓存中的文件版本信息,确定第一目标文件版本以及对应的第一目标文件元数据;其中,所述文件版本信息中包括有多个文件版本以及每个文件版本对应的文件元数据,所述第一目标文件版本是所述多个文件版本中最新的文件版本;
所述收发控制模块,还用于将所述第一数据读请求和所述第一目标文件版本发送至所述分布式数据库中的各其他执行节点,以使所述分布式数据库中的接收到所述第一数据读请求的全部执行节点根据所述第一目标文件版本并发执行所述第一数据读请求;
执行模块,用于确定所述第一数据读请求的数据读结果,其中所述数据读结果中包括有所述第一目标文件元数据对应的第一目标文件数据。
14.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111082463.3A CN113778975B (zh) | 2021-09-15 | 2021-09-15 | 基于分布式数据库的数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111082463.3A CN113778975B (zh) | 2021-09-15 | 2021-09-15 | 基于分布式数据库的数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113778975A CN113778975A (zh) | 2021-12-10 |
CN113778975B true CN113778975B (zh) | 2023-11-03 |
Family
ID=78844251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111082463.3A Active CN113778975B (zh) | 2021-09-15 | 2021-09-15 | 基于分布式数据库的数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113778975B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114722125A (zh) * | 2022-04-11 | 2022-07-08 | 京东科技信息技术有限公司 | 数据库事务处理的方法、装置、设备和计算机可读介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452445A (en) * | 1992-04-30 | 1995-09-19 | Oracle Corporation | Two-pass multi-version read consistency |
US8843441B1 (en) * | 2012-01-17 | 2014-09-23 | Amazon Technologies, Inc. | System and method for maintaining a master replica for reads and writes in a data store |
US9507843B1 (en) * | 2013-09-20 | 2016-11-29 | Amazon Technologies, Inc. | Efficient replication of distributed storage changes for read-only nodes of a distributed database |
CN110196856A (zh) * | 2019-05-09 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种分布式数据读取方法及装置 |
CN111427966A (zh) * | 2020-06-10 | 2020-07-17 | 腾讯科技(深圳)有限公司 | 数据库事务处理方法、装置及服务器 |
CN112948064A (zh) * | 2021-02-23 | 2021-06-11 | 北京金山云网络技术有限公司 | 一种数据读取方法、装置及数据读取*** |
CN113220669A (zh) * | 2021-06-09 | 2021-08-06 | 京东科技控股股份有限公司 | 业务数据的处理方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2555129B1 (en) * | 2011-08-03 | 2019-02-06 | Amadeus S.A.S. | Method and system to maintain strong consistency of distributed replicated contents in a client/server system |
-
2021
- 2021-09-15 CN CN202111082463.3A patent/CN113778975B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452445A (en) * | 1992-04-30 | 1995-09-19 | Oracle Corporation | Two-pass multi-version read consistency |
US8843441B1 (en) * | 2012-01-17 | 2014-09-23 | Amazon Technologies, Inc. | System and method for maintaining a master replica for reads and writes in a data store |
US9507843B1 (en) * | 2013-09-20 | 2016-11-29 | Amazon Technologies, Inc. | Efficient replication of distributed storage changes for read-only nodes of a distributed database |
CN110196856A (zh) * | 2019-05-09 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种分布式数据读取方法及装置 |
CN111427966A (zh) * | 2020-06-10 | 2020-07-17 | 腾讯科技(深圳)有限公司 | 数据库事务处理方法、装置及服务器 |
CN112948064A (zh) * | 2021-02-23 | 2021-06-11 | 北京金山云网络技术有限公司 | 一种数据读取方法、装置及数据读取*** |
CN113220669A (zh) * | 2021-06-09 | 2021-08-06 | 京东科技控股股份有限公司 | 业务数据的处理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113778975A (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558615B2 (en) | Atomic incremental load for map-reduce systems on append-only file systems | |
US20190012321A1 (en) | Virtual Partitions in Virtual Databases | |
CN110046133B (zh) | 一种存储文件***的元数据管理方法、装置及*** | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
CN111492354A (zh) | 不可变存储装置中的数据库元数据 | |
CN112997167A (zh) | 数据库***中的任务调度 | |
CN112306993B (zh) | 基于Redis的数据读取方法、装置、设备及可读存储介质 | |
CN110019469B (zh) | 分布式数据库数据处理方法、装置、存储介质及电子装置 | |
CN110807062B (zh) | 一种数据同步的方法、装置和数据库主机 | |
EP2767912A2 (en) | In-memory real-time synchronized database system and method | |
CN115599747B (zh) | 一种分布式存储***的元数据同步方法、***及设备 | |
US11960442B2 (en) | Storing a point in time coherently for a distributed storage system | |
CN111090663A (zh) | 事务并发控制方法、装置、终端设备及介质 | |
CN104423982A (zh) | 请求的处理方法和处理设备 | |
CN112334891B (zh) | 用于搜索服务器的集中式存储 | |
CN113778975B (zh) | 基于分布式数据库的数据处理方法及装置 | |
CN109726264A (zh) | 用于索引信息更新的方法、装置、设备和介质 | |
CN114528255A (zh) | 元数据管理方法、电子设备及计算机程序产品 | |
CN110781137A (zh) | 分布式***的目录读取方法、装置、服务器和存储介质 | |
CN108090056A (zh) | 数据查询方法、装置及*** | |
CN105550342A (zh) | 一种全透明的分布式数据库的数据处理方法 | |
US9009098B1 (en) | Methods and apparatus for creating a centralized data store | |
CN115185966A (zh) | 一种分布式集群中数据一致性的处理方法及装置 | |
CN114691307A (zh) | 事务处理方法及计算机*** | |
CN111078643B (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 |