《一种数据操作方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种数据操作方法及装置.pdf(11页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 (43)申请公布日 (21)申请号 201410773822.3(22)申请日 2014.12.12G06F 17/30(2006.01)(71)申请人北京奇虎科技有限公司地址 100088 北京市西城区新街口外大街28号D座112室(德胜园区)申请人奇智软件(北京)有限公司(72)发明人朱超 陈非 王超(74)专利代理机构北京国昊天诚知识产权代理有限公司 11315代理人许志勇(54) 发明名称一种数据操作方法及装置(57) 摘要本发明公开了一种数据操作方法及装置,该方法包括:接收针对数据的读请求,查找记录的将所述数据写入主库的写入时刻,确定所述写入时刻到当前时刻的时间长。
2、度,根据所述写入时刻将该读请求发送至主库或者从库以读取该数据。在该方法中,中间件在接收到针对数据的读请求后,并不是直接将该读请求发送至从库以读取数据,而是根据该数据的写入时刻到当前时刻的时间长度,和预设阈值进行判断,来决定发送至主库还是从库。从而,在读取数据时,即使从库中未完成数据的同步,仍可以直接从主库中读取,不会因为数据未完成同步导致读取失败的情况,有效提升了读取数据的成功率。(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书6页 附图2页(10)申请公布号 CN 104376127 A(43)申请公布日 2015.02.25CN 1043。
3、76127 A1/2页21.一种数据操作方法,其特征在于,所述方法包括:接收针对数据的读请求;查找记录的将所述数据写入主库的写入时刻;以及根据所述写入时刻将该读请求发送至主库或者从库以读取该数据。2.如权利要求1所述的方法,其特征在于,所述方法还包括:确定所述写入时刻到当前时刻的时间长度;以及判断所述时间长度是否大于预设阈值;其中,根据所述写入时刻将该读请求发送至主库或者从库以读取该数据具体包括:依据上述判断结果将该读请求发送至主库或者从库以读取该数据。3.如权利要求2所述的方法,其特征在于,若所述时间长度大于预设阈值,则将该读请求发送至从库以读取该数据;否则,则将该读请求发送至主库以读取该数。
4、据。4.如权利要求1-3中任一项所述的方法,其特征在于,接收针对数据的读请求之前,所述方法还包括:接收针对所述数据的写请求;将所述写请求发送至主库以进行写入;以及记录所述数据的写入时刻。5.如权利要求1-4中任一项所述的方法,其特征在于,所述预设阈值通过以下方式设定:确定所述主库将数据同步到从库的平均时长,将该平均时长设定为所述预设阈值。6.如权利要求1-4中任一项所述的方法,其特征在于,所述预设阈值通过以下方式设定:确定所述主库将数据同步到从库的最大时长,将该最大时长设定为所述预设阈值。7.一种数据操作装置,其特征在于,所述装置包括:接收模块、查找模块、时差模块以及判断处理模块,其中;所述接。
5、收模块,用于接收针对数据的读请求;所述查找模块,用于查找记录的将所述数据写入主库的写入时刻;所述时间模块,用于确定所述写入时刻到当前时刻的时间长度;以及所述判断处理模块,用于判断所述时间长度是否大于预设阈值,若是,则将该读请求发送至从库以读取该数据,否则,则将该读请求发送至主库以读取该数据。8.如权利要求7所述的装置,其特征在于,所述接收模块还用于接收针对所述数据的写请求。9.如权利要求8所述的装置,其特征在于,所述判断处理模块还用于将接收的针对所述数据的写请求发送至主库以进行写入。10.如权利要求9所述的装置,其特征在于,所述装置还包括:记录模块,用于记录所述数据写入主库时的写入时刻。11.。
6、如权利要求7-10中任一项所述的装置,其特征在于,所述预设阈值通过以下方式设定:确定所述主库将数据同步到从库的平均时长,将该平均时长设定为所述预设阈值。权 利 要 求 书CN 104376127 A2/2页312.如权利要求7-10中任一项所述的装置,其特征在于,所述预设阈值通过以下方式设定:确定所述主库将数据同步到从库的最大时长,将该最大时长设定为所述预设阈值。权 利 要 求 书CN 104376127 A1/6页4一种数据操作方法及装置技术领域0001 本发明涉及计算机技术领域,尤其涉及一种数据操作方法及装置。背景技术0002 随着信息技术的发展,用户可以使用客户端通过网络途径访问相应的数。
7、据库(如MySQL数据库、Oracle数据库等)来获取所需的数据。数据库中分为主库和从库,并采用读写分离的方式处理数据:由从库处理客户端发出的读请求,由主库处理客户端发出的写请求。0003 现有技术中,通常在数据库和客户端之间设置有中间件(一种数据中转设备),以管理数据库与大量客户端之间的连接交互,并为各客户端提供数据服务,即,客户端与数据库之间通过中间件进行数据连接。中间件建立了与数据库之间的连接之后,会将用户发出的请求按照所属的请求类型分别发送至主库或从库中。0004 例如:客户端发出写请求,则中间件在接收到该写请求后,将该写请求发送至主库中;客户端发出读请求,则中间件将该读请求发送至从库。
8、中。0005 主库执行客户端发送的写请求,完成写入数据的操作后,主库会向从库发送日志,使新写入的数据同步到从库中,从而完成了数据库中数据同步更新的过程。0006 但是,主库向从库同步数据需要一定的时间,若主库将某一数据同步至从库的过程中,客户端发出读请求以读取该数据,那么,由于同步过程未结束,不能在从库中读取到该数据,进而导致读数据失败。可见,现有技术中有很大几率不能正常读取数据。发明内容0007 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据操作方法及装置,能够有效避免因数据同步而导致有很大几率不能正常读取数据。0008 根据本发明的第一个方面,提出一种数。
9、据操作方法,包括:接收针对数据的读请求;0009 查找记录的将所述数据写入主库的写入时刻;0010 根据所述写入时刻将该读请求发送至主库或者从库以读取该数据。0011 根据本发明的第二个方面,提出一种数据操作装置,包括:接收模块、查找模块、时差模块以及判断处理模块,其中;0012 所述接收模块,用于接收针对数据的读请求;0013 所述查找模块,用于查找记录的将所述数据写入主库的写入时刻;0014 所述时间模块,用于确定所述写入时刻到当前时刻的时间长度;0015 所述判断处理模块,用于判断所述时间长度是否大于预设阈值,若是,则将该读请求发送至从库以读取该数据,否则,则将该读请求发送至主库以读取该。
10、数据。0016 根据本发明提供的数据操作方法,中间件在接收到针对某一数据的读请求后,并说 明 书CN 104376127 A2/6页5不是直接将该读请求发送至从库以读取数据,而是查找已记录的该数据的写入时刻,判断该数据的写入时刻到当前时刻的时间长度是否大于预设的阈值,如果时间长度大于阈值,可以认为该数据已经从主库中同步到了从库中,那么,中间件将读请求发送至从库以读取该数据;而如果时间长度小于阈值,就说明该数据还未同步到从库中,从而,中间件将该读请求发送至主库,以直接从主库中进行读取。通过这样的方式,在读取数据时,即使从库中未完成数据的同步,仍可以直接从主库中读取该数据,不会因为数据未完成同步,。
11、而导致读取数据时发生失败的情况,有效提升了读取数据的成功率。附图说明0017 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:0018 图1为依据本发明一个实施例的数据操作过程的示意图;0019 图2为依据本发明一个实施例的实例中客户端、中间件以及数据库的连接架构示意图;0020 图3为依据本发明一个实施例的数据操作过程在实际应用中的示意图;0021 图4为依据本发明一个实施例的数据操作装置结构示意图。具体实施方式0022 下面。
12、将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。0023 下面结合说明书附图,对本发明实施例进行详细描述。0024 图1为依据本发明一个实施例的数据操作方法,可以包括步骤:0025 S101:接收针对数据的读请求。0026 S102:查找已记录的所述数据的写入时刻。0027 S103:根据所述写入时刻将所述读请求发送至主库或者从库以读取该数据。0028 从上述可知,在该实施例中,中间件在接收。
13、到针对某一数据的读请求后,并不是直接将该读请求发送至从库中读取数据,而是查找已记录的该数据的写入时刻,查找该数据的写入时刻的目的在于:根据所述写入时刻,可以判断出该数据是否已经完成了主库到从库的同步过程。这样一来,便可以根据该数据的写入时刻将所述读请求发送至主库或者从库以读取该数据。有效提升了读取数据的成功率。0029 依据本发明的一个实施例,中间件可以根据客户端发出的读请求,确定出该读请求所对应的数据,进而将读请求发送至相应的数据库以读取数据。考虑到现有技术中,中间件将接收到的读请求直接发送至从库以读取数据时,存在因数据未同步完成而导致读取失败的情况。因此在本发明实施例中,当中间件接收到针对。
14、某一数据的读请求之后,将查找该数据的写入时刻。0030 也就是说,在本发明中,根据所述数据的写入时刻,就可以确定在发出读请求时,说 明 书CN 104376127 A3/6页6该数据是否完成了同步,具体地,上述方法还包括:确定所述写入时刻到当前时刻的时间长度,判断所述时间长度是否大于预设阈值,并依据上述判断结果将该读请求发送至主库或者从库以读取该数据。0031 如果该数据的写入时刻到当前时刻的时间长度大于预设阈值,可以认为该数据已经从主库中同步到了从库中,那么,中间件将读请求发送至从库以读取该数据;而如果时间长度小于阈值,就说明该数据还未同步到从库中,从而,中间件将该读请求发送至主库,以直接从。
15、主库中进行读取。通过这样的方式,在读取数据时,即使从库中未完成数据的同步,仍可以直接从主库中读取该数据,不会因为数据未完成同步,而导致读取数据时发生失败的情况,有效提升了读取数据的成功率。0032 这里需要说明的是,数据的写入操作由主库执行,也即,中间件在接收到客户端发送的数据的写请求之后,将该写请求发送给主库以进行数据写入。那么,数据的写入时刻,就是主库接收到写请求并对该数据进行写入操作的时刻。具体地,依据本发明的一个实施例,在接收针对数据的读请求之前,还包括:接收针对所述数据的写请求,并将所述写请求发送至主库以进行写入,记录所述数据的写入时刻。0033 这样一来,主库中所写入的所有的数据,。
16、均有各自所对应的写入时刻。当然,在本发明中,对于数据的写入时刻的记录,可以在主库完成数据的写入后,立即通知中间件,中间件将记录接收到该通知的时刻,作为该数据的写入时刻。当然,在本发明的另一种方式下,也可由负责写入数据的主库记录各数据对应的写入时刻,中间件会实时读取主库所记录的数据的写入时刻。0034 依据本发明的一个实施例,中间件查找到数据的写入时刻后,就可以确定出该写入时刻到当前时刻的时间长度。本发明实施例中,当前时刻就是中间件接收到针对数据的读请求的时刻。0035 还需要说明的是,主库在写入数据之后,会向从库同步数据,具体地,主库向从库同步数据的方式,可以采用binlog日志的方式同步数据。
17、,也即,主库将已经写入的数据记载在binlog日志中,将该binlog日志发送至从库,从库接收到该binlog日志后重放该日志中的各操作记录,完成数据的同步。当然,这样的同步方式并不构成对本发明的限定。显然,从库完成数据的同步需要一定的时间。0036 那么,对于中间件所接收到的读请求,其所要读取的数据可能已经完成了同步,也可能未完成同步。因此,中间件将根据当前时刻到该数据的写入时刻的时间长度,和预先设置的阈值,来判断该数据是否完成同步,进而根据判断结果确定将该读请求发送给主库还是从库。0037 具体地,中间件判断数据的写入时刻到当前时刻的时间长度,是否大于预置阈值。如果时间长度大于(或等于)预。
18、设阈值,就说明从库已经完成了数据的同步,中间件便将针对该数据的读请求,发送至从库以进行读取。而如果时间长度小于预设阈值,就说明从库还未完成数据的同步,此时中间件将该读请求发送至从库,就会造成读取失败,因此,为了能够成功读取数据,中间件将该读请求发送至主库。0038 其中,上述预设阈值的设定方法,具体可以为:确定所述主库将数据同步到从库的平均时长,将该平均时长设定为所述预设阈值。这是因为,主库将不同的数据同步到从库所需的时间各不相同,为了反映所有数据同步过程的耗时,将各数据进行同步所需的时长进说 明 书CN 104376127 A4/6页7行平均后,得到平均时长,将该平均时长设定为预设阈值。通过。
19、该预设阈值,便可以基本确定数据是否已经同步完成。0039 在实际应用中,少数数据在同步过程中耗时较长,可能会大于预设阈值,因此,作为本发明实施例的另一种方式,也可以将同步数据的最大时长设定为所述预设阈值。上述预设阈值的方式可以根据实际应用的需要进行调整设置,并不构成对本发明的限定。0040 当然,上述预设阈值是动态变化的,预设阈值将根据已完成同步的数据进行变化,具体地,已完成同步的数据的数量越多,主库将数据同步到从库的平均时长就越精确(即越能准确反映整体耗时的大小)。0041 本发明所述的数据操作方法的具体应用实例如下:0042 图2示出了在实际应用中,客户端、中间件、主库以及从库的连接架构。。
20、假设预设阈值为2s,主库中已写入数据A和数据B,其中,数据A的写入时刻为10:20:17,数据B的写入时刻为10:20:20。0043 在10:20:21时,中间件接收到客户端发送的读请求I和读请求II,其中,读请求I所要读取的数据为数据A,读请求II所要读取的数据为数据B。0044 中间件查找记录的该数据A的写入时刻为10:20:17,该数据A的写入时刻到当前时刻(10:20:21)的时间长度为4s,显然,时间长度4s大于预设阈值2s,这就说明,该数据A已经同步到了从库中,因此,中间件将该读请求I发送至从库,以读取数据A。0045 中间件查找记录的该数据B的写入时刻为10:20:20,该数据。
21、B的写入时刻到当前时刻(10:20:21)的时间长度为1s,显然,时间长度1s小于预设阈值2s,这就说明,该数据B还未完成同步,因此,中间件将该读请求II直接发送至主库,以读取数据B。0046 如图3所示,结合上述方法及应用实例,在本发明中,图1中的数据操作方法S101S103的实际应用如下:0047 S301:中间件接收针对数据的读请求。0048 S302:中间件查找已记录的所述数据的写入时刻。0049 S303:中间件确定所述写入时刻到当前时刻的时间长度。0050 S304:中间件判断所述时间长度是否大于预设阈值,若是,则执行步骤S305,否则,则执行步骤S306。0051 S305:中间。
22、件将所述读请求发送至从库以读取所述数据。0052 S306:中间件将所述读请求发送至主库以读取所述数据。0053 以上为本发明实施例提供的数据操作方法,基于同样的思路,本发明实施例还提供一种数据操作装置,如图4所示。0054 图4中的数据操作装置,设置在中间件中,与客户端和服务器相连接,所述装置包括:接收模块401、查找模块402、时间模块403以及判断处理模块404,其中,0055 所述接收模块401,用于接收针对数据的读请求。0056 所述查找模块402,用于查找记录的将所述数据写入主库的写入时刻。0057 所述时间模块403,用于确定所述写入时刻到当前时刻的时间长度。0058 所述判断处。
23、理模块404,用于判断所述时间长度是否大于预设阈值,若是,则将该读请求发送至从库以读取该数据,否则,则将该读请求发送至主库以读取该数据。0059 在本发明的一个实施例中,所述接收模块401,还用于接收针对所述数据的写请说 明 书CN 104376127 A5/6页8求。0060 在本发明的一个实施例中,所述判断处理模块404,还用于将接收的针对所述数据的写请求发送至主库以进行写入。0061 在本发明的一个实施例中,所述数据操作装置,还包括:记录模块405,用于记录所述数据写入主库时的写入时刻。0062 所述预设阈值通过以下方式设定:确定所述主库将数据同步到从库的平均时长,将该平均时长设定为所述。
24、预设阈值;或者,确定所述主库将数据同步到从库的最大时长,将该最大时长设定为所述预设阈值。0063 本发明实施例提供一种数据操作方法及装置,该方法中间件在接收到针对某一数据的读请求后,并不是直接将该读请求发送至从库以读取数据,而是查找已记录的该数据的写入时刻,判断该数据的写入时刻到当前时刻的时间长度是否大于预设的阈值,如果时间长度大于阈值,可以认为该数据已经从主库中同步到了从库中,那么,中间件将读请求发送至从库以读取该数据;而如果时间长度小于阈值,就说明该数据还未同步到从库中,从而,中间件将该读请求发送至主库,以直接从主库中进行读取。通过这样的方式,在读取数据时,即使从库中未完成数据的同步,仍可。
25、以直接从主库中读取该数据,不会因为数据未完成同步,而导致读取数据时发生失败的情况,有效提升了读取数据的成功率。0064 在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。0065 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法。
26、、结构和技术,以便不模糊对本说明书的理解。0066 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。0067 本领域那些技术人员可以理解,可以对实施例中的设。
27、备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。说 明 书CN 104376127 A6/6页90068 此外,本领域的技术人员能够理解,尽管在。
28、此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。0069 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的拦截应用程序中的植入信息的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,。
29、计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。0070 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包括”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。。
30、在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。0071 本发明可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。0072 计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。说 明 书CN 104376127 A1/2页10图1图2说 明 书 附 图CN 104376127 A10。