CN111737331B - 一种数据库与对象存储的事务一致性处理方法及*** - Google Patents

一种数据库与对象存储的事务一致性处理方法及*** Download PDF

Info

Publication number
CN111737331B
CN111737331B CN202010572973.8A CN202010572973A CN111737331B CN 111737331 B CN111737331 B CN 111737331B CN 202010572973 A CN202010572973 A CN 202010572973A CN 111737331 B CN111737331 B CN 111737331B
Authority
CN
China
Prior art keywords
data file
transaction
database
information
flexible
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
CN202010572973.8A
Other languages
English (en)
Other versions
CN111737331A (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.)
Bank of China Ltd
Original Assignee
Bank of China 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 Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202010572973.8A priority Critical patent/CN111737331B/zh
Publication of CN111737331A publication Critical patent/CN111737331A/zh
Application granted granted Critical
Publication of CN111737331B publication Critical patent/CN111737331B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/25Integrating or interfacing systems involving database management 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

Abstract

本发明公开了一种数据库与对象存储的事务一致性处理方法及***,其中,该方法包括:获取交易的数据文件及文件元数据信息;在柔性事务表中记录数据文件存储信息;将数据文件上传至对象存储的位置;若上传数据文件失败,返回交易失败信息;若上传数据文件成功,继续执行数据库事务,将对应的文件元数据信息记录至数据库数据表,并删除柔性事务表中数据文件对应的数据文件存储信息;若数据库事务执行成功,返回交易成功信息;若执行失败,返回交易失败信息;定时读取柔性事务表中的数据文件存储信息;在对象存储中批量查找对应的数据文件并进行删除;在删除数据文件成功或在对象存储中未查找到相应数据文件时,将柔性事务表中记录的信息进行删除。

Description

