CN117971975A - 分布式数据库的跨表事务支持方法、装置及可读存储介质 - Google Patents
分布式数据库的跨表事务支持方法、装置及可读存储介质 Download PDFInfo
- Publication number
- CN117971975A CN117971975A CN202410144419.8A CN202410144419A CN117971975A CN 117971975 A CN117971975 A CN 117971975A CN 202410144419 A CN202410144419 A CN 202410144419A CN 117971975 A CN117971975 A CN 117971975A
- Authority
- CN
- China
- Prior art keywords
- transaction
- submitted
- processed
- file
- cross
- 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 52
- 239000000725 suspension Substances 0.000 claims abstract description 14
- 238000011084 recovery Methods 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 8
- 230000006835 compression Effects 0.000 claims description 5
- 238000007906 compression Methods 0.000 claims description 5
- 238000013461 design Methods 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 13
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010924 continuous production Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式数据库的跨表事务支持方法、装置及可读存储介质,包括:获取基于分布式数据库的待处理事务,然后判断该待处理事务是否为跨表事务。如果是跨表事务,则调用预先设置的挂起记录文件夹对待处理事务进行支持;如果不是跨表事务,则直接对待处理事务进行提交。如此设计,可以有效处理分布式数据库中的跨表事务问题,提高数据库的效率和稳定性。
Description
技术领域
本发明涉及数据库管理技术领域,具体而言,涉及一种分布式数据库的跨表事务支持方法、装置及可读存储介质。
背景技术
随着大数据时代的到来,数据量越来越大,传统的单机数据库已经无法满足需求。分布式数据库的出现解决了这个问题,但在分布式数据库中处理跨表事务时,可能会出现数据一致性问题。尤其是当待处理事务涉及多张表时,数据更新的复杂性就更加增加。目前的处理方法往往需要进行复杂的协调和同步,这不仅影响了数据库的处理速度,还可能引发错误。因此,如何有效、安全地处理分布式数据库中的跨表事务,成为了一个亟待解决的问题。
发明内容
本发明的目的在于提供一种分布式数据库的跨表事务支持方法、装置及可读存储介质。
第一方面,本发明实施例提供一种分布式数据库的跨表事务支持方法,包括:
获取基于分布式数据库的待处理事务;
判断所述待处理事务是否为跨表事务;
若是,则调用预先设置的挂起记录文件夹对所述待处理事务进行支持;
若否,则直接对所述待处理事务进行提交。
在一种可能的实施方式中,所述调用预先设置的挂起记录文件夹对所述待处理事务进行支持,包括:
获取所述待处理事务的多个相关表;
调用所述挂起记录文件夹,在所述挂起记录文件夹中创建待提交文件;
依次提交所述多个相关表,并将所述多个相关表的表信息记录在所述待提交文件中;
当所述多个相关表均正常提交完成,删除所述待提交文件。
在一种可能的实施方式中,所述调用所述挂起记录文件夹,在所述挂起记录文件夹中创建待提交文件,包括:
获取所述多个相关表的表信息的文本长度;
判断所述文本长度是否超过预设文本长度阈值;
若是,则以所述多个相关表的UUID作为文件名,创建用于存储所述表信息的所述待提交文件;
若否,则将所述多个相关表的表信息作为文件名,创建文件为空的所述待提交文件。
在一种可能的实施方式中,所述方法还包括:
循环检测所述待处理事务的提交过程是否存在故障;
若是,则基于所述挂起记录文件夹进行故障恢复;
若否,则重复执行所述循环检测所述待处理事务的提交过程是否存在故障的步骤。
在一种可能的实施方式中,所述基于所述挂起记录文件夹进行故障恢复,包括:
扫描所述挂起记录文件夹中的待提交文件,获取所述待提交文件存储的表信息,并获取所述表信息对应的待提交信息;
根据所述待提交信息,依次提交所述多个相关表;
当所述多个相关表均正常提交完成,删除所述待提交文件。
在一种可能的实施方式中,所述方法还包括:
判断所述故障恢复是否成功;
若是,则生成故障恢复记录;
若否,则重启所述分布式数据库,并重复执行所述基于所述挂起记录文件夹进行故障恢复的步骤,直至所述故障恢复成功。
在一种可能的实施方式中,所述相关表通过以下方式压缩,包括:
获取所述相关表的身份号和事务号;
将所述身份号和所述事务号基于Base64编码成长度为目标字节的字符串,完成对所述相关表的压缩。
第二方面,本发明实施例提供一种分布式数据库的跨表事务支持装置,包括:
获取模块,用于获取基于分布式数据库的待处理事务;
支持模块,用于判断所述待处理事务是否为跨表事务;若是,则调用预先设置的挂起记录文件夹对所述待处理事务进行支持;若否,则直接对所述待处理事务进行提交。
第三方面,本发明实施例提供一种计算机设备,所述计算机设备包括处理器及存储有计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述计算机设备执行第一方面至少一种可能的实施方式中所述的分布式数据库的跨表事务支持方法。
第四方面,本发明实施例提供一种可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在计算机设备执行第一方面至少一种可能的实施方式中所述的分布式数据库的跨表事务支持方法。
相比现有技术,本发明提供的有益效果包括:采用本发明公开的一种分布式数据库的跨表事务支持方法、装置及可读存储介质,包括:通过获取基于分布式数据库的待处理事务,然后判断该待处理事务是否为跨表事务。如果是跨表事务,则调用预先设置的挂起记录文件夹对待处理事务进行支持;如果不是跨表事务,则直接对待处理事务进行提交。如此设计,可以有效处理分布式数据库中的跨表事务问题,提高数据库的效率和稳定性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的分布式数据库的跨表事务支持方法的步骤流程示意图;
图2为本发明实施例提供的分布式数据库的跨表事务支持装置的结构示意框图;
图3为本发明实施例提供的计算机设备的结构示意框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
下面结合附图,对本发明的具体实施方式进行详细说明。
为了解决前述背景技术中的技术问题,图1为本公开实施例提供的分布式数据库的跨表事务支持方法的流程示意图,下面对该分布式数据库的跨表事务支持方法进行详细介绍。
步骤S201,获取基于分布式数据库的待处理事务;
步骤S202,判断所述待处理事务是否为跨表事务;
步骤S203,若是,则调用预先设置的挂起记录文件夹对所述待处理事务进行支持;
步骤S204,若否,则直接对所述待处理事务进行提交。
在本发明实施例中,示例性的,假设有一个分布式电商平台,该平台使用分布式数据库来存储用户信息、订单信息和库存信息等。在这种情况下,待处理事务可以是用户下单操作,包括创建订单、更新库存和扣款等。假设用户下单操作需要同时修改订单信息表和库存信息表。当分布式数据库接收到用户下单的事务后,它将检测到该事务涉及到多张表的写操作,因此判断为跨表事务。在这一步中,分布式数据库会调用预先设置的挂起记录文件夹来支持跨表事务。挂起记录文件夹是一个特殊的文件夹,用于保存正在进行的跨表事务的中间状态。例如,在上述电商平台中,分布式数据库可以将订单信息表和库存信息表的修改记录暂时保存在挂起记录文件夹中,以便在提交阶段恢复或回滚这些修改。如果待处理事务不涉及多张表的写操作,即不是跨表事务,分布式数据库将直接对该事务进行提交。例如,假设有一个用户更新个人信息的操作,只需修改用户信息表中的记录,这种情况下就不需要使用挂起记录文件夹,直接将修改提交即可。通过上述步骤,该分布式数据库能够根据待处理事务是否为跨表事务,在必要时调用挂起记录文件夹来支持跨表事务的原子性。这样可以确保在发生故障或中断时,分布式数据库能够正确地恢复或回滚部分提交的事务,以保护事务的原子性特性。
在本发明实施例中,前述步骤S203可以通过以下示例执行实施。
(1)获取所述待处理事务的多个相关表;
(2)调用所述挂起记录文件夹,在所述挂起记录文件夹中创建待提交文件;
(3)依次提交所述多个相关表,并将所述多个相关表的表信息记录在所述待提交文件中;
(4)当所述多个相关表均正常提交完成,删除所述待提交文件。
在本发明实施例中,示例性的,假设有一个电子商务平台,其中包含了用户、订单和产品三个相关的数据库表。在这种情况下,待处理事务可能是用户提交了一个新的订单。当用户提交新的订单时,系统会调用挂起记录文件夹,并在该文件夹中创建一个待提交文件。这个待提交文件将用于记录与该订单相关的数据,例如用户信息、订单详情以及产品信息。在上述示例中,系统将依次提交用户、订单和产品这三个相关的数据库表。它会从待提交文件中提取相应的数据,并将其插入到各自的表中。同时,系统还会将每个表的提交信息记录在待提交文件中,以跟踪每个表的提交状态。当所有相关表都成功地将数据提交后,系统会检查待提交文件中的提交信息。如果所有表都成功提交,系统将确认事务已完成,并删除待提交文件。否则,系统将发出警告或者执行相应的错误处理机制来处理未提交的表。如此设计,通过挂起记录文件夹和待提交文件的使用,系统能够有效地记录和跟踪每个表的提交状态,并在所有表都成功提交后完成事务。这样可以确保数据的完整性和一致性,同时提供了错误处理机制来应对异常情况。
在本发明实施例中,前述调用所述挂起记录文件夹,在所述挂起记录文件夹中创建待提交文件的步骤,可以通过以下示例执行实施。
(1)获取所述多个相关表的表信息的文本长度;
(2)判断所述文本长度是否超过预设文本长度阈值;
(3)若是,则以所述多个相关表的UUID作为文件名,创建用于存储所述表信息的所述待提交文件;
(4)若否,则将所述多个相关表的表信息作为文件名,创建文件为空的所述待提交文件。
在本发明实施例中,示例性的,假设有一个数据库管理系统,其中包含多个相关表,如学生表、课程表和成绩表。在这个场景中,需要获取这些表的表信息,并计算其文本长度。例如,对于学生表,可以获取学生表的列名、数据类型和约束条件等信息,并将其转化为文本形式。假设学生表的表信息文本长度为10个字符。假设在上述场景中,预设文本长度阈值为8个字符。通过比较获取的表信息文本长度和阈值,判断文本长度是否超过了设定的阈值。如果表信息文本长度为10个字符,那么超过了预设的8个字符阈值。根据前面的判断结果,有两种情况进行处理:若文本长度超过预设文本长度阈值:在这种情况下,使用多个相关表的UUID作为文件名来创建待提交文件。例如,假设学生表、课程表和成绩表的UUID分别为123,456和789,那么可以创建一个以这些UUID命名的文件用于存储表信息。例如,创建名为"123_456_789.txt"的待提交文件,并将多个相关表的表信息存储在其中。若文本长度未超过预设文本长度阈值:在这种情况下,将多个相关表的表信息作为文件名来创建文件为空的待提交文件。例如,假设学生表、课程表和成绩表的表信息可以用字符串"student_table_course_table_grade_table"表示,那么可以创建一个名为"student_table_course_table_grade_table.txt"的待提交文件,并将其置为空。
在本发明实施例中,还提供以下实施方式。
(1)循环检测所述待处理事务的提交过程是否存在故障;
(2)若是,则基于所述挂起记录文件夹进行故障恢复;
(3)若否,则重复执行所述循环检测所述待处理事务的提交过程是否存在故障的步骤。
在本发明实施例中,示例性的,假设有一个在线购物网站,在用户下订单后,系统将生成一笔待处理事务,包括记录订单信息、扣款等操作。在这一步骤中,系统会循环检测该待处理事务的提交过程是否存在故障。例如,系统会检查订单是否成功记录到数据库中,扣款是否成功以及库存是否正确更新。如果其中任何一个环节发生故障,系统将进入下一步骤。假设在线购物网站系统在上一步骤中检测到提交过程存在故障,系统将通过挂起记录文件夹来进行故障恢复。这个挂起记录文件夹存储了待处理事务的相关信息,如订单内容、用户信息等。系统会根据挂起记录文件夹中的信息,尝试重新执行提交过程,并确保所有操作成功完成,从而恢复正常状态。在上述步骤中,系统已经进行了一次检测和故障恢复。然而,由于各种原因,系统可能仍然未能成功处理该待处理事务。因此,在这一步骤中,系统会重复执行循环检测待处理事务的提交过程是否存在故障的步骤。这可以是一个连续的过程,直到所有操作成功执行或者达到预设的最大重试次数。
在本发明实施例中,前述基于所述挂起记录文件夹进行故障恢复的步骤,可以通过以下示例执行实施。
(1)扫描所述挂起记录文件夹中的待提交文件,获取所述待提交文件存储的表信息,并获取所述表信息对应的待提交信息;
(2)根据所述待提交信息,依次提交所述多个相关表;
(3)当所述多个相关表均正常提交完成,删除所述待提交文件。
在本发明实施例中,示例性的,假设有一个电子商务网站,该网站接收用户的订单并将其保存在待提交文件中。挂起记录文件夹中存储了这些待提交文件。系统定期扫描挂起记录文件夹,以检查是否有新的待提交文件。例如,系统每隔5分钟扫描一次文件夹,如果发现了一个名为"order123.txt"的待提交文件,系统会执行下一步操作。在上述示例中,"order123.txt"文件包含了订单相关的数据。系统读取文件并提取出其中的表信息,比如订单号、顾客信息、商品信息等。然后,系统将这些表信息与待提交信息进行关联。例如,系统从文件中提取出订单号为123的待提交信息,并将它与表信息进行关联。在该示例中,系统根据待提交信息中包含的表信息,依次提交多个相关的表。例如,系统根据订单号为123的待提交信息,依次将订单号、顾客信息和商品信息提交给相应的数据库表,确保数据的准确性和完整性。系统可能使用事务管理来确保所有相关表都能成功提交,以保持数据的一致性。在上述示例中,系统会检查每个相关表的提交状态,以确保它们都已成功提交。系统可能会查询数据库,确认每个表的数据已正确地插入或更新。只有当所有相关表都成功提交后,系统才会执行下一步操作。在上述示例中,一旦所有相关表都正常提交完成,系统将删除对应的待提交文件。这样可以确保不再重复处理已经提交的数据,并保持挂起记录文件夹的整洁和可管理性。如此设计,可以用于各种需要通过扫描待提交文件来进行故障恢复的场景,如电子商务网站、金融交易系统等,以确保数据的准确性和完整性,并提高系统的可靠性和可恢复性。
在本发明实施例中,还提供以下实施方式。
(1)判断所述故障恢复是否成功;
(2)若是,则生成故障恢复记录;
(3)若否,则重启所述分布式数据库,并重复执行所述基于所述挂起记录文件夹进行故障恢复的步骤,直至所述故障恢复成功。
在本发明实施例中,示例性的,假设有一家公司使用分布式数据库来管理其客户信息。在某一天,由于服务器故障导致数据库无法正常运行。系统管理员采取了故障恢复措施,并尝试重启数据库。在重启后,系统会自动进行检查以判断是否成功恢复。如果在一定时间内没有发现任何错误或异常,系统会判断故障恢复成功。在上述场景中,如果系统判断故障恢复成功,它将生成一条故障恢复记录。该记录会包含故障发生的时间、故障类型、所采取的恢复措施以及恢复成功的时间。这个记录可以用于日后的参考和审查,以便更好地了解系统性能和故障处理过程。如果在故障恢复尝试中系统判断恢复失败,它会触发重启操作。这意味着系统会关闭当前的数据库进程,并重新启动整个分布式数据库系统。重启是为了尝试清除任何可能导致故障的问题,并为下一次恢复尝试做好准备。在重新启动分布式数据库后,系统会再次执行基于挂起记录文件夹的故障恢复步骤。这些步骤可能涉及查找和应用之前保存的挂起记录,以还原数据库到发生故障之前的状态。例如,系统可能会从挂起记录中获取先前未完成的事务,并重新应用它们以确保数据的一致性。在重新执行基于挂起记录文件夹进行故障恢复的步骤后,系统会再次进行故障恢复结果的判断。如果恢复成功,系统将继续运行,并可供用户使用。如果仍然无法成功恢复,系统将重复进行重启和基于挂起记录的恢复步骤,直到成功为止。通过这些步骤,系统可以自动判断故障恢复是否成功,并采取相应的措施来确保分布式数据库的正常运行。
在本发明实施例中,所述相关表通过以下方式压缩。
(1)获取所述相关表的身份号和事务号;
(2)将所述身份号和所述事务号基于Base64编码成长度为目标字节的字符串,完成对所述相关表的压缩。
在本发明实施例中,示例性的,假设有一个分布式数据库系统,其中包含多张表,例如用户表、订单表和产品表。每个表都有一个唯一的身份号和与之关联的事务号。在一个跨表事务中,涉及到用户表、订单表和产品表。假设用户表的身份号为1234,事务号为567890;订单表的身份号为5678,事务号为987654;产品表的身份号为9012,事务号为345678。将这些身份号和事务号进行Base64编码,得到相应的字符串表示。对于用户表:身份号1234和事务号567890经过Base64编码后得到字符串"ABCD"。
对于订单表:身份号5678和事务号987654经过Base64编码后得到字符串"EFGH"。对于产品表:身份号9012和事务号345678经过Base64编码后得到字符串"IJKL"。根据前面的内容可以知道,每个表的提交信息仅包括表的ID和事务号。在这个场景中,将表的身份号和事务号编码后的字符串拼接起来作为表的提交信息。假设跨表事务的相关表数量不超过10+个。对于本例中的跨表事务,包含了用户表、订单表和产品表。它们的压缩后的提交信息分别是:
用户表:ID为"ABCD",事务号为"567890"。
订单表:ID为"EFGH",事务号为"987654"。
产品表:ID为"IJKL",事务号为"345678"。
将这些表的压缩后的提交信息进行拼接,得到最终的文件名:"ABCD567890EFGH987654IJKL345678"。这个文件名长度为30字节,远远小于Hdfs文件名长度的限制255字节。
通过以上举例,可以看到如何使用Base64编码对相关表的身份号和事务号进行压缩,以实现表信息的精简,并生成满足分布式系统文件名要求的文件名。这种压缩方式可以帮助在分布式系统中处理跨表事务时更有效地管理提交信息。
下面提供一种本发明实施例的整体实施流程。
1.当事务进行提交时,进行以下步骤:
如果当前事务仅涉及单个表,则按照已有技术直接提交,结束当前流程;
如果涉及多张表,则在pending文件夹(即挂起记录文件夹)下创建一个待提交文件,记录所有相关表的信息:
如果表信息的文本格式较短,则可以直接作为文件名进行创建,文件为空;
如果表信息的文本格式较长,则以UUID作为文件名,里面记录这些信息;
依次提交每张相关表,直至全部完成,然后删除步骤2中创建的文件;
如果提交过程中发生故障,则整个数据库重启,进入下面的故障恢复流程
2.故障恢复流程:
扫描pending文件夹下的所有文件,逐个解析其中的待提交信息,每条信息中的相关表继续提交,完成后删除pending文件夹下的记录
如果恢复过程中发生故障,则再次重启整个数据库,重试当前流程
3.可用的表信息压缩方式:
每张表的提交信息实际仅包括表的ID(4字节),以及它在当前事务的事务号(6字节),如果直接转成十进制的字符串形式可能较长,可以Base64编码成长度为15字节的字符串,保证信息精简且可以满足分布式系统的文件名要求。以Hdfs为例,其文件名默认长度限制是255字节,所以如果跨表事务的相关表数量不超过10+个,就能直接将提交信息拼接起来作为文件名。
如此设计,使用跨表事务提交时会有额外的开销。不需要使用其他后台服务,因此没有额外的部署和维护工作。延迟和吞吐量受文件系统的影响。通常情况下,随着并发事务数的增加,延迟相对保持稳定,而吞吐量可以线性增长。
本发明实施例还提供另一种整体实施流程。
分布式数据库的跨表事务支持方法实施流程如下:
获取基于分布式数据库的待处理事务。
判断所述待处理事务是否为跨表事务:
如果当前事务仅涉及单个表,则按照已有技术直接提交,结束当前流程。
如果涉及多张表,则进入下一步。
在预先设置的挂起记录文件夹(pending文件夹)中进行以下操作:
获取所述待处理事务的多个相关表的信息。
根据这些表信息的文本长度,判断其是否超过预设文本长度阈值。
如果表信息的文本格式较短,则将这些信息直接作为文件名,在pending文件夹中创建一个空的待提交文件。
如果表信息的文本格式较长,则以UUID作为文件名,在pending文件夹中创建一个待提交文件,并在其中记录这些信息。
开始提交这些相关表的事务:
依次提交每张相关表的事务,直至全部完成。
提交完成后,删除步骤3中创建的待提交文件。
在事务提交过程中,循环检测是否存在故障:
如果没有发生故障,继续执行事务提交流程。
如果发生故障,则需要重启整个数据库,并进入故障恢复流程。
故障恢复流程如下:
扫描pending文件夹下的所有待提交文件,逐个解析其中的待提交信息。
根据这些待提交信息,继续提交每条信息中的相关表的事务,直至全部完成。
提交完成后,删除pending文件夹下的对应记录。
如果恢复过程中再次发生故障,则需要再次重启整个数据库,并重试当前故障恢复流程。
在处理跨表事务时,可以通过以下方式压缩相关表的信息以简化处理:
获取每张表的ID(4字节)和事务号(6字节)。
将这些信息通过Base64编码转换成长度为15字节的字符串。
如果故障恢复成功,则生成故障恢复记录。若未能成功,则需要重启分布式数据库,并重复执行基于挂起记录文件夹进行故障恢复的步骤,直至故障恢复成功。
此外,本发明实施例还提供以下示例。
将待提交信息不集中存放在一个pending文件夹下,而是分开存放在相关表的数据目录中,可以提供更好的组织性和可管理性。这种做法可以通过以下步骤实现:
创建相关表的数据目录:为每个相关表创建一个专门的数据目录,用于存放该表的所有数据文件。
将待提交的信息存放在相关表的数据目录中:将待提交的信息存放在与其相关的表数据目录的子目录下。可以使用特定的命名约定来标识这些待提交的文件,以便区分已提交的和未提交的数据。
组织和管理待提交的信息:在相关表的数据目录中,可以根据需要进行进一步的组织和管理。例如,可以按照日期、类型或其他标准对待提交的信息进行分类。这样可以更方便地找到和处理特定的待提交数据。
提交数据时移动文件:一旦待提交的信息准备就绪并要提交到数据库中,可以将相应的文件从待提交目录移动到数据库的适当位置。这样可以确保数据的一致性,并使得待提交和已提交的数据在物理上得到正确的管理。
总之,将待提交信息分散存放在相关表的数据目录中可以提高数据的组织性和可管理性,同时也便于未来的维护和查询操作。这种做法可以根据特定的业务需求进行调整和扩展。
请结合参阅图2,图2为本发明实施例提供的一种分布式数据库的跨表事务支持装置110,包括:
获取模块1101,用于获取基于分布式数据库的待处理事务;
支持模块1102,用于判断所述待处理事务是否为跨表事务;若是,则调用预先设置的挂起记录文件夹对所述待处理事务进行支持;若否,则直接对所述待处理事务进行提交。
需要说明的是,前述分布式数据库的跨表事务支持装置110的实现原理可以参考前述分布式数据库的跨表事务支持方法的实现原理,在此不再赘述。应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,分布式数据库的跨表事务支持装置110可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上分布式数据库的跨表事务支持装置110的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所描述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(fieldprogrammable gate array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
本发明实施例提供一种计算机设备100,计算机设备100包括处理器及存储有计算机指令的非易失性存储器,计算机指令被处理器执行时,计算机设备100执行前述的分布式数据库的跨表事务支持装置110。如图3所示,图3为本发明实施例提供的计算机设备100的结构框图。计算机设备100包括分布式数据库的跨表事务支持装置110、存储器111、处理器112及通信单元113。
为实现数据的传输或交互,存储器111、处理器112以及通信单元113各元件相互之间直接或间接地电性连接。例如,可通过一条或多条通讯总线或信号线实现这些元件相互之间电性连接。分布式数据库的跨表事务支持装置110包括至少一个可以软件或固件(firmware)的形式存储于存储器111中或固化在计算机设备100的操作系统(operatingsystem,OS)中的软件功能模块。处理器112用于执行存储器111中存储的分布式数据库的跨表事务支持装置110,例如分布式数据库的跨表事务支持装置110所包括的软件功能模块及计算机程序等。
本发明实施例提供一种可读存储介质,可读存储介质包括计算机程序,计算机程序运行时控制可读存储介质所在计算机设备执行前述的分布式数据库的跨表事务支持方法。
出于说明目的,前面的描述是参考具体实施例而进行的。但是,上述说明性论述并不打算穷举或将本公开局限于所公开的精确形式。根据上述教导,众多修改和变化都是可行的。选择并描述这些实施例是为了最佳地说明本公开的原理及其实际应用,从而使本领域技术人员最佳地利用本公开,并利用具有不同修改的各种实施例以适于预期的特定应用。
Claims (10)
1.一种分布式数据库的跨表事务支持方法,其特征在于,包括:
获取基于分布式数据库的待处理事务;
判断所述待处理事务是否为跨表事务;
若是,则调用预先设置的挂起记录文件夹对所述待处理事务进行支持;
若否,则直接对所述待处理事务进行提交。
2.根据权利要求1所述的方法,其特征在于,所述调用预先设置的挂起记录文件夹对所述待处理事务进行支持,包括:
获取所述待处理事务的多个相关表;
调用所述挂起记录文件夹,在所述挂起记录文件夹中创建待提交文件;
依次提交所述多个相关表,并将所述多个相关表的表信息记录在所述待提交文件中;
当所述多个相关表均正常提交完成,删除所述待提交文件。
3.根据权利要求2所述的方法,其特征在于,所述调用所述挂起记录文件夹,在所述挂起记录文件夹中创建待提交文件,包括:
获取所述多个相关表的表信息的文本长度;
判断所述文本长度是否超过预设文本长度阈值;
若是,则以所述多个相关表的UUID作为文件名,创建用于存储所述表信息的所述待提交文件;
若否,则将所述多个相关表的表信息作为文件名,创建文件为空的所述待提交文件。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
循环检测所述待处理事务的提交过程是否存在故障;
若是,则基于所述挂起记录文件夹进行故障恢复;
若否,则重复执行所述循环检测所述待处理事务的提交过程是否存在故障的步骤。
5.根据权利要求4所述的方法,其特征在于,所述基于所述挂起记录文件夹进行故障恢复,包括:
扫描所述挂起记录文件夹中的待提交文件,获取所述待提交文件存储的表信息,并获取所述表信息对应的待提交信息;
根据所述待提交信息,依次提交所述多个相关表;
当所述多个相关表均正常提交完成,删除所述待提交文件。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
判断所述故障恢复是否成功;
若是,则生成故障恢复记录;
若否,则重启所述分布式数据库,并重复执行所述基于所述挂起记录文件夹进行故障恢复的步骤,直至所述故障恢复成功。
7.根据权利要求2所述的方法,其特征在于,所述相关表通过以下方式压缩,包括:
获取所述相关表的身份号和事务号;
将所述身份号和所述事务号基于Base64编码成长度为目标字节的字符串,完成对所述相关表的压缩。
8.一种分布式数据库的跨表事务支持装置,其特征在于,包括:
获取模块,用于获取基于分布式数据库的待处理事务;
支持模块,用于判断所述待处理事务是否为跨表事务;若是,则调用预先设置的挂起记录文件夹对所述待处理事务进行支持;若否,则直接对所述待处理事务进行提交。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器及存储有计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述计算机设备执行权利要求1-7中任意一项所述的分布式数据库的跨表事务支持方法。
10.一种可读存储介质,其特征在于,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在计算机设备执行权利要求1-7中任意一项所述的分布式数据库的跨表事务支持方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410144419.8A CN117971975A (zh) | 2024-02-01 | 2024-02-01 | 分布式数据库的跨表事务支持方法、装置及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410144419.8A CN117971975A (zh) | 2024-02-01 | 2024-02-01 | 分布式数据库的跨表事务支持方法、装置及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117971975A true CN117971975A (zh) | 2024-05-03 |
Family
ID=90852564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410144419.8A Pending CN117971975A (zh) | 2024-02-01 | 2024-02-01 | 分布式数据库的跨表事务支持方法、装置及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117971975A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446993A (zh) * | 2014-07-10 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 跨库事务处理方法及装置 |
CN108572991A (zh) * | 2017-03-14 | 2018-09-25 | 北京京东尚科信息技术有限公司 | 数据库处理方法、装置和存储介质 |
CN110019245A (zh) * | 2018-06-22 | 2019-07-16 | 北京蜂盒科技有限公司 | 数据操作方法、装置、存储介质及电子设备 |
CN112765126A (zh) * | 2020-12-31 | 2021-05-07 | 金蝶软件(中国)有限公司 | 数据库事务的管理方法、装置、计算机设备和存储介质 |
-
2024
- 2024-02-01 CN CN202410144419.8A patent/CN117971975A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446993A (zh) * | 2014-07-10 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 跨库事务处理方法及装置 |
CN108572991A (zh) * | 2017-03-14 | 2018-09-25 | 北京京东尚科信息技术有限公司 | 数据库处理方法、装置和存储介质 |
CN110019245A (zh) * | 2018-06-22 | 2019-07-16 | 北京蜂盒科技有限公司 | 数据操作方法、装置、存储介质及电子设备 |
CN112765126A (zh) * | 2020-12-31 | 2021-05-07 | 金蝶软件(中国)有限公司 | 数据库事务的管理方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7636741B2 (en) | Online page restore from a database mirror | |
US8909604B1 (en) | Methods for returning a corrupted database to a known, correct state by selectively using redo and undo operations | |
US9830223B1 (en) | Methods for repairing a corrupted database to a new, correct state | |
US10346369B2 (en) | Retrieving point-in-time copies of a source database for creating virtual databases | |
US7437609B2 (en) | Reliable standby database failover | |
US11921748B1 (en) | Method and apparatus for using representations of blocks of data when continuously comparing two databases which are actively being kept synchronized | |
US9804935B1 (en) | Methods for repairing a corrupted database to a new, correct state by selectively using redo and undo operations | |
US20040163029A1 (en) | Data recovery techniques in storage systems | |
US11531594B2 (en) | Data recovery method and apparatus, server, and computer-readable storage medium | |
JP3094888B2 (ja) | 採番機構、データ整合性確認機構、トランザクション再実行機構及び分散トランザクション処理システム | |
US11960363B2 (en) | Write optimized, distributed, scalable indexing store | |
WO1993018454A1 (en) | Distributed transaction processing system | |
US20050097141A1 (en) | Autonomic filesystem recovery | |
US20100185589A1 (en) | Disaster recovery data sync | |
CN112765126B (zh) | 数据库事务的管理方法、装置、计算机设备和存储介质 | |
CN117971975A (zh) | 分布式数据库的跨表事务支持方法、装置及可读存储介质 | |
JP2778798B2 (ja) | 制御データのキュー構造管理処理方式 | |
CN115495286A (zh) | 配置文件定时备份的测试方法、系统、设备和存储介质 | |
US20050165862A1 (en) | Autonomic and fully recovering filesystem operations | |
CN114116330A (zh) | 服务器性能测试方法、系统、终端及存储介质 | |
CN115114258A (zh) | 数据复制方法、装置、电子设备及计算机存储介质 | |
CN112148532A (zh) | 硬盘数据的批量恢复方法、装置、存储介质及电子设备 | |
CN108804463B (zh) | 一种MySQL数据库的数据同步方法、装置及电子设备 | |
US20230315881A1 (en) | Universal platform for data protection | |
CN114547191A (zh) | 区块链虚拟机异步执行智能合约的方法、系统及p2p网络 |
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 |