一种获取数据的方法及装置与流程

文档序号:16468461发布日期:2019-01-02 22:55阅读:187来源:国知局

本发明涉及计算机技术领域,具体涉及一种获取数据的方法及装置。



背景技术:

在现有技术中,完成主数据库与从数据库之间的数据同步,被称为主数据库与从数据库之间的主从数据复制,这种方法的目的就在于使得主数据库中存储的数据与从数据库中存储的数据一致。然而,从数据库在对主数据进行接口调用的过程中会因为主从数据复制而存在延时问题。由于从数据库需要进行主从数据复制并且该从数据库查找的数据实际上是存在的,只不过被查找的数据还没有被同步到该从数据库而已,从而导致调用从数据库的接口之后返回的信息为空。

为了能够及时地从该从数据库中获取准确数据,现有技术中提出了一种获取数据的方法,即从数据库接口获取数据但发现该数据不存在时,便将该数存储到另一个文件型数据库中,然后对该文件型数据库中的数据对从数据库进行定期(worker)调度轮询,从而根据该文件型数据库中存储的数据再次尝试从该从数据库中获取相应数据。

然而,在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

随着主从复制的数据量呈现指数倍的增长,并且由于按照定期进行轮询的获取数据方式,不仅无法从该从数据库中及时获取相应数据,而且因为对从数据库的定期(worker)调度轮询,使得在当前情形下数据库的负荷骤增,更加影响了数据获取的时效性,循环往复陷入恶性循环。



技术实现要素:

有鉴于此,本发明实施例提供一种获取数据的方法及装置,以达到有效提高返回数据的实时性。

为实现上述目的,根据本发明的一个方面,提供了一种获取数据的方法,其中,所述数据在数据库中有唯一性数据标识,并且所述数据在主从数据复制过程中具有对应的超时时间,其特征在于,所述方法包括执行如下步骤:

接收从所述数据库中获取各个所述数据的调度请求;

根据所述调度请求,将各个所述数据的属性信息存入红黑树中,其中所述属性信息包括:所述超时时间和所述数据标识;

判断所述数据对应的所述超时时间是否超出预设阈值,并根据判断结果对所述数据库执行调度任。

可选地,该方法还包括:按照所述超时时间的递增或递减顺序依次将各个所述数据的所述属性信息保存至所述红黑树中的各个节点上。

可选地,该方法还包括:如果所述超时时间大于等于预设阈值,则将与所述超时时间对应的所述数据标识删除;

如果所述超时时间小于所述预设阈值,则将所述数据按照所述超时时间的递增或递减顺序对所述数据库执行调度任务,获取所述数据标识对应的所述数据。

根据本发明的另一个方面,还提供了一种获取数据的装置,其中,所述数据在数据库中有唯一性数据标识,并且所述数据在主从数据复制过程中具有对应的超时时间,其特征在于,所述装置包括:

接收模块,用于接收从所述数据库中获取各个所述数据的调度请求;

存储模块,用于根据所述调度请求,将各个所述数据的属性信息存入红黑树中,其中所述属性信息包括:所述超时时间和所述数据标识;

执行模块,用于判断所述数据对应的所述超时时间是否超出预设阈值,并根据判断结果对所述数据库执行调度任。

可选地,所述存储模块还用于:按照所述超时时间的递增或递减顺序依次将各个所述数据的所述属性信息保存至所述红黑树中的各个节点上。

可选地,所述执行模块还用于:如果所述超时时间大于等于预设阈值,则将与所述超时时间对应的所述数据标识删除;

如果所述超时时间小于所述预设阈值,则将所述数据按照所述超时时间的递增或递减顺序对所述数据库执行调度任务,获取所述数据标识对应的所述数据。

根据本发明的一个方面,还提供了一种获取数据的电子设备,其中,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明提供的获取数据的方法。

根据本发明的一个方面,还提供了一种计算机可读介质,其中,所述程序被处理器执行时实现如本发明提供的获取数据的方法。

上述发明中的一个实施例具有如下优点或有益效果:

因为采用将超时数据的数据标识存储至红黑树中的技术手段,所以克服了现有技术采用文件数据库存储超时数据的数据标识从而导致的获取从数据库中数据返回时间较慢的技术问题,进而达到提高了获取数据的处理速度的技术效果。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1是根据本发明实施例的获取数据的方法的主要流程的示意图;

图2是根据本发明实施例的将数据存入红黑树的结构示意图;

图3是根据本发明实施例的获取数据的装置的主要模块的示意图;

图4是适于用来实现本发明实施例的终端设备的计算机系统的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

在本文中,需要理解的是,所涉及的术语中:

一、主数据库,一般是指实时的业务数据库;

二、从数据库,一般用于建立一个和主数据库完全一样的数据库环境,而从数据库的作用和使用场合一般有如下几个:

1、作为后备数据库,主数据库服务器出现故障后,可切换到从数据库继续工作;

2、可在从数据库中作备份和数据统计等工作,这样不影响主数据库的性能。

示例性方法

图1是根据本发明实施例的获取数据的方法的主要流程的示意图。其中,所述数据在数据库中有唯一性数据标识,并且所述数据在主从数据复制过程中具有对应的超时时间,其特征在于,所述方法包括执行如下步骤:

步骤s101:接收从所述数据库中获取各个所述数据的调度请求;

步骤s102:根据所述调度请求,将各个所述数据的属性信息存入红黑树中,其中所述属性信息包括:所述超时时间和所述数据标识;

步骤s103:判断所述数据对应的所述超时时间是否超出预设阈值,并根据判断结果对所述数据库执行调度任。

可选地,该方法还包括:按照所述超时时间的递增或递减顺序依次将各个所述数据的所述属性信息保存至所述红黑树中的各个节点上。