一种数据库与对象存储的事务一致性处理方法及***
技术领域
本发明涉及数据库技术领域,尤指一种数据库与对象存储的事务一致性处理方法及***。
背景技术
在IT***设计和建设过程中,技术人员需要保证用户单次交易的原子性,即用户单次交易可能涉及多次数据库操作,需要保证如果交易成功,所有数据库操作全部成功,如果交易失败,不管交易进行到哪一步,都需要保证本次操作所有数据库操作全部回退至操作前的状态。现有成熟的商用数据库产品通常可以使用自带的机制保障用户单次交易所有数据库操作的事务一致性。
但是,对于分布式影像管理平台来说,用户单次上传影像包括元数据和影像文件两部分,元数据存储在数据库中,影像文件存储在对象存储中。按照业务规则,要求用户在上传影像时,如果交易成功,则数据库中必须存在该影像的元数据信息,对象存储中必须存在该影像文件;而对于影像修改和删除交易,必须保证存储在数据库中的元数据和存储在对象存储中的影像文件必须同时修改、删除成功或同时修改、删除失败。
基于上述分布式影像管理平台,目前常用的保证多种存储中事务一致性的方法多为失败后重试或进行反向操作的方式来实现,具体流程为:用户一次上传影像操作需上传影像文件和影像元数据信息,应用程序校验无误后先将影像元数据信息***数据库,完成一次数据库事务,再将影像文件上传至对象存储中,如果上传成功,则交易完成,但如果上传影像文件至对象存储失败,则需对已经***数据库中的元数据信息进行删除操作。或者先上传影像文件至对象存储,再将影像元数据信息***数据库,如果***数据库失败,则将对象存储中刚刚上传的影像文件删除。
这种方法无法严格保证事务的一致性,例如先将影像元数据信息***数据库,再将影像文件上传至对象存储的操作流程中,如果长传影像文件至临时存储失败,再去删除数据库元数据信息时,可能出现删除失败的情况,从而导致数据库中存在垃圾数据,反之亦然,如果先上传影像至对象存储再将元数据信息***数据库,如果***数据库失败后尝试删除对象存储中影像文件,可能导致影像文件删除失败从而产生垃圾文件。
综上来看,仅依靠数据库原有的事务机制无法保证数据库和对象存储的事务一致性,因此,亟需通过一种新的方式保证其事务一致性。
发明内容
为解决上述问题,本发明提出了一种数据库与对象存储的事务一致性处理方法及***;主要针对现有技术中,通过数据库及对象存储的机制,无法保证一次用户交易在数据库与对象存储间的事务一致性,本发明的方法及***通过将两个事务转化为同一个数据库事务,再通过异步补偿机制从数据库中读取待补偿事务信息,调用对象存储相关服务,完成对数据文件的相关操作,保证数据库与对象存储的事务一致性。
在本发明实施例的第一方面,提出了一种数据库与对象存储的事务一致性处理方法,该方法包括:
获取交易的数据文件及文件元数据信息;
在柔性事务表中记录数据文件存储信息;
将所述数据文件上传至对象存储的位置;其中,
若上传数据文件失败,返回交易失败信息;
若上传数据文件成功,继续执行数据库事务,将对应的所述文件元数据信息记录至数据库数据表,并删除所述柔性事务表中所述数据文件对应的数据文件存储信息;其中,若所述数据库事务执行成功,返回交易成功信息;若所述数据库事务执行失败,返回交易失败信息;
定时读取所述柔性事务表中的数据文件存储信息;
根据读取到的所述数据文件存储信息,在所述对象存储中批量查找对应的数据文件,将查找到的数据文件进行删除;
在删除数据文件成功或在所述对象存储中未查找到相应数据文件时,将柔性事务表中记录的相应数据文件存储信息进行删除。
在本发明实施例的第二方面,提出了一种数据库与对象存储的事务一致性处理***,该***包括:
信息获取模块,用于获取交易的数据文件及文件元数据信息;
信息记录模块,用于在柔性事务表中记录数据文件存储信息;
文件上传模块,用于将所述数据文件上传至对象存储的位置;其中,若上传数据文件失败,返回交易失败信息;若上传数据文件成功,调用数据库事务执行模块;
所述数据库事务执行模块,用于执行数据库事务,将对应的所述文件元数据信息记录至数据库数据表,并删除所述柔性事务表中所述数据文件对应的数据文件存储信息;其中,若所述数据库事务执行成功,返回交易成功信息;若所述数据库事务执行失败,返回交易失败信息;
定时读取模块,用于定时读取所述柔性事务表中的数据文件存储信息;
数据文件批量处理模块,用于根据读取到的所述数据文件存储信息,在所述对象存储中批量查找对应的数据文件,将查找到的数据文件进行删除;
柔性事务表信息处理模块,用于在删除数据文件成功或在所述对象存储中未查找到相应数据文件时,将柔性事务表中记录的相应数据文件存储信息进行删除。
在本发明实施例的第三方面,提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现数据库与对象存储的事务一致性处理方法。
在本发明实施例的第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现数据库与对象存储的事务一致性处理方法。
本发明提出的数据库与对象存储的事务一致性处理方法及***,可以将数据库和对象存储的操作事务转化为同一个数据库事务,再通过事后补偿机制来严格的保证两种存储介质的事务一致性;设置的事后补偿机制逻辑严谨、可靠,其由异步处理完成,不在联机交易过程中完成,能够明显的提升联机交易的性能,缩短联机交易的响应时间。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明一实施例的数据库与对象存储的事务一致性处理方法流程示意图。
图2是本发明一具体实施例的数据库与对象存储的事务一致性处理方法流程示意图。
图3是本发明一实施例的数据库与对象存储的事务一致性处理***架构示意图。
图4是本发明一具体实施例的影像文件管理平台的影像文件处理关系示意图。
图5是本发明一实施例的计算机设备结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种***、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种数据库与对象存储的事务一致性处理方法及***。
在本发明实施例中,需要说明的术语:
事务:是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务是恢复和并发控制的基本单位。事务应该具有4个属性:原子性、一致性、隔离性、持久性。
对象存储:也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。就像文件一样,对象包含数据,但是和文件不同的是,对象在一个层结构中不会再有层级结构。每个对象都在一个被称作存储池的扁平地址空间的同一级别里,一个对象不会属于另一个对象的下一级。
元数据:元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(dataabout data),主要用于描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
图1是本发明一实施例的数据库与对象存储的事务一致性处理方法流程示意图。
如图1所示,该方法包括:
步骤S110,获取交易的数据文件及文件元数据信息。
步骤S120,在柔性事务表中记录数据文件存储信息。
步骤S130,将所述数据文件上传至对象存储的位置;其中,
若上传数据文件失败,执行步骤S131,返回交易失败信息。
若上传数据文件成功,执行步骤S140,继续执行数据库事务,将对应的所述文件元数据信息记录至数据库数据表,并删除所述柔性事务表中所述数据文件对应的数据文件存储信息;其中,
若所述数据库事务执行成功,执行步骤S141,返回交易成功信息。在这种情况下,数据库数据表中存储有数据文件的文件元数据信息(即,元数据),对象存储中存储有该数据文件,柔性事务表中不存在该数据文件对应的数据文件存储信息,保证交易成功后数据库与对象存储的事务一致性。
若所述数据库事务执行失败,执行步骤S142,返回交易失败信息。
步骤S150,定时读取所述柔性事务表中的数据文件存储信息。
步骤S160,根据读取到的所述数据文件存储信息,在所述对象存储中批量查找对应的数据文件,将查找到的数据文件进行删除。
步骤S170,在删除数据文件成功或在所述对象存储中未查找到相应数据文件时,将柔性事务表中记录的相应数据文件存储信息进行删除。
经过步骤S150-步骤S170的事后补偿机制,可以将交易失败所对应的对象存储中的数据文件删除,将柔性事务表中的数据文件存储信息删除,保证交易失败时数据库与对象存储的事务一致性。
为了对上述数据库与对象存储的事务一致性处理方法进行更为清楚的解释,下面结合具体的实施例对每一步进行说明。
参考图2,为本发明一具体实施例的数据库与对象存储的事务一致性处理方法流程示意图。如图2所示,包括:
步骤S110,获取交易的数据文件及文件元数据信息。
步骤S120,根据交易的数据文件的数量、文件元数据信息,在所述柔性事务表中记录数据文件存储信息,主要包括:数据文件的数量及数据文件存储在对象存储的位置。
例如,本次要上传几个文件,每个文件要上传至对象存储中哪个位置。
在记录数据文件存储信息成功后,执行步骤S130,将所述数据文件上传至对象存储的位置。
在记录数据文件存储信息失败后,执行步骤S121,返回交易失败信息。
步骤S130,将所述数据文件上传至对象存储的位置。
文件上传的实际位置要与步骤S120中在柔性事务表记录的文件位置一致。例如,若文件上传的位置与所述柔性事务表中记录的对象存储的位置不一致,或文件上传发生报错,判定上传数据文件失败,返回交易失败信息。
若上传数据文件失败,执行步骤S131,返回交易失败信息;需要说明的是,对于上传数据文件失败的情况,会导致柔性事务表中会存在垃圾数据,此时不作处理,交由步骤S150-步骤S170处理。
若上传数据文件成功,执行步骤S140,继续执行数据库事务,将(上传成功的数据文件)对应的所述文件元数据信息记录至数据库数据表,并删除所述柔性事务表中(上传成功的)数据文件对应的数据文件存储信息。
具体的,所述数据库事务包括两个操作:
第一操作是将对应的所述文件元数据信息记录至数据库数据表;
第二操作是删除所述柔性事务表中所述数据文件对应的数据文件存储信息;
其中,所述两个操作的结果保持相同,为全部执行成功或全部执行失败。
这里所提到的两个操作是在同一数据库事务中执行,这样可以保证两个操作同时成功或同时失败。例如,同时成功则交易完成,数据库数据表中、对象存储中分别保留数据文件存储信息、数据文件,且柔性事务表中记录被删除,返回交易成功信息;同时失败则柔性事务表中记录了文件信息,对象存储中存有文件内容,返回交易失败信息,该部分待删除数据交由步骤S150-步骤S170处理。
若所述数据库事务执行成功,执行步骤S141,返回交易成功信息;
若所述数据库事务执行失败,执行步骤S142,返回交易失败信息,同时可以在柔性事务表的数据文件存储信息中,记录该数据文件数据库事务执行失败的信息,以便于步骤S160查找对应的数据文件;
步骤S150,定时读取所述柔性事务表中的数据文件存储信息。
对于柔性事务中的数据文件存储信息,经过步骤S140交易成功的,则已经被删除。剩余的所有数据文件存储信息,都是在步骤S120中文件上传失败的,步骤S140中数据库事务执行失败的,或者在历史处理过程中删除失败所遗留的。
其中,前述步骤S120中文件上传失败的,则对应的对象存储中不会存在相应的数据文件;
步骤S140中数据库事务执行失败的,则对应的对象存储中会存在相应的数据文件,对此需要经过步骤S160对数据文件进行删除;
在历史处理过程中删除失败所遗留的,例如前一次定时读取过程中删除失败的,则可以执行步骤S160、步骤S170进行再次处理。
步骤S160,根据读取到的所述数据文件存储信息,在所述对象存储中批量查找对应的数据文件,将查找到的数据文件进行删除。
该查找过程可以基于数据文件存储信息,例如数据文件的编号、数据库事务执行失败的记录等。
若删除数据文件失败,无需立即重试,等待执行步骤S150,在下一次定时读取所述柔性事务表中的数据文件存储信息之后,进一步处理删除失败的数据文件,直至该数据文件被删除。
在删除数据文件成功或在所述对象存储中未查找到相应数据文件时,可以继续执行步骤S170。
步骤S170,在删除数据文件成功或在所述对象存储中未查找到相应数据文件时,将柔性事务表中记录的相应数据文件存储信息进行删除。
若删除柔性事务表中记录的相应数据文件存储信息失败,无需立即重试,等待执行步骤S150,在下一次定时读取所述柔性事务表中的数据文件存储信息之后,进一步处理删除失败的柔性事务表中记录的相应数据文件存储信息,直至该信息被删除。
利用上述数据库与对象存储的事务一致性处理方法,可以将两种存储介质(数据库和对象存储)的事务转化为同一个数据库事务,再通过事后补偿机制来严格的保证两种存储介质的事务一致性。
在处理方法中还设置了事后补偿机制,由异步处理完成,不在联机交易过程中完成,大大的提升了联机交易的性能,缩短了联机交易的响应时间。
需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
在介绍了本发明示例性实施方式的方法之后,接下来,参考图3至图4对本发明示例性实施方式的数据库与对象存储的事务一致性处理***进行介绍。
数据库与对象存储的事务一致性处理***的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的术语“模块”或者“单元”,可以是实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
基于同一发明构思,本发明还提出了一种数据库与对象存储的事务一致性处理***,如图3所示,该***包括:
信息获取模块310,用于获取交易的数据文件及文件元数据信息;
信息记录模块320,用于在柔性事务表中记录数据文件存储信息;
文件上传模块330,用于将所述数据文件上传至对象存储的位置;其中,若上传数据文件失败,返回交易失败信息;若上传数据文件成功,调用数据库事务执行模块;
所述数据库事务执行模块340,用于执行数据库事务,将对应的所述文件元数据信息记录至数据库数据表,并删除所述柔性事务表中所述数据文件对应的数据文件存储信息;其中,若所述数据库事务执行成功,返回交易成功信息;若所述数据库事务执行失败,返回交易失败信息;
定时读取模块350,用于定时读取所述柔性事务表中的数据文件存储信息;
数据文件批量处理模块360,用于根据读取到的所述数据文件存储信息,在所述对象存储中批量查找对应的数据文件,将查找到的数据文件进行删除;
柔性事务表信息处理模块370,用于在删除数据文件成功或在所述对象存储中未查找到相应数据文件时,将柔性事务表中记录的相应数据文件存储信息进行删除。
在一实施例中,在柔性事务表中记录的所述数据文件存储信息包括:
数据文件的数量及数据文件存储在对象存储的位置。
在一实施例中,所述信息记录模块320具体用于:
在记录数据文件存储信息成功后,调用所述对象存储执行模块;
在记录数据文件存储信息失败后,返回交易失败信息。
在一实施例中,所述文件上传模块330具体用于:
若文件上传的位置与所述柔性事务表中记录的对象存储的位置不一致,或文件上传发生报错,判定上传数据文件失败,返回交易失败信息。
在一实施例中,所述数据库事务包括两个操作:
第一操作是将对应的所述文件元数据信息记录至数据库数据表;
第二操作是删除所述柔性事务表中所述数据文件对应的数据文件存储信息;
其中,所述两个操作的结果保持相同,为全部执行成功或全部执行失败。
在一实施例中,所述数据文件批量处理模块360具体用于:
若删除数据文件失败,等待所述定时读取模块下一次定时读取所述柔性事务表中的数据文件存储信息,进一步处理删除失败的数据文件;
在删除数据文件成功或在所述对象存储中未查找到相应数据文件时,调用所述柔性事务表信息处理模块。
在一实施例中,所述柔性事务表信息处理模块370具体用于:
若删除柔性事务表中记录的相应数据文件存储信息失败,等待所述定时读取模块下一次定时读取所述柔性事务表中的数据文件存储信息,进一步处理删除失败的柔性事务表中记录的相应数据文件存储信息。
应当注意,尽管在上文详细描述中提及了数据库与对象存储的事务一致性处理***的若干模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
为了对上述数据库与对象存储的事务一致性处理方法及***进行更为清楚的解释,下面结合一个具体的实施例来进行说明,然而值得注意的是该实施例仅是为了更好地说明本发明,并不构成对本发明不当的限定。
以一影像文件管理平台为例,参考图4,为本发明一具体实施例的影像文件管理平台的影像文件处理流程示意图。
如图4所示,步骤S1,***接收到用户上传的影像文件及文件元数据信息后,在柔性事务表记录即将上传的影像文件的影像文件存储信息。例如,本次要上传几个文件,每个文件要上传至对象存储中哪个位置;该些信息可以基于影像文件的数量,文件元数据信息得到。
在记录成功后进行后续操作,否则返回交易失败;
步骤S2,将影像文件上传至对象存储的指定位置。文件上传的实际位置要与步骤S1中柔性事务表记录的文件位置一致,文件上传成功后进行后续流程,否则返回交易失败;
其中,如果文件上传失败,则柔性事务表中会存在垃圾数据(文件上传失败的影像文件存储信息),此时不作处理,交由步骤S7时再进行处理;
在影像文件上传成功后,执行数据库事务,其包含步骤S3及步骤S4两个操作。
步骤S3,记录该影像文件的文件元数据信息至数据库数据表。
步骤S4,删除柔性事务表中该影像文件对应的影像文件存储信息。
需要说明的是,步骤S3与步骤S4保证在同一数据库事务中执行,即这两部同时成功或同时失败。
同时成功则交易完成,数据库数据表中和对象存储中均分别存有文件元数据信息、影像文件,且柔性事务表中该影像文件的记录已被删除,返回交易成功,至此,在交易成功的情况下,保证了数据库与对象存储的事务一致性;
同时失败则返回交易失败,在柔性事务表中记录该交易失败的信息,例如“文件已上传成功,数据库事务执行失败”的记录;在这种情况下,在对象存储中存有该交易失败的影像文件,在柔性事务表中存在该交易失败的影像文件存储信息,这些都属于垃圾数据,此时不作处理,交由步骤S6及步骤S7处理。
步骤S5,定时读取柔性事务表中记录的影像文件存储信息。
对于读取到的影像文件存储信息,主要包含两种情况:
一种是联机过程中文件上传成功,但数据库事务失败的记录,则在对象存储中会有待删除的文件;这种情况是在步骤S2上传成功,但是在步骤S3、步骤S4同时失败所导致的,需要通过步骤S6将对象存储中的待删除的文件删除,再进一步通过步骤S7删除柔性事务表中的记录。
另外一种是联机过程中文件上传失败的记录,该些内容是在步骤S2中产生的垃圾数据,由于没有待删除的文件,则直接通过步骤S7删除柔性事务表中的记录。
步骤S6,根据步骤S5读取的待删除文件信息,去对象存储中删除对应的影像文件。
步骤S7,在删除文件成功或未找到相应文件时,删除柔性事务表中对应的影像文件存储信息。即,在步骤S6删除了对应的影像文件,或步骤S2文件上传失败的情况下,对象存储中都可以视为不存在相应的影像文件,则可以将柔性事务表中的该些影像文件的相关记录进行删除,这样可以在交易失败的情况下,保证数据库与对象存储的事务一致性。
如果步骤S6、步骤S7中有一步执行失败,则可以在执行步骤S5的下次批量查询时,将处理失败的记录重新进行删除,直到柔性事务表与对象存储中文件均被成功删除为止。
基于前述发明构思,如图5所示,本发明还提出了一种计算机设备500,包括存储器510、处理器520及存储在存储器510上并可在处理器520上运行的计算机程序530,所述处理器520执行所述计算机程序530时实现前述数据库与对象存储的事务一致性处理方法。
基于前述发明构思,本发明还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现前述数据库与对象存储的事务一致性处理方法。
本发明提出的数据库与对象存储的事务一致性处理方法及***,可以将数据库和对象存储的操作事务转化为同一个数据库事务,再通过事后补偿机制来严格的保证两种存储介质的事务一致性;设置的事后补偿机制逻辑严谨、可靠,其由异步处理完成,不在联机交易过程中完成,能够明显的提升联机交易的性能,缩短联机交易的响应时间。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (14)

