一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于主从数据库的数据查询方法、装置、设备及存储介质与流程

2022-02-21 04:01:31 来源:中国专利 TAG:
1.本发明涉及计算机数据同步领域,具体地说,涉及基于主从数据库的数据查询方法、装置、设备及存储介质。
背景技术
::2.数据主从复制时难免会有时间差:主库一边写入数据,从库一边监听并复制主库的数据,从严格意义上讲,是一种异步操作3.当一次性写入大批量数据时由于一些网络带宽的瓶颈等因素容易造成数据积压:主库写入大批量数据时可能会由于执行时间长,从库持续监听并复制数据,从库数据同步时可能会产生不可忽略的时间差。具体而言,当采用数据库主从访问的架构模式时,在大批量执行主库数据更新时,从库事务执行完毕,返回前端执行成功的消息,但因为数据主从库服务器的网络带宽等原因,导致当前端发起查询数据的请求时,从库可能还没有完全复制完主库的数据,从而查询出的并不是完整的结果。主从同步实质是从库监听主库binlog日志文件的增量变化,复制增量到从库的binlog中从而达到改变从库数据使其达到和主库数据一致的效果。4.由此,如何避免由于数据同步时间差导致数据获取存在误差的情况,是本领域技术人员亟待解决的技术问题。5.需要说明的是,上述
背景技术
:部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。技术实现要素:6.针对现有技术中的问题,本发明的目的在于提供基于主从数据库的数据查询方法、装置、设备及存储介质,克服了现有技术的困难,避免由于数据同步时间差导致数据获取存在误差的情况。7.本发明的实施例提供一种基于主从数据库的数据查询方法,包括:8.接收服务器发送的查询请求;9.根据所述查询请求,确定待查询表名;10.自映射表中查找待查询表名的最大第一标识差值,所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述表名为所述主数据库的数据更新操作中所操作的表名;11.查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,所述第二标识差值随所述从数据库的数据更新操作的增加而增加;12.根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库。13.在本发明的一些实施例中,所述映射表通过如下步骤储存主数据库数据更新时提交至日志中的表名和第一标识差值:14.接收所述主数据库完成所述服务器的数据更新请求时,向服务器返回的数据更新反馈信息;15.响应于所述数据更新反馈信息,自所述主数据库的日志中,获取本次数据更新操作提交的表名和第一标识差值;16.储存所获取的表名和第一标识差值。17.在本发明的一些实施例中,所述从数据库的数量为多个,所述根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库包括:18.根据所述第二标识差值以及所述最大第一标识差值的大小,确定各所述从数据库是否完成所述待查询表名的同步更新;19.根据完成所述待查询表名的同步更新的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,20.其中,当所述从数据库的第二标识差值大于等于所述最大第一标识差值时,该从数据库完成所述待查询表名的同步更新。21.在本发明的一些实施例中,所述根据完成所述待查询表名的同步更新的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库包括:22.响应于完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量,根据负载均衡算法,自多个所述从数据库中选择目标数据库。23.在本发明的一些实施例中,所述根据完成所述待查询表名的同步更新的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库包括:24.响应于完成所述待查询表名的同步更新的从数据库的数量小于所述从数据库的总量且大于零,根据负载均衡算法,自多个完成所述待查询表名的同步更新的从数据库中选择目标数据库。25.在本发明的一些实施例中,所述根据完成所述待查询表名的同步更新的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库包括:26.响应于完成所述待查询表名的同步更新的从数据库的数量为零,将所述主数据库确定为目标数据库。27.在本发明的一些实施例中,所述根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库还包括:28.响应于完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量,自所述映射表中删除含有所述待查询表名,且第一标识差值小于等于所述最大第一标识差值的数据记录,29.其中,当未在所述映射表中查询到所述待查询表名时,指示完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量。30.根据本发明的又一方面,还提供一种基于主从数据库的数据查询装置,包括:31.接收模块,配置成接收服务器发送的查询请求;32.第一确定模块,配置成根据所述查询请求,确定待查询表名;33.第一查找模块,配置成自映射表中查找待查询表名的最大第一标识差值,所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述表名为所述主数据库的数据更新操作中所操作的表名;34.第二查找模块,配置成查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,所述第二标识差值随所述从数据库的数据更新操作的增加而增加;35.第二确定模块,配置成根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库。36.根据本发明的又一方面,还提供一种基于主从数据库的数据查询处理设备,包括:37.处理器;38.存储器,其中存储有所述处理器的可执行指令;39.其中,所述处理器配置为经由执行所述可执行指令来执行如上所述基于主从数据库的数据查询方法的步骤。40.本发明的实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现上述基于主从数据库的数据查询方法的步骤。41.相比现有技术,本发明的目的在于:42.通过自映射表中查找待查询表名的最大第一标识差值,查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,由于所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述表名为所述主数据库的数据更新操作中所操作的表名,且所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述第二标识差值随所述从数据库的数据更新操作的增加而增加,从而可以根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,以在进行查询前,能够将已完成同步的数据库作为目标数据库,避免获取的数据不准确/不完整。进一步地,本发明通过从主数据的日志直接获取修改操作的表名,从而使得查询比对的对象更为合适和准确;当服务器进行查询时,才从从数据库中获取第二标识差值,避免了持续心跳监听造成的资源损耗。本发明所提供的查询方式更为简便,且适用于主从数据库的同步中。附图说明43.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。44.图1是本发明的基于主从数据库的数据查询方法的一种实施例的流程图。45.图2是本发明的基于主从数据库的数据查询方法的另一种实施例的流程图。46.图3是本发明的主从数据库的数据同步的流程图。47.图4是本发明的更新网关映射表的流程图。48.图5是本发明的基于主从数据库的数据查询方法的再一种实施例的流程图。49.图6是本发明的基于主从数据库的数据查询装置的一种实施例的模块图。50.图7是本发明的基于主从数据库的数据查询装置的另一种实施例的模块图。51.图8是本发明的基于主从数据库的数据查询设备的结构示意图。52.图9是本发明一实施例的计算机可读存储介质的结构示意图。具体实施方式53.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提供这些实施方式使得本发明将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。54.参见图1,图1是本发明的基于主从数据库的数据查询方法的一种实施例的流程图。本发明的实施例提供一种基于主从数据库的数据查询方法,包括以下步骤:55.步骤s110:接收服务器发送的查询请求。56.步骤s120:根据所述查询请求,确定待查询表名。57.具体而言,所述查询请求可以包含待查询表名或者指示待查询表名的信息。58.步骤s130:自映射表中查找待查询表名的最大第一标识差值,所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述表名为所述主数据库的数据更新操作中所操作的表名。59.具体而言,映射表可以响应于主数据库完成具体事务/数据更新操作时,对主数据库的日志(binlog)进行分析,从而获取对应的表名和第一标识差值。第一标识差值为当前第一标识值与第一标识初始值的差值。第一标识初始值为主数据库的唯一标识值。60.步骤s140:查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,所述第二标识差值随所述从数据库的数据更新操作的增加而增加。61.具体而言,第二标识差值为当前第二标识值与第二标识初始值的差值。第二标识初始值为从数据库的唯一标识值。所述第二标识差值用于标识从数据库的数据更新操作。其与第一标识差值的作用一致。从数据库的日志为从数据库的binlog。具体而言,在执行步骤s140之前,从数据库需开启binlog记录功能。当从数据库与主数据库同步时,从数据库的各表名和第二标识差值的对应关系应与主数据库的表名和第一标识差值的对应关系一致。62.步骤s150:根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库。63.具体而言,正是由于,当从数据库与主数据库同步时,从数据库的各表名和第二标识差值的对应关系应与主数据库的表名和第一标识差值的对应关系一致,因此,可以通过第二标识差值和最大第一标识差值的大小比较,来确定从数据库是否已完成同步更新。以此可以根据从数据库是否已完成同步更新,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库。64.本发明通过自映射表中查找待查询表名的最大第一标识差值,查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,由于所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述表名为所述主数据库的数据更新操作中所操作的表名,且所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述第二标识差值随所述从数据库的数据更新操作的增加而增加,从而可以根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,以在进行查询前,能够将已完成同步的数据库作为目标数据库,避免获取的数据不准确/不完整。进一步地,本发明通过从主数据的日志直接获取修改操作的表名,从而使得查询比对的对象更为合适和准确;当服务器进行查询时,才从从数据库中获取第二标识差值,避免了持续心跳监听造成的资源损耗。本发明所提供的查询方式更为简便,且适用于主从数据库的同步中。65.具体而言,每次重新建立主从数据库同步关系时,主从数据库的标识初始值重置(当数据库出问题修复后一般会重新建立一次主从库同步关系)。66.图2是本发明的基于主从数据库的数据查询方法的另一种实施例的流程图。具体而言,图2所示的步骤可以应用于服务器和数据库之间的网关中。该网关可以维护映射表,记录每一步数据变更提交操作的唯一标识(第一标识差值),所操作的表名,以及各从数据库是否已完成同步的标识。67.如图2所示,该基于主从数据库的数据查询方法,包括:68.步骤s201:接收所述主数据库完成所述服务器的数据更新请求时,向服务器返回的数据更新反馈信息。69.步骤s202:响应于所述数据更新反馈信息,自所述主数据库的日志中,获取本次数据更新操作提交的表名和第一标识差值。70.具体而言,服务器发送数据更新请求时,主数据库更新数据完成时通知服务器操作完成,网关拦截并从主数据库中分析该次提交时commit(命令)对应的xid差值(第一标识差值)的值,以及从主数据库的tablemap(表地图)映射中得到所操作的表名。对于数据库的binlog文件,每一步数据提交操作,binlog都会记录一些重要信息:71.centos11504anonymous1set@@session.gtid_next=’anonoymous’centos11583query1begincentos11656table_map1table_id:97(hw.test2)centos11717write_row1table_id:97flag:stmt_end_fcentos11764xid1commit/*xid=42838/72.上表为一步提交操作所记录的信息示例,第三列是每一种信息记录名称,第二列和第五列分别为每一种信息的记录的初始位移和末位移(log_pos),最后一列为详请。从中可以得到,在操作完成提交时会记录一个xid,示例中的/*xid=4283*/,可以得到此次操作xid为4283,xid在数据库日志中是唯一值,且随着日志的增长而增加,例如下一步操作数据一次性commit10条数据,则下一次commit对应的xid会变为4293。tablemap中记录数据库服务器对于每一张业务表的id和表名的映射。所以,从tablemap中可以得知此次操作更新的表是hw中的test2表。73.步骤s203:储存所获取的表名和第一标识差值。也就是xid与xid初始值的差值。74.具体而言,binlog是数据库层产生。在一个10万修改的大事务的实施例中,其在提交前是向redolog(物理日志)中顺序记录的;而binlog可以是直到事务提交前,一次性写入的。75.步骤s210:接收服务器发送的查询请求。76.步骤s220:根据所述查询请求,确定待查询表名。77.步骤s230:自映射表中查找待查询表名的最大第一标识差值,所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述表名为所述主数据库的数据更新操作中所操作的表名。78.步骤s240:查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,所述第二标识差值随所述从数据库的数据更新操作的增加而增加。79.步骤s251:根据所述第二标识差值以及所述最大第一标识差值的大小,确定各所述从数据库是否完成所述待查询表名的同步更新。80.具体而言,步骤s230查询出的最大第一标识差值为主数据库最后一次完成该表数据操作提交后的第一标识差值,从数据库如果还未从主数据库复制完该表对应的操作日志,则从数据库最新的commit操作的第二标识差值肯定比该最大第一标识差值小。当从数据库同步完成时最新的第二标识差值会与所查询出的这个最大第一标识差值相等,但从数据库是持续监听从主数据库日志文件并复制增量的,如果在查询从数据库之前,主数据库后续还有对其他表的数据操作,那么从数据库会继续监听并复制,这样从数据库的最新的第二标识差值就会大于所查询出的最大第一标识差值,所以判断从数据库对于查询表的记录是否已完成与主数据库同步,就是判断从库的最新第二标识差值是否大于等于所查询出的最大第一标识差值,若是则为已完成数据同步。81.步骤s252:根据完成所述待查询表名的同步更新的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,82.其中,当所述从数据库的第二标识差值大于等于所述最大第一标识差值时,该从数据库完成所述待查询表名的同步更新。83.步骤s252包括:84.步骤s2521:响应于完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量,自所述映射表中删除含有所述待查询表名,且第一标识差值小于等于所述最大第一标识差值的数据记录,85.其中,当未在所述映射表中查询到所述待查询表名时,指示完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量。86.具体而言,步骤s2521可以通过更新映射表的从库同步标识字段。当所有从库都完成了数据同步,则网关删除映射表中含有该表名且第一标识差值值小于等于该最大第一标识差值的所有记录。87.步骤s2522:响应于完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量,根据负载均衡算法,自多个所述从数据库中选择目标数据库。88.步骤s2523:响应于完成所述待查询表名的同步更新的从数据库的数量小于所述从数据库的总量且大于零,根据负载均衡算法,自多个完成所述待查询表名的同步更新的从数据库中选择目标数据库。89.步骤s2524:响应于完成所述待查询表名的同步更新的从数据库的数量为零,将所述主数据库确定为目标数据库。90.本专利提出的在数据查询时网关拦截查询的表名,从网关映射表查询已记录的对应表名的最大的xid差值,同时对比从库binlog中已存在的最新commit的xid值与xid初始值的差值,可判断出可以从哪个库获取查询结果能够避免由于从库复制的延迟造成的主从库数据不一致的情况。91.由此,本技术从主库binlog直接获取修改操作的表名,更为合适和准确。相较于判断标的为binlog的位移偏量差值,本技术中当服务器进行查询时网关才从从库中获取计数器的值,避免了持续心跳监听造成的资源损耗。但数据库中,数据库重启,数据备份时刷新日志,binlog文件大小达到设定阈值时都会引发binlog文件变更,也就是生成另一个新的binlog文件继续记录,当新binlog文件生成时,位移偏量都会重新置位从头开始,而且新文件都会有一个文件头产生,记录对该文件的一些描述,这些描述会产生一部分位移偏量,会对使用为偏量差值的方案中提到的偏移量差值计算产生干扰。而且本技术中也提到了在每一次数据提交时binlog会记录多个不同的位移偏量,这也增加了对比专利中计算位移偏量差值的难度。因此本技术中提到的方法更为简便,合适。92.图3是本发明的主从数据库的数据同步的流程图。93.步骤s301:主数据库310完成数据操作后,将操作写入主数据库310的binlog311。94.步骤s302:从数据库320连接主数据库310。95.步骤s303:主数据库的binlog311向从数据库320推送binlog数据。96.步骤s304:从数据库320将获得binlog数据写入中继日志322。97.步骤s305:从数据库320自中继日志322读取事件并执行。98.步骤s305:从数据库320将操作记录到从数据库的binlog321中。99.由此可知,当从数据库写完本地binlog后,其自身已完成数据同步。100.图4是本发明的更新网关映射表的流程图。图4共示出如下步骤:101.步骤s410:服务器向主数据库发送写数据请求。102.步骤s420:所述主数据库完成所述服务器的写数据请求时,向服务器反馈信息。103.步骤s430:网关拦截并分析主数据库binlog,从而获取主数据库提交数据时操作的表名以及xid差值(第一标识差值)。104.步骤s440:网关将xid差值和表名储存到映射表中。105.由此,实现写数据的过程。106.图5是本发明的基于主从数据库的数据查询方法的再一种实施例的流程图。107.步骤s501:服务器发送的查询请求。108.步骤s502:往往管拦截查询请求,并根据所述查询请求,确定待查询表名。109.步骤s503:网关自映射表中查找待查询表名的最大第一标识差值。110.步骤s504:网关从各从数据库的binlog中查找待查询表名最新一次数据更新操作对应的第二标识差值。111.步骤s505:判断第二标识差值是否大于最大第一标识差值。112.若步骤s505判断为是,则执行步骤s507:网关判断该从数据库完成对该表的数据同步。113.步骤s508:更新从数据库的同步标识字段为已同步完成。114.若步骤s505判断为否,则质心各班组后s510:网关判断该从数据库未完成对该表的数据同步。115.步骤s511:更新从库的同步标识字段为未完成。116.当对所有从库执行完上述步骤后,执行步骤s509:判断对应最大第一标识差值的各从库是否都已完成同步。117.若步骤s509判断为是,则执行步骤s512网关删除表名字段为该表名,且第一标识差值小于等于最大第一标识差值的所有记录。118.步骤s509判断为否,或者步骤s512之后,执行步骤s513:网关根据同步标识和记录内容判断是否所有从库皆已完成同步。119.若步骤s513判断为是,则执行步骤s514:网关根据负载均衡算法从已完成同步的从库中选择目标库。120.若步骤s513判断为否,则执行步骤s515:判断是否有从库完成同步。121.若步骤s515判断为是,则执行步骤s516:网关根据负载均衡算法从已完成同步的从库中选择目标库。122.若步骤s515判断为否,则执行步骤s517:将主库作为目标库。123.由此,本发明能够智能分析主从库对应的提交标记对应的xid差值,提取出主库提交数据操作的表名与xid差值关联记录网关映射表,当读取数据操作时网关自动比对实时的从库日志中最新提交操作的xid差值与网关映射表中相应的xid差值的大小来判断哪个从库已完成数据同步从而选择从合适的库读取数据。124.以上仅仅是示意性地描述本发明的具体实现方式,本发明并非也以此为限制,步骤的拆分、合并、执行顺序的变化、模块的拆分、合并、信息传输的变化皆在本发明的保护范围之内。125.图6是本发明的基于主从数据库的数据查询装置的一种实施例的模块示意图。本发明的基于主从数据库的数据查询装置600,如图6所示,包括但不限于:接收模块610、第一确定模块620、第一查找模块630、第二查找模块640以及第二确定模块650。126.接收模块610配置成接收服务器发送的查询请求;127.第一确定模块620配置成根据所述查询请求,确定待查询表名;128.第一查找模块630配置成自映射表中查找待查询表名的最大第一标识差值,所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述表名为所述主数据库的数据更新操作中所操作的表名;129.第二查找模块640配置成查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,所述第二标识差值随所述从数据库的数据更新操作的增加而增加;130.第二确定模块650配置成根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库。131.上述模块的实现原理参见基于主从数据库的数据查询方法中的相关介绍,此处不再赘述。132.本发明的基于主从数据库的数据查询装置通过自映射表中查找待查询表名的最大第一标识差值,查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,由于所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述表名为所述主数据库的数据更新操作中所操作的表名,且所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述第二标识差值随所述从数据库的数据更新操作的增加而增加,从而可以根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,以在进行查询前,能够将已完成同步的数据库作为目标数据库,避免获取的数据不准确/不完整。进一步地,本发明通过从主数据的日志直接获取修改操作的表名,从而使得查询比对的对象更为合适和准确;当服务器进行查询时,才从从数据库中获取第二标识差值,避免了持续心跳监听造成的资源损耗。本发明所提供的查询方式更为简便,且适用于主从数据库的同步中。133.图7是本发明的基于主从数据库的数据查询装置的另一种实施例的模块示意图。本发明的基于主从数据库的数据查询装置700包括但不限于:第一接收模块701、第一获取模块702、储存模块703、第二接收模块710、第一确定模块720、第一查找模块730、第二查找模块740以及第二确定模块750。134.第一接收模块701,配置成接收所述主数据库完成所述服务器的数据更新请求时,向服务器返回的数据更新反馈信息;135.第一获取模块702,配置成响应于所述数据更新反馈信息,自所述主数据库的日志中,获取本次数据更新操作提交的表名和第一标识差值;136.储存模块703,配置成储存所获取的表名和第一标识差值137.第二接收模块710,配置成接收服务器发送的查询请求;138.第一确定模块720,配置成根据所述查询请求,确定待查询表名;139.第一查找模块730,配置成自映射表中查找待查询表名的最大第一标识差值,所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述表名为所述主数据库的数据更新操作中所操作的表名;140.第二查找模块740,配置成查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,所述第二标识差值随所述从数据库的数据更新操作的增加而增加;141.第二确定模块750配置成根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库。142.第二确定模块750包括第三确定模块751和第四确定模块752。143.第三确定模块751,配置成根据所述第二标识差值以及所述最大第一标识差值的大小,确定各所述从数据库是否完成所述待查询表名的同步更新144.第四确定模块752,配置成根据完成所述待查询表名的同步更新的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,其中,当所述从数据库的第二标识差值大于等于所述最大第一标识差值时,该从数据库完成所述待查询表名的同步更新。145.第四确定模块752包括删除模块7521、第五确定模块7522、第六确定模块7523、第七确定模块7524。146.删除模块7521,配置成响应于完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量,自所述映射表中删除含有所述待查询表名,且第一标识差值小于等于所述最大第一标识差值的数据记录,147.其中,当未在所述映射表中查询到所述待查询表名时,指示完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量。148.第五确定模块7522,配置成响应于完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量,根据负载均衡算法,自多个所述从数据库中选择目标数据库。149.第六确定模块7523,配置成响应于完成所述待查询表名的同步更新的从数据库的数量小于所述从数据库的总量且大于零,根据负载均衡算法,自多个完成所述待查询表名的同步更新的从数据库中选择目标数据库。150.第七确定模块7524,配置成响应于完成所述待查询表名的同步更新的从数据库的数量为零,将所述主数据库确定为目标数据库。151.上述模块的实现原理参见基于主从数据库的数据查询方法中的相关介绍,此处不再赘述。152.图6和图7仅仅是示意性的分别示出本发明提供的基于主从数据库的数据查询装置600以及700,在不违背本发明构思的前提下,模块的拆分、合并、增加都在本发明的保护范围之内。本发明提供的基于主从数据库的数据查询装置600以及700可以由软件、硬件、固件、插件及他们之间的任意组合来实现,本发明并非以此为限。153.本发明实施例还提供一种基于主从数据库的数据查询处理设备,包括处理器。存储器,其中存储有处理器的可执行指令。其中,处理器配置为经由执行可执行指令来执行的基于主从数据库的数据查询方法的步骤。154.如上所示,该实施例本发明的基于主从数据库的数据查询处理设备通过自映射表中查找待查询表名的最大第一标识差值,查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,由于所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述表名为所述主数据库的数据更新操作中所操作的表名,且所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述第二标识差值随所述从数据库的数据更新操作的增加而增加,从而可以根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,以在进行查询前,能够将已完成同步的数据库作为目标数据库,避免获取的数据不准确/不完整。进一步地,本发明通过从主数据的日志直接获取修改操作的表名,从而使得查询比对的对象更为合适和准确;当服务器进行查询时,才从从数据库中获取第二标识差值,避免了持续心跳监听造成的资源损耗。本发明所提供的查询方式更为简便,且适用于主从数据库的同步中。155.所属
技术领域
:的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”ꢀ或“平台”。156.图8是本发明的基于主从数据库的数据查询处理设备的结构示意图。下面参照图8来描述根据本发明的这种实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。157.如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:至少一个处理单元810、至少一个存储单元820、连接不同平台组件(包括存储单元820和处理单元810)的总线830、显示单元840等。158.其中,存储单元存储有程序代码,程序代码可以被处理单元810执行,使得处理单元810执行本说明书上述基于主从数据库的数据查询方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元810可以执行如图1中所示的步骤。159.存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(rom)8203。160.存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。161.总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。162.电子设备800也可以与一个或多个外部设备8001(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器860可以通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储平台等。163.本发明实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现的基于主从数据库的数据查询方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述基于主从数据库的数据查询方法部分中描述的根据本发明各种示例性实施方式的步骤。164.如上所示,该实施例的用以执行基于主从数据库的数据查询的计算机可读存储介质能够通过自映射表中查找待查询表名的最大第一标识差值,查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,由于所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述表名为所述主数据库的数据更新操作中所操作的表名,且所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述第二标识差值随所述从数据库的数据更新操作的增加而增加,从而可以根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,以在进行查询前,能够将已完成同步的数据库作为目标数据库,避免获取的数据不准确/不完整。进一步地,本发明通过从主数据的日志直接获取修改操作的表名,从而使得查询比对的对象更为合适和准确;当服务器进行查询时,才从从数据库中获取第二标识差值,避免了持续心跳监听造成的资源损耗。本发明所提供的查询方式更为简便,且适用于主从数据库的同步中。165.图9是本发明的计算机可读存储介质的结构示意图。参考图9所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品900,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。166.程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。167.计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。168.可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。169.综上,本技术通过自映射表中查找待查询表名的最大第一标识差值,查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,由于所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述表名为所述主数据库的数据更新操作中所操作的表名,且所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述第二标识差值随所述从数据库的数据更新操作的增加而增加,从而可以根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,以在进行查询前,能够将已完成同步的数据库作为目标数据库,避免获取的数据不准确/不完整。进一步地,本发明通过从主数据的日志直接获取修改操作的表名,从而使得查询比对的对象更为合适和准确;当服务器进行查询时,才从从数据库中获取第二标识差值,避免了持续心跳监听造成的资源损耗。本发明所提供的查询方式更为简便,且适用于主从数据库的同步中。170.以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属
技术领域
:的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献