可选地,该方法还包括:如果所述超时时间大于等于预设阈值,则将与所述超时时间对应的所述数据标识删除;

如果所述超时时间小于所述预设阈值,则将所述数据按照所述超时时间的递增或递减顺序对所述数据库执行调度任务,获取所述数据标识对应的所述数据。

实施例

下面结合一个实际应用场景的具体实施例对本发明进行具体描述,然而值得注意的是该具体实施例仅是为了更好地描述本发明,并不构成对本发明的不当限定。

针对电商的物流属性项目,其内容大致为:上游erp(主数据库)需要向下游的各个业务数据库(从数据库)推送(push)商品属性信息。各个业务数据库需要通过各个业务数据库的特定接口,并且根据商品编码(sku)获取各个商品对应的归属库房列表,但是由于业务数据库(从数据库)需要进行主从数据复制,而根据商品编码进行查找对应的归属库房列表的时候,库房归属列表可能还没有被同步到从数据库中,虽然库房归属列表是存在,但是上述情况会发生调用接口返回信息为空。

在实现本发明过程中,本发明通过按照超时时间的递增顺序,依次将超时未获取到的商品编码(sku)分别存入至一个红黑树结构中,如图2所示。

具体来说,超时时间由系统指定,每个节点包含如下四个数据:

1、超时时间(time)

2、商品编码(sku)

3、是否超时(overtime,0代表未超时,1代表超时)

4、记录添加时间的毫秒数(atime),存储记录时的毫秒数。

在超时计算中,会有个变量time_min_intl,用来存储当前红黑树最小单位的超时时长。

例如,图2中,最小时长为50,则time_min_intl的值为50;它的作用为,遍历当前红黑树最小单位,并将最小单位的值(超时时间time)赋给time_min_intl,其中time_min_intl为每次轮训的基本单位。

同时,还需要有一个time_max_overtime,用来设定最大超时单位。

当轮询的时间超过time_max_overtime时,将节点删除掉。

当遍历的时间超过设定的times时,且大于time_max_overtime时,将实体中的overtime设定为1,表示已经超时。

针对超时计算的任务,一共涉及3个

一个用来插入超时数据到红黑树;

一个用来轮训红黑树找到轮训最小单位并执行调度任务;

一个用来轮训超时数据并删除数据;

此外,下面结合图2还提供了多个方法间协同工作的方法。

定义ot_insert_event_process方法,用来表示将超时的商品信息插入到红黑树中;

定义ot_time_intl_process方法,用来查找红黑树中最小单位的时间间隔数据;

定义time_event_process方法,用来处理满足条件的商品调用库房信息,更新库存下发到库房操作;

定义ot_event_process方法,用来处理超时的数据,并从红黑树中提出。

定义ot_wait_process方法,用来进行等待操作。

(1)首先ot_insert_event_process会将超时的商品属性信息插入到红黑树中;

(2)然后进行轮询,调用time_event_process方法,方法内实现过程如下,查看是否存在最小间隔单位time_intl,如果不存在,定义最小轮训单位,

(3)通过ot_wait_process()判断是否超时。

如果未超时,更新sku,调用update_sku();同时查看库房是否发现数据,未发现,则进行下一轮的调用。如果找到了,重新定义最小单位并删除该节点;

如果超时,证明在单位时间内仍然没有在库房获得到数据,从节点中删除数据。

图3是根据本发明实施例的获取数据的装置的主要模块的示意图。其中,所述数据在数据库中有唯一性数据标识,并且所述数据在主从数据复制过程中具有对应的超时时间,其特征在于,所述装置2包括:

接收模块31,用于接收从所述数据库中获取各个所述数据的调度请求;

存储模块32,用于根据所述调度请求,将各个所述数据的属性信息存入红黑树中,其中所述属性信息包括:所述超时时间和所述数据标识;

执行模块33,用于判断所述数据对应的所述超时时间是否超出预设阈值,并根据判断结果对所述数据库执行调度任。

可选地,所述存储模块32还用于:按照所述超时时间的递增或递减顺序依次将各个所述数据的所述属性信息保存至所述红黑树中的各个节点上。

可选地,所述执行模块33还用于:如果所述超时时间大于等于预设阈值,则将与所述超时时间对应的所述数据标识删除;

如果所述超时时间小于所述预设阈值,则将所述数据按照所述超时时间的递增或递减顺序对所述数据库执行调度任务,获取所述数据标识对应的所述数据。

由于本发明提供的获取数据的装置是上述方法对应的装置,故不在此赘述。

下面参考图4,其示出了适于用来实现本发明实施例的终端设备的计算机系统400的结构示意图。图4示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图4所示,计算机系统400包括中央处理单元(cpu)401,其可以根据存储在只读存储器(rom)402中的程序或者从存储部分408加载到随机访问存储器(ram)403中的程序而执行各种适当的动作和处理。在ram403中,还存储有系统400操作所需的各种程序和数据。cpu401、rom402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。

以下部件连接至i/o接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至i/o接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(cpu)401执行时,执行本发明的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块31、存储模块32、执行模块33。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:

步骤s101:接收从所述数据库中获取各个所述数据的调度请求;

步骤s102:根据所述调度请求,将各个所述数据的属性信息存入红黑树中,其中所述属性信息包括:所述超时时间和所述数据标识;

步骤s103:判断所述数据对应的所述超时时间是否超出预设阈值,并根据判断结果对所述数据库执行调度任。

根据本发明实施例提供的获取数据的方法及装置,通过将超时数据的数据标识存储至红黑树中的技术手段,所以克服了现有技术采用文件数据库存储超时数据的数据标识从而导致的获取从数据库中数据返回时间较慢的技术问题,进而达到提高了获取数据的处理速度的技术效果。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1