CN114003657B 分布式数据库的数据处理方法、系统、设备和存储介质 (阿里云计算有限公司)_第1页
CN114003657B 分布式数据库的数据处理方法、系统、设备和存储介质 (阿里云计算有限公司)_第2页
CN114003657B 分布式数据库的数据处理方法、系统、设备和存储介质 (阿里云计算有限公司)_第3页
CN114003657B 分布式数据库的数据处理方法、系统、设备和存储介质 (阿里云计算有限公司)_第4页
CN114003657B 分布式数据库的数据处理方法、系统、设备和存储介质 (阿里云计算有限公司)_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本申请实施例提供了一种分布式数据库的Transaction进行排序,通过transQueue中的所述XAEvent和所述waitTrans创建局部事务列表,并根据所述局部事务列表生成一级排序队列;针对各DN的一级排序队列进行多路归并排而保证了在分布式数据库的数据处理复制过程2采用所述全局时间戳TSO对transQueue中的Transaction进行排序,通过tran针对所述全局排序队列,合并具有相同全局时间戳TSO的局部事务3.根据权利要求1所述的方法,其特征在于,所述XAEvent包括一阶段提交信息XAPrepare,二阶段提交信息XACommit,回滚信息XARollback;针对于一个局部事务xid,所述采用所述全局时间戳TSO对transQueue中的Transaction进行排序,通过transQueue中的所述XAEvent和waitTrans创建局部读取所述物理二进制日志Binlog中的所述XAEvent,并将读取到的所述XA当读取到所述XACommit时,通过所述xid将与所述XACommit对应的XAPrepare合并,采用所述全局时间戳TSO对所述transQueue中的Transaction进行排序,通过表生成一级排序队列。从所述sortItemsQueue中依次获取所述XAEve确定所述transQueue中的最大时间戳maxTSO,并判断所述XACommit对应的全局时间3采用所述transQueue中TSO小于或等于maxTSO的Transaction作为安全事务创建局部判断从所述sortItemsQueue中获取判断从所述sortItemsQueue中获取到的所述XA将所述局部事务列表中的一级排序队列的Transaction推送至预设的全局事务队列提取所述全局排序队列中的所述完整全局事务的特性事件Eve删除所述特性事件Event,并采用所述全局排序队列中的所述完整全局事务生成全局一级排序模块,用于采用所述全局时间戳TSO对transQueue中的Transaction进行排4设的等待传输队列;权利要求1-10中一个或多个所述的分布式数据库的数据处使得处理器执行如权利要求1-10中一个或多个所述的分布式数据5据库的数据复制过程中,无法保证事务的全局有序性和完整性问题,并做到了完全兼容6[0013]采用所述全局时间戳TSO对所述transQueue中的Transaction进行排序,通过transQueue中的所述XAEvent和所述waitTrans创建局部事务列表,并根据所述局部事务[0015]针对所述全局排序队列,合并具有相同全局时间戳TSO的局部事务T个XA的DN上的局部事务Transaction可以具有[0017]可选地,所述XAEvent包括一阶段提交信息XAPrepare,二阶段提交信息XAXACommit,所述XARollback具有相同的事务标识符xid,所述将与各物理二进制日志Binlog对应的局部事务Transaction排序创建局部事务列表推送至预置的排序项目队列sortItemsQu[0019]当读取到所述XAPrepare时,将所述xid推送至预设的等待传输队列waitTrans[0021]当读取到所述XACommit时,通过所述xid将与所述XACommit对应的XAPrepare合并,生成局部事务Transaction,并将所述Transaction推送至预设的传输队列[0022]采用所述全局时间戳TSO对所述transQueue中的Transaction进行排序,通过transQueue中的所述XAEvent和所述waitTrans创建局部事务列表,并根据所述局部事务[0023]可选地,在所述通过transQueue中的所述XAEvent和所述waitTrans创建局部事[0026]若是,则将所述XAPrepare从所述sortItemsQueue中移除,并再次从所述[0029]当获取到所述XARollback时,将所述XARollback从所述sortItemsQueue中移[0030]确定所述transQueue中的最大时间戳maxTSO,并判断所述XACommit对应的全局7[0032]采用所述transQueue中TSO小于或等于maxTSO的Transaction作为安全事务创建[0040]将所述局部事务列表中的一级排序队列的Transaction推送至预设的全局事务队[0041]采用所述TSO对所述全局事务队列中的Transaction进行排序,生成全局排序队[0042]可选地,所述针对所述全局排序队列,合并具有相同全局时间戳TSO的局部事务[0046]删除所述特性事件Event,并采用所述全局排序队列中的所述完整全局事务生成制日志Binlog时替换所述物理库表名称;所述逻辑库表与所述物理库表可以具有映射关有多个存储节点DN,所述DN具有对应的物理二进制日志Binlog,所述物理二进制日志8所述局部事务列表生成一级排序队列;XACommit,所述XARollback可以具有相同的事务标识符xid,所述一级排序模块可以包[0056]局部事务读取子模块,用于读取所述物理二进制日志Binlog中的并将读取到的所述XAEvent推送至预置的排序项目队列sortItems[0060]局部事务列表生成子模块,用于采用所述全局时间戳TSO对所述transQueue中的次从所述sortItemsQueue中获取所述[0066]第二事务移除单元,用于在获取到所述XACommit时,将所述XACommit从所述XACommit对应的全局时间戳TSO是否大于所述maxTSO;若所述XACommit对应的全局时间9[0070]局部事务列表创建单元,用于采用所述transQueue中TSO小于或等于maxTSO的Transaction作为安全事务创建局部事务列表,并采用所述局部事务列表生成所述一级排[0078]事务推送子模块,用将所述局部事务列表中的一级排序队列的Transaction推送[0080]可选地,所述XA具有回转信息CommitTSORotation,所述事务合并模块可以包制日志Binlog时替换所述物理库表名称;所述逻辑库表与所述物理库表可以具有映射关[0091]MySQL作为当前最主流的数据库之一,具有极好的生态基础,基于分布式MySQLSharding(MySQLSharding,分片MySQL)思想构建分布式数据库,也是当前的主流发展方通过transQueue中的所述XAEvent和所述waitTrans创建局部事务列表,并根据所述局部事务列表生成一级排序队列;[0102]步骤106、针对所述全局排序队列,合并具有相同全局时间戳TSO的局部事务[0117]在具体实现中,本申请实施例可以在分布式数据库复制数据之前,基于MySQLInnoDB通过以XA协议+2PC+TSO的形式实现MVCC机制,并且可以在原生MySQL的局部事务第二阶段提交事件XACommitEvent之前扩展出一个序列事件Sequence,用来记录该事务的有关联于同一个XA的DN上的局部事务Transacti在所有参与该XA的DN节点上的Commi应的局部事务Transaction排序创建局部事务推送至预置的排序项目队列sortItemsQu[0129]当读取到所述XAPrepare时,将所述xid推送至预设的等待传输队列waitTrans[0131]当读取到所述XACommit时,通过所述xid将与所述XACommit对应的XAPrepare合并,生成局部事务Transaction,并将所述Transaction推送至预设的传输队列[0132]采用所述全局时间戳TSO对所述transQueue中的Transaction进行排序,通过transQueue中的所述XAEvent和所述waitTrans创建局部事务列表,并根据所述局部事务[0133]在本申请实施例的一种示例中,所述XAEvent包括一阶段提交信息提交信息XACommit,回滚信息XARollback以及其他事务信息,而针对于一个局部事务xid,所以,针对于同一个局部事务Transaction,不论其XAPrepare、XACommit、XA[0139]XA{START|BEGIN}xid[JOIN|RESUME]——启动一个XA事务[xid必须是一个唯一[0140]XAENDxid[SUSPEND(FORMIGRATE)]——结束一个XA事务([SUSPEND[FOR语句:前者把事务置为PREPARE状态,此时XARECOVER语句的输出包含事务的xid值(XARECOVER语句会列出所有处于PREPARE状态的XA事务);后者用于预备和提交事务,不会被Rollback以及与XACommit对应的全局时间戳TSO对Transaction进行排序,得到一个针对DN中Transaction的一级排序队列。[0157]若是,则将所述XAPrepare从所述sortItemsQueue中移除,并再次从所述[0160]当获取到所述XARollback时,将所述XARollback从所述sortItemsQueue中移[0161]确定所述transQueue中的最大时间戳maxTSO,并判断所述XACommit对应的全局[0163]采用所述transQueue中TSO小于或等于maxTSO的Transaction作为安全事务创建[0168]可以判断从所述sortItemsQueue中获取到的所述XAEvent的时长是否超过预设读取到的XAEvent推送至预置的排序项目队列sortItemsQue[0173]具体而言,对于一个XA(XAPrepare+XACommit),如果在其XAPrepare和XA[0181]证明:由定理一可知,存在空洞关系的事务之间必不存在写冲突,那么事务的的顺序正相关,即Commit靠前的事务的CommitTSO一定小于等于Commit靠后的事务的步骤208,若有,则可以退出循环停止从sortItemsQueue中获取XAEvent,当获取到XACommit时,可以执行步骤211,将XACommit从sortItemsQueue中移除;当获取到XATransaction作为安全事务创建局部事务列表,并采用所述局部事务列表生成所述一级排[0191]参考图3所示的本申请的一种一级排序队列的示意图,可以将读取到的XAEvent无序的,而在transQueue中的Transaction302可以包含了与其对应的XAPrepare、XA间戳TSO排序的有序序列。[0193]T代表局部事务Transaction;P代表XAPrepare;C代表XACommit;R代表XA[0204]iii.如果该Item是一个C或R,则将该Item从s[0207]当然,本领域技术人员可以根据实际情况采用其它算法进行一级排序均是可行[0209]将所述局部事务列表中的一级排序队列的Transaction推送至预设的全局事务队[0210]采用所述TSO对所述全局事务队列中的Transaction进行排序,生成全局排序队申请实施例可以将各存储节点DN对应的物理二进制日志Binlog中的Transaction推送至预[0212]当然,本领域技术人员可以根据实际情况采用其它算法进行全局排序均是可行[0217]删除所述特性事件Event,并采用所述全局排序队列中的所述完整全局事务生成[0218]在具体实现中,可以在全局排序队列的基础上完成局部事务合并,每当出现[0221]在实际应用中,可以通过全局排序队列生成的全局二进制日志Binlog,和原生MySQL的Binlog相比,全局二进制日志Binlog可以在每个XA的后面都可以加载一个[0223]本申请实施例可以通过对全局二进制日志Binlog中的XA添加符合数据库转储MySQLDump协议的RowsQueryLogEvent,从而可以使得全局二进制日志Binlog同时兼容和逻辑库表的映射关系可以通过分布式数据库的元数据[0226]如图4所示,图4是本申请的一种针对全局二进制日志Binl[0227]本申请实施例可以通过采用所述全局时间戳TSO对所述transQueue中的MySQLDump协议的RowsQueryLogEvent,从而使得全局二进制日志Binlog同时兼容MySQL[0230]在上述实施例的基础上,本实施例还提供了一种分布式[0232]一级排序模块501,用于采用所述全局时间戳TSO对所述transQueue中的[0237]局部事务读取子模块,可以用于读取所述物理二进制日志Binlog中的所述XA[0241]局部事务列表生成子模块,可以用于采用所述全局时间戳TSO对所述transQueue否接收到具有相同所述xid的所述XACommit;若接收到具有相同所述xid的所述XA[0245]第一事务移除单元,可以用于将所述XAPrepare从所述sortIte并再次从所述sortItemsQueue中获取所述XA所述XACommit对应的全局时间戳TSO是否大于所述maxTSO;若所述XACommit对应的全局[0251]局部事务列表创建单元,可以用于采用所述transQueue中TSO小于或等于maxTSO的Transaction作为安全事务创建局部事务列表,并采用所述局部事务列表生成所述一级[0253]事务空集判断单元,可以用于判断从所述sortItemsQueue中获取到的所述XA[0259]事务推送子模块,可以用将所述局部事务列表中的一级排序队列的Transaction制日志Binlog时替换所述物理库表名称;所述逻辑库表与所述物理库表可以具有映射关出了可被用于实现本申请中所述的各个实施例的示例性系统到控制模块604的一个或多个输入/输出设备610,以及被耦合到控制模块604的网络接口[0274]在一些实施例中,系统600可包括具有指令614的一个或多个计算机可读介质(例如,存储器606或NVM/存储设备608)以及与该一个或多个计算机可读介质相合并被配置为执行指令614以实现模块从而执行本公开中所述的动作的一个或多个处处理器602中的至少一个和/或与控制模块604通信的任意适当的设备或组件提供任意适当器606可包括双倍数据速率类型四同步动态随储设备608及

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论