数据读取方法及装置的制造方法

文档序号:10512185阅读:259来源:国知局
数据读取方法及装置的制造方法
【专利摘要】本申请提供一种数据读取方法及装置。方法包括:接收用于读取至少两条数据的读取指令;从至少两个数据库中确定需要首次读取的目标库;从目标库中读取至少两条数据中的首条数据;若从目标库中读取到首条数据,继续从目标库中读取至少两条数据中的其他条数据。本申请可以保证读取数据的完整性。
【专利说明】
数据读取方法及装置
【技术领域】
[0001]本申请涉及数据库技术领域,尤其涉及一种数据读取方法及装置。
【【背景技术】】
[0002]在读多写少的数据库应用场景中,常常会将数据库划分写数据库(简称为写库)和若干个读数据库(简称为读库)。写库主要负责存储数据源产生的数据,并向读库同步数据。读库主要供业务系统读取数据以开展业务,并与写库进行数据同步。其中,业务系统的读取操作被随机的分流到若干个读库上,以降低读库的压力。
[0003]由于从写库同步数据到读库存在一定的时延,导致若干读库之间的数据可能不一致。例如假设TO时刻向写库插入数据A和B,Tl时刻读库Al已经同步到数据A和B,但Tl时刻读库An还未同步到数据A和B。若一次数据读取操作需要读取数据A和B,业务系统随机选择从读库Al中读取数据A,并且读取到了数据A ;再随机选择从读库An中读取数据B,由于读库An中尚未同步到数据B,故业务系统不会读取到数据B,这导致所读取的数据是不完整的,无法开展业务。

【发明内容】