1.一种数据库与对象存储的事务一致性处理方法,其特征在于,该方法包括:
获取交易的数据文件及文件元数据信息;
在柔性事务表中记录数据文件存储信息;
将所述数据文件上传至对象存储的位置;其中,
若上传数据文件失败,返回交易失败信息;
若上传数据文件成功,继续执行数据库事务,将对应的所述文件元数据信息记录至数据库数据表,并删除所述柔性事务表中所述数据文件对应的数据文件存储信息;其中,若所述数据库事务执行成功,返回交易成功信息;若所述数据库事务执行失败,返回交易失败信息;
其中,所述数据库事务包括两个操作:第一操作是将对应的所述文件元数据信息记录至数据库数据表;第二操作是删除所述柔性事务表中所述数据文件对应的数据文件存储信息;所述两个操作的结果保持相同,为全部执行成功或全部执行失败;
定时读取所述柔性事务表中的数据文件存储信息;
根据读取到的所述数据文件存储信息,在所述对象存储中批量查找对应的数据文件,将查找到的数据文件进行删除;
在删除数据文件成功或在所述对象存储中未查找到相应数据文件时,将柔性事务表中记录的相应数据文件存储信息进行删除。
2.根据权利要求1所述的数据库与对象存储的事务一致性处理方法,其特征在于,在柔性事务表中记录的所述数据文件存储信息包括:
数据文件的数量及数据文件存储在对象存储的位置。
3.根据权利要求2所述的数据库与对象存储的事务一致性处理方法,其特征在于,在柔性事务表中记录数据文件存储信息,还包括:
在记录数据文件存储信息成功后,将所述数据文件上传至对象存储的位置;
在记录数据文件存储信息失败后,返回交易失败信息。
4.根据权利要求2所述的数据库与对象存储的事务一致性处理方法,其特征在于,将所述数据文件上传至对象存储的位置,包括:
若文件上传的位置与所述柔性事务表中记录的对象存储的位置不一致,或文件上传发生报错,判定上传数据文件失败,返回交易失败信息。
5.根据权利要求1所述的数据库与对象存储的事务一致性处理方法,其特征在于,根据读取到的所述数据文件存储信息,在所述对象存储中批量查找对应的数据文件,将查找到的数据文件进行删除,包括:
若删除数据文件失败,等待下一次定时读取所述柔性事务表中的数据文件存储信息,进一步处理删除失败的数据文件。
6.根据权利要求5所述的数据库与对象存储的事务一致性处理方法,其特征在于,在删除数据文件成功或在所述对象存储中未查找到相应数据文件时,将柔性事务表中记录的相应数据文件存储信息进行删除,包括:
若删除柔性事务表中记录的相应数据文件存储信息失败,等待下一次定时读取所述柔性事务表中的数据文件存储信息,进一步处理删除失败的柔性事务表中记录的相应数据文件存储信息。
7.一种数据库与对象存储的事务一致性处理***,其特征在于,该***包括:
信息获取模块,用于获取交易的数据文件及文件元数据信息;
信息记录模块,用于在柔性事务表中记录数据文件存储信息;
文件上传模块,用于将所述数据文件上传至对象存储的位置;其中,若上传数据文件失败,返回交易失败信息;若上传数据文件成功,调用数据库事务执行模块;
所述数据库事务执行模块,用于执行数据库事务,将对应的所述文件元数据信息记录至数据库数据表,并删除所述柔性事务表中所述数据文件对应的数据文件存储信息;其中,若所述数据库事务执行成功,返回交易成功信息;若所述数据库事务执行失败,返回交易失败信息;
其中,所述数据库事务包括两个操作:第一操作是将对应的所述文件元数据信息记录至数据库数据表;第二操作是删除所述柔性事务表中所述数据文件对应的数据文件存储信息;所述两个操作的结果保持相同,为全部执行成功或全部执行失败;
定时读取模块,用于定时读取所述柔性事务表中的数据文件存储信息;
数据文件批量处理模块,用于根据读取到的所述数据文件存储信息,在所述对象存储中批量查找对应的数据文件,将查找到的数据文件进行删除;
柔性事务表信息处理模块,用于在删除数据文件成功或在所述对象存储中未查找到相应数据文件时,将柔性事务表中记录的相应数据文件存储信息进行删除。
8.根据权利要求7所述的数据库与对象存储的事务一致性处理***,其特征在于,在柔性事务表中记录的所述数据文件存储信息包括:
数据文件的数量及数据文件存储在对象存储的位置。
9.根据权利要求8所述的数据库与对象存储的事务一致性处理***,其特征在于,所述信息记录模块具体用于:
在记录数据文件存储信息成功后,将所述数据文件上传至对象存储的位置;
在记录数据文件存储信息失败后,返回交易失败信息。
10.根据权利要求8所述的数据库与对象存储的事务一致性处理***,其特征在于,所述文件上传模块具体用于:
若文件上传的位置与所述柔性事务表中记录的对象存储的位置不一致,或文件上传发生报错,判定上传数据文件失败,返回交易失败信息。
11.根据权利要求7所述的数据库与对象存储的事务一致性处理***,其特征在于,所述数据文件批量处理模块具体用于:
若删除数据文件失败,等待所述定时读取模块下一次定时读取所述柔性事务表中的数据文件存储信息,进一步处理删除失败的数据文件;
在删除数据文件成功或在所述对象存储中未查找到相应数据文件时,调用所述柔性事务表信息处理模块。
12.根据权利要求11所述的数据库与对象存储的事务一致性处理***,其特征在于,所述柔性事务表信息处理模块具体用于:
若删除柔性事务表中记录的相应数据文件存储信息失败,等待所述定时读取模块下一次定时读取所述柔性事务表中的数据文件存储信息,进一步处理删除失败的柔性事务表中记录的相应数据文件存储信息。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一所述方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至6任一所述方法。
CN202010572973.8A 2020-06-22 2020-06-22 一种数据库与对象存储的事务一致性处理方法及*** Active CN111737331B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010572973.8A CN111737331B (zh) 2020-06-22 2020-06-22 一种数据库与对象存储的事务一致性处理方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010572973.8A CN111737331B (zh) 2020-06-22 2020-06-22 一种数据库与对象存储的事务一致性处理方法及***