[0004]本申请的多个方面提供一种数据读取方法及装置,用以保证读取数据的完整性。
[0005]本申请的一方面,提供一种数据读取方法,包括:
[0006]接收用于读取至少两条数据的读取指令;
[0007]从至少两个数据库中确定需要首次读取的目标库;
[0008]从所述目标库中读取所述至少两条数据中的首条数据;
[0009]若从所述目标库中读取到所述首条数据,继续从所述目标库中读取所述至少两条数据中的其他条数据。
[0010]本申请的另一方面,提供一种数据读取装置,包括:
[0011]接收模块,用于接收用于读取至少两条数据的读取指令;
[0012]确定模块,用于从至少两个数据库中确定需要首次读取的目标库;
[0013]读取模块,用于从所述目标库中读取所述至少两条数据中的首条数据,并在从所述目标库中读取到所述首条数据时,继续从所述目标库中读取所述至少两条数据中的其他条数据。
[0014]在本申请中,数据读取装置接收到读取至少两条数据的读取指令时,从至少两个数据库中确定首次读取的目标库,从目标库中读取至少两条数据中的首条数据,若成功从该目标库中读取到首条数据,则继续从该目标库中读取至少两条数据中的其他数据,保证业务所需的数据都从同一数据库中读取,解决了因读取不同数据库导致数据不完整的问题,保证了所读取数据的完整性。
【【附图说明】】
[0015]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0016]图1为本申请一实施例提供的数据读取方法的流程示意图;
[0017]图2为本申请一实施例提供的现有读库和写库分离的数据库系统的示意图;
[0018]图3为本申请一实施例提供的数据读取装置的结构示意图;
[0019]图4为本申请另一实施例提供的数据读取装置的结构示意图。
【【具体实施方式】】
[0020]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0021]图1为本申请一实施例提供的数据读取方法的流程示意图。如图1所示,该方法包括:
[0022]101、接收用于读取至少两条数据的读取指令。
[0023]102、从至少两个数据库中确定需要首次读取的目标库。
[0024]103、从上述目标库中读取上述至少两条数据中的首条数据。
[0025]104、若从上述目标库中读取到首条数据,继续从目标库中读取上述至少两条数据中的其他条数据。
[0026]本实施例提供一种数据读取方法,可由数据读取装置来执行。数据读取装置主要用于根据业务系统的读取指令,从数据库中读取开展业务所需的数据,并提供给业务系统。数据读取装置可以集成于业务系统一端实现,也可以集成于数据库一端实现,或者也可以作为位于业务系统和数据库之间的独立装置实现。
[0027]在现有写库和读库分离的场景中,一般将业务系统的读取操作随机分流到若干个读库上,以便于降低读库的压力。图2所示为写库和读库分离的数据库应用系统,该系统包括一个写库和η个读库,产生数据的数据源向写库写入数据,写库负责向η个读库同步数据;业务系统访问η个读库以读取开展业务所需的数据。其中,业务系统的读取操作被随机分流到η个读库上。假设一次业务操作需要至少两次读取操作,则每次读取操作可以被随机分流到η个读库中的某个读库上。其中,数据源和业务系统可以是同一个,也可以是不同的。
[0028]在上述方案中,由于从写库同步数据到读库存在一定的时延,导致若干读库之间的数据可能不一致,若一次业务操作所需的至少两次读取操作被分流到数据不一致的读库上,可能导致所读取的数据是不完整的,无法开展业务。针对该问题,本实施例提供一种数据读取方法,该方法适用于将读取操作分流到多个数据库上的场景,包括上述读库和写库分离的场景,也包括读写不分离的场景。本实施例方法的流程具体如下:
[0029]业务系统需要执行业务操作时,向数据读取装置发送读取指令,用于读取开展业务所需的数据。在本实施例中,该读取指令用于请求读取至少两条数据。
[0030]值得说明的是,本实施例对业务系统不做限定,业务系统不同,业务系统发送的读取指令和开展业务所需的数据都会有所不同。举例说明,业务系统可以是支付系统、订单系统、各种票务系统(例如火车票、飞机票等)、提供资源下载的业务系统以及即时通讯系统等。
[0031]数据读取装置接收业务系统发送的用于读取至少两条数据的读取指令;该读取指令意味着需要执行至少两次读取操作。数据读取装置从至少两个数据库中确定需要首次读取的目标库,然后执行第一次读取操作,即从目标库中读取至少两条数据中的首条数据。
[0032]在一可选实施方式中,数据读取装置可以随机从至少两个数据库中确定需要首次读取的目标库。或者
[0033]在一可选实施方式中,业务系统的业务通过业务号来唯一标识,数据库通过库号唯一标识,预先设定业务号与库号的对应关系。基于此,数据读取装置可以根据预设的业务号与库号的对应关系,从至少两个数据库中确定第一业务号对应的数据库作为目标库,第一业务号是上述读取指令对应的业务的业务号。
[0034]若从目标库中读取到上述首条数据,则针对目标库继续执行后续读取操作,即继续从目标库中读取至少两条数据中的其他条数据。
[0035]在一可选实施方式中,数据读取装置从目标库中读取到首条数据时,可以记录该目标库的标识。进一步,数据读取装置可以将目标库的标识记录到数据读取装置中执行读取操作的线程的上下文中。
[0036]基于上述,数据读取装置具体可以在需要读取其他条数据时,根据之前记录的目标库的标识,确定目标库,再从目标库中读取其他条数据。
[0037]由于该次业务操作所需的至少两条数据是从同一数据库中进行读取,并且是从读取到首条数据的数据库中进行的读取,因此可以保证能够读取到该次业务操作所需的全部数据,保证了数据的完整性,有利于成功开展业务。
[0038]在一可选实施方式中,若未能从目标库中读取到首条数据,则可以结束操作。例如,数据读取装置可以向业务系统返回未能读取到所需数据的结果信息。或者
[0039]在一可选实施方式中,若未能从目标库中读取到首条数据,则数据读取装置可以重新执行从至少两个数据库中确定需要首次读取的目标库及后续操作,直到达到最大重试次数或成功读取到至少两条数据为止。该最大重试次数可以预先设定,并且允许根据不同业务设定不同值,例如可以是3、5、6、9或12等。在该实施方式中,数据读取装置通过重新确定目标库,有利于提高成功读取数据的概率,提高成功开展业务的概率。另外,在数据读取装置重试读取数据的过程中,业务系统不需要重新发送读取指令,相当于减少了业务系统与数据读取装置之间的交互,因此有利于减轻业务系统的处理负担,还有利于提高开展业务的效率。
[0040]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
[0041]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0042]图3为本申请一实施例提供的数据读取装置的结构示意图。如图3所示,该装置包括:接收模块31、确定模块32和读取模块33。
[0043]接收模块31,用于接收用于读取至少两条数据的读取指令。
[0044]确定模块32,用于从至少两个数据库中确定需要首次读取的目标库。
[0045]读取模块33,用于从确定模块32确定的目标库中读取接收模块31接收的至少两条数据中的首条数据,并在从目标库中读取到首条数据时,继续从目标库中读取至少两条数据中的其他条数据。
[0046]在一可选实施方式中,如图4所示,该数据读取装置还包括:记录模块34。
[0047]记录模块34,用于在读取模块33从目标库中读取到首条数据时,记录目标库的标识。基于此,读取模块33具体用于:从目标库中读取至少两条数据中的首条数据,并在从目标库中读取到首条数据时,在需要读取其他条数据时,根据目标库的标识,确定目标库,从目标库中读取其他条数据。
[0048]进一步,记录模块34具体用于:将目标数据库的标识记录到读取模块33中执行读取操作的线程的上下文中。
[0049]可选的,确定模块32具体用于:随机从至少两个数据库中确定目标库。或者
[0050]可选的,确定模块32具体用于:根据预设的业务号与库号的对应关系,从至少两个数据库中确定第一业务号对应的数据库作为目标库,第一业务号是读取指令对应的业务的业务号。
[0051]在一可选实施方式中,如图4所示,该数据读取装置还包括:重试触发模块35。
[0052]重试触发模块35,用于在读取模块33未从目标库中读取到首条数据时,触发确定模块32和读取模块33重新执行相应操作,直到达到最大重试次数或成功读取到上述至少两条数据为止。
[0053]本实施例提供的数据读取装置,接收到读取至少两条数据的读取指令时,从至少两个数据库中确定首次读取的目标库,从目标库中读取至少两条数据中的首条数据,若成功从该目标库中读取到首条数据,则继续从该目标库中读取至少两条数据中的其他数据,保证业务所需的数据都从同一数据库中读取,解决了因读取不同数据库导致数据不完整的问题,保证了所读取数据的完整性。
[0054]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0055]在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0056]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0057]另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0058]上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(Random Access Memory, RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0059]最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
【主权项】
1.一种数据读取方法,其特征在于,包括: 接收用于读取至少两条数据的读取指令; 从至少两个数据库中确定需要首次读取的目标库; 从所述目标库中读取所述至少两条数据中的首条数据; 若从所述目标库中读取到所述首条数据,继续从所述目标库中读取所述至少两条数据中的其他条数据。2.根据权利要求1所述的方法,其特征在于,还包括: 当从所述目标库中读取到所述首条数据时,记录所述目标库的标识; 所述继续从所述目标库中读取所述至少两条数据中的其他条数据,包括: 在需要读取所述其他条数据时,根据所述目标库的标识,确定所述目标库,从所述目标库中读取所述其他条数据。3.根据权利要求2所述的方法,其特征在于,所述记录所述目标库的标识,包括: 将所述目标库的标识记录到执行读取操作的线程的上下文中。4.根据权利要求1-3任一项所述的方法,其特征在于,所述从至少两个数据库中确定需要首次读取的目标库,包括: 随机从所述至少两个数据库中确定所述目标库;或者 根据预设的业务号与库号的对应关系,从所述至少两个数据库中确定第一业务号对应的数据库作为所述目标库,所述第一业务号是所述读取指令对应的业务的业务号。5.根据权利要求1-3任一项所述的方法,其特征在于,还包括: 若未从所述目标库中读取到所述首条数据,重新执行从所述至少两个数据库中确定需要首次读取的目标库及后续操作,直到达到最大重试次数或成功读取到所述至少两条数据为止。6.一种数据读取装置,其特征在于,包括: 接收模块,用于接收用于读取至少两条数据的读取指令; 确定模块,用于从至少两个数据库中确定需要首次读取的目标库; 读取模块,用于从所述目标库中读取所述至少两条数据中的首条数据,并在从所述目标库中读取到所述首条数据时,继续从所述目标库中读取所述至少两条数据中的其他条数据。7.根据权利要求6所述的装置,其特征在于,还包括: 记录模块,用于在所述读取模块从所述目标库中读取到所述首条数据时,记录所述目标库的标识; 所述读取模块具体用于: 从所述目标库中读取所述至少两条数据中的首条数据,并在从所述目标库中读取到所述首条数据时,在需要读取所述其他条数据时,根据所述目标库的标识,确定所述目标库,从所述目标库中读取所述其他条数据。8.根据权利要求7所述的装置,其特征在于,所述记录模块具体用于: 将所述目标数据库的标识记录到所述读取模块中执行读取操作的线程的上下文中。9.根据权利要求6-8任一项所述的装置,其特征在于,所述确定模块具体用于: 随机从所述至少两个数据库中确定所述目标库;或者 根据预设的业务号与库号的对应关系,从所述至少两个数据库中确定第一业务号对应的数据库作为所述目标库,所述第一业务号是所述读取指令对应的业务的业务号。10.根据权利要求6-8任一项所述的装置,其特征在于,还包括: 重试触发模块,用于在所述读取模块未从所述目标库中读取到所述首条数据时,触发所述确定模块和所述读取模块重新执行相应操作,直到达到最大重试次数或成功读取到所述至少两条数据为止。
【文档编号】G06F17/30GK105868205SQ201510030016
【公开日】2016年8月17日
【申请日】2015年1月21日
【发明人】朱春茂
【申请人】阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1