Publications (2)

Publication Number Publication Date
CN111737331A CN111737331A (zh) 2020-10-02
CN111737331B true CN111737331B (zh) 2023-08-18

Family

ID=72650333

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010572973.8A Active CN111737331B (zh) 2020-06-22 2020-06-22 一种数据库与对象存储的事务一致性处理方法及***

Country Status (1)

Country Link
CN (1) CN111737331B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113448978B (zh) * 2021-07-14 2024-04-16 中国银行股份有限公司 同名影像文件替换操作中保证数据一致性的方法及装置
CN113568398B (zh) * 2021-09-26 2021-12-07 西安热工研究院有限公司 一种分散控制***组态删除方法和***

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107092685A (zh) * 2017-04-24 2017-08-25 广州新盛通科技有限公司 一种联合使用文件***和rdbms存储事务数据的方法
CN109471704A (zh) * 2018-11-02 2019-03-15 上海艾融软件股份有限公司 一种基于消息中间件的柔性事务处理方法
CN110008224A (zh) * 2019-03-08 2019-07-12 阿里巴巴集团控股有限公司 一种数据库事务处理方法及装置
CN110427422A (zh) * 2019-05-23 2019-11-08 武汉达梦数据库有限公司 数据同步异常时数据一致性校验方法、设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107092685A (zh) * 2017-04-24 2017-08-25 广州新盛通科技有限公司 一种联合使用文件***和rdbms存储事务数据的方法
CN109471704A (zh) * 2018-11-02 2019-03-15 上海艾融软件股份有限公司 一种基于消息中间件的柔性事务处理方法
CN110008224A (zh) * 2019-03-08 2019-07-12 阿里巴巴集团控股有限公司 一种数据库事务处理方法及装置
CN110427422A (zh) * 2019-05-23 2019-11-08 武汉达梦数据库有限公司 数据同步异常时数据一致性校验方法、设备及存储介质

Also Published As

Publication number Publication date
CN111737331A (zh) 2020-10-02

Similar Documents

Publication Publication Date Title
US10452271B2 (en) Reconstructing in-memory indices in a distributed data storage system
CN109086388B (zh) 区块链数据存储方法、装置、设备及介质
US10248356B2 (en) Using scratch extents to facilitate copying operations in an append-only storage system
US8572022B2 (en) Automatic synchronization conflict resolution
US5123104A (en) Method and apparatus for concurrent modification of an index tree in a transaction processing system utilizing selective indication of structural modification operations
US7136883B2 (en) System for managing object storage and retrieval in partitioned storage media
US10296518B2 (en) Managing distributed deletes in a replicated storage system
US9772783B2 (en) Constructing an index to facilitate accessing a closed extent in an append-only storage system
JP4916892B2 (ja) トランザクション処理のためのログ情報管理システムおよび方法
US20180210914A1 (en) Consistent query of local indexes
US20150254320A1 (en) Using colocation hints to facilitate accessing a distributed data storage system
CN109213432B (zh) 利用日志结构合并树将数据写入的存储设备及其方法
CN111737331B (zh) 一种数据库与对象存储的事务一致性处理方法及***
CN112084161B (zh) 基于数据库的数据处理方法、装置以及可读存储介质
CN107357920B (zh) 一种增量式的多副本数据同步方法及***
US9720607B2 (en) Append-only storage system supporting open and closed extents
US9619322B2 (en) Erasure-coding extents in an append-only storage system
CN104572920A (zh) 一种数据整理方法和装置
CN111797172A (zh) 数据迁移方法、装置、设备、分布式***及存储介质
CN113792094A (zh) 一种数据同步***、方法、设备及介质
CN114741449A (zh) 一种基于分布式数据库的对象存储方法及装置
JP4314126B2 (ja) 同時実行制御方法及び装置
CN114816247A (zh) 一种逻辑数据获取方法及装置
CN109885552A (zh) 分布式文件***的元数据动态管理方法及分布式文件***
CN112685431B (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