一种分布式服务系统数据查询的方法与流程

文档序号:12034758阅读:338来源:国知局
一种分布式服务系统数据查询的方法与流程

本申请是申请日为2014年04月14日,申请号为cn201410148256.7,发明名称为分布式服务系统及其数据更新、数据查询的方法的分案申请。

本发明涉及计算机网络数据更新技术领域,特别是一种分布式服务系统数据查询的方法。



背景技术:

在大型分布式web服务中,随着用户群的不断增多,对信息系统的访问也越来越多。用户的每次查询请求,信息系统都通过在数据库中进行相应的查找、数据计算等操作,然后将结果返回。查询量增加,信息系统的数据处理量也随之线性增加。为了减轻数据库服务器的访问压力,研发了数据库服务器数据缓存技术。该缓存技术的作用是临时存储用户经常访问的数据,缓存中的数据是数据存储源中数据的拷贝,当用户再次访问已经进行了临时存储的数据时便可以直接返回该数据,而无需再从数据库服务器中获取该数据,由此降低数据库服务器的负担。

主从同步模式是一种常见的解决方案,即设置两个存储内容完全一致的数据库,其中一个为主数据库一个为从数据库。所有写入和更新操作都在主数据库上进行,所有查询操作都在从数据库上进行,主数据库发生写入或更新后变化的内容在一定时间内被更新到从数据库。

目前,在这种主从同步模式下的数据更新方法为,在对数据进行更新操作时首先删除缓存,然后对数据库的主数据库进行更新。此时,当进行数据查询操作时首先查询缓存,如果缓存中有值则直接返回,如果缓存中没有值则查询数据库的从数据库,并将查询到的值放入缓存中。

然而,在这样的解决方案下,可能会导致缓存中的数据与数据库存储的数据不一致的情况,即缓存中的数据为更新前的旧数据的情况。例如,在准备更新操作时,缓存内的数据首先被删除,然后更新主数据库。若在主数据库更新完成前发生一次查询操作,此时按照查询操作的流程,首先会在缓存中进行查找,但由于缓存中数据已经被删除,所以将会在从数据库中查询。假定从数据库查到的数据是a(原数据),在查询结束后这条数据将被写入缓存,即缓存被写入a。而更新操作此时要把数据库更新为b(新数据)。那么将发生数据库中的数据(b)与缓存中的数据(a)不一致,即缓存中保存了错误数据。如果不再发生更新,缓存中的数据将无法更新为b,以后的查询操作所得到的数据都将为缓存中的错误数据a。

又例如,在主数据库完成更新操作后,例如已将数据a更新至b时,发生查询请求,将会首先查询缓存,此时因缓存中的数据已在准备更新操作时被删除,缓存中没有数据,因而将查询从数据库。由于新数据b由主数据库同步到从数据库存在延迟,因此在b还未更新到从数据库时,从数据库中的数据仍然为a,因此查询到的数据将为a,继而a将被写入缓存中。如此,即使之后从数据库的数据被同步为b但此后查询到的数据都将为从缓存中查询到数据a,造成结果错误。

缘此,需要一种新的分布式服务系统以及新的数据更新、数据查询的方法,来有效地避免在数据库更新后缓存中仍存有更新前的旧数据。



技术实现要素:

本发明的目的是提供一种分布式服务系统数据查询的方法,所述系统包括主数据库、从数据库、缓存及标记单元,其中对所述主数据库的数据进行更新时,所述标记单元中存放有标记,在所述主数据库的数据同步至所述从数据库后,所述标记被删除,所述方法包括如下步骤:

a)判断所述缓存中是否存在数据,是则进入步骤f;否则进入步骤b;

b)判断所述标记单元中是否存在所述标记,是则进入步骤c;否则进入步骤d;

c)在所述主数据库中查询数据,然后进入步骤e;

d)在所述从数据库中查询数据;

e)将查询到的数据写入所述缓存;

f)将所述缓存中的数据作为查询结果返回。

优选地,所述标记为所述标记单元的某个数据位被赋予的特定值、或者为存入所述标记单元的数据、或者是创建的文件。

优选地,所述标记单元位于所述缓存中。

优选地,所述系统包括:

主数据库,用于存储数据,支持对其的查询操作;

从数据库,用于存储数据,并且根据所述主数据库的数据更新其所存储的数据,所述从数据库支持对其的查询操作;

缓存,用于存储数据,支持对其的查询操作以及写入操作,其中,对所述主数据库的数据进行更新时,所述缓存中的数据首次被删除,所述主数据库的数据进行更新后,所述缓存中的数据再次被删除;以及

标记单元,用于在所述缓存中的数据首次被删除后,存放所述标记,并当所述主数据库中的数据同步到所述从数据库后,所述标记被删除;

当查询所述分布式服务系统中的数据时,首先查询所述缓存,若所述缓存中存有数据,则所述缓存中的数据作为查询结果返回;若所述缓存未存有数据,则判断所述标记单元中是否存在所述标记,是则对所述主数据库进行数据查询,否则对所述从数据库进行数据查询,对所述主数据库或所述从数据库查询的结果写入所述缓存中。

优选地,所述标记单元中的所述标记为对所述标记单元中某个数据位赋予的特定值,并且,删除所述标记为,使上述数据位复位。

优选地,所述标记单元中的所述标记为存入所述标记单元的数据,并且,删除所述标记为删除所述存入所述标记单元的数据。

优选地,所述标记单元中的所述标记为创建的一个文件,并且,删除所述标记为删除所述创建的文件。

优选地,所述标记单元位于所述缓存中。

本发明一种分布式服务系统数据查询的方法,能够有效地避免数据库更新后缓存中仍存有更新前的旧数据。本发明的数据更新和数据查询方法特别适用于在高并发的分布式服务和主从数据库环境下,保证了缓存中的数据与数据库的数据一致,消除了因高并发和主从同步延迟带来的数据不一致风险。

附图说明

参考随附的附图,本发明更多的目的、功能和优点将通过本发明实施方式的如下描述得以阐明,其中:

图1a示意性示出了根据本发明一实施例的分布式服务系统的结构框图。

图1b示意性示出了根据本发明另一实施例的分布式服务系统的结构框图。

图2示意性示出了根据本发明一实施例的分布式服务系统数据更新方法的流程图。

图3示意性示出了根据本发明一实施例的分布式服务系统数据查询方法的流程图。

具体实施方式

通过参考示范性实施例,本发明的目的和功能以及用于实现这些目的和功能的方法将得以阐明。然而,本发明并不受限于以下所公开的示范性实施例;可以通过不同形式来对其加以实现。说明书的实质仅仅是帮助相关领域技术人员综合理解本发明的具体细节。

在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。

图1a示意性示出了根据本发明一实施例的分布式服务系统的结构框图。如图1a所示,应用根据本发明一实施例的分布式服务系统包括:主数据库110、从数据库120、缓存130以及标记单元131。图1b示意性示出了根据本发明另一实施例的分布式服务系统的结构框图。其中标记单元131位于缓存130内。

在系统更新数据时,先对主数据库110内的数据进行更新,并根据主数据库110中更新后的数据对从数据库120进行更新同步。特别地,支持对主数据库110的查询操作,例如在缓存130中存在标记的情况下。关于标记,将在后面进行说明。

从数据库120,用于接收来自主数据库1105的同步更新数据,并支持对从数据库120的查询(例如在缓存130中未找到待查询数据时),并在查询后将查询结果写入缓存130中。

缓存130,支持对其的查询操作以及写入操作。其中,缓存130中的数据在当对主数据库110进行数据库更新时首次被删除,在主数据库进行数据更新后,再次被删除。

标记单元131用于标记系统处于数据更新状态。当系统进行数据更新时,在首次删除所述缓存130中的数据之后,在标记单元131中放入标记,并当所述主数据库中的数据同步到所述从数据库后,将所述标记删除。如图1a和图1b分别所示,标记单元131可以设置于缓存130外或位于缓存130内。

优选地,在标记单元131中放入标记为对标记单元131中某个数据位赋予特定值,并且,删除所述标记为使上述数据位复位。

优选地,在标记单元131中放入标记为在标记单元131中存入数据,例如但不限于存入能够起标记功能的数据,并且,删除所述标记为删除所述存入的数据。

优选地,在标记单元131中放入标记为在标记单元131中创建一个文件,并且删除所述标记为删除所创建的文件。

在对缓存130进行查询操作时,若缓存130中存在查询结果,则直接返回该查询结果;若没有查询结果,则判断缓存130的标记单元131中是否存在标记,是则在主数据库110进行数据查询,否则在从数据库120进行数据的查询,查询完成后,将来自主数据库110或从数据库120的查询结果写入缓存130,并返回该查询结果。

图2示意性示出了根据本发明一实施例的分布式服务系统数据更新的方法流程图。如图2所示:步骤210,当分布式服务系统进行数据更新时,首先,删除缓存130中的数据。在根据本发明的分布式服务的主从数据库架构中,当需要对数据库进行更新时,直接对主数据库110内的数据进行更新。

步骤220,在标记单元131中放入标记。其中,在所述标记单元中放入标记例如为,对所述标记单元131中某个数据位赋予特定的值,例如将标记单元131中某个数据位赋值为1。在所述标记单元131中放入标记又例如为,在标记单元131中存入数据,较佳地,存入能够起标记功能的数据,例如存入一段长、且复杂的能起标识特点的值。所述放入标记还例如为创建一个文件。

步骤230,对主数据库110的数据进行更新。

步骤240,将主数据库110中的数据同步到从数据库120。根据本发明,只要主数据库110有更新操作并且更新的事务请求已经提交,就会进行同步操作。

步骤250,删除缓存130中的数据。特别地,这里不删除标记单元131中的标记。删除缓存130中的数据的目的在于,删除从步骤210之后到本步骤之前在缓存130中存放的旧数据。该旧数据具体包括:从步骤210之后到步骤220之前的由从数据库120写入缓存130的旧数据。

在本实施方式中,虽然先进行步骤240,然后再进行步骤250,但是步骤的顺序不限于此。例如也可以先进行步骤250然后再进行步骤240。即,步骤240与步骤250只要在步骤230之后、步骤260之前即可。步骤260,删除步骤220中设置在标记单元131中的标记。特别地,在完成将主数据库110同步到从数据库120的操作后进行对标记的删除。这里删除标记的方式,例如将标记单元131中的于步骤220中被赋予特定值的数据位复位,例如将在步骤220中的标记单元131的被赋值为1的数据位复位。删除标记又例如为,删除标记单元131中的步骤220中存入的数据,较佳地为能够起标记功能的数据,例如删除所述的长、且复杂的能起标识特点的值。还例如,删除步骤220中创建的文件。

图3示意性示出了当例如如图2所示的对主从数据库进行更新之后,进行数据库查询的方法的流程图。

如图3所示:步骤310,当需要对数据库进行查询操作时,首先,查询缓存130,判断缓存130中是否存在待查询数据,是则进入步骤360直接返回查询结果;否则进入步骤320。

步骤320,判断标记单元131中是否存在标记,是则进入步骤330;否则进入步骤340。所述标记为上述当对主数据库110进行数据更新时在标记单元131中放入的标记。

步骤330,在主数据库110中查询数据,然后进入步骤350。当判断出标记单元131中存在标记时,说明系统正在进行对主数据库110的数据更新操作的过程中,此时需要直接查询正在被更新的主数据库110才能得到最新的且正确的数据结果。

步骤340,在从数据库120中查询数据。当判断出标记单元131中不存在标记时,说明系统没有正在进行对主数据库110的数据更新操作。由于每一次的数据库更新操作后,都会将更新后的主数据库110的数据10同步到从数据库120中,因此当标记单元131中不存在标记时,说明此时主数据库110和从数据库120已经是同步的,此时只需要查询从数据库120即可得到最新的且正确的数据结果。

步骤350,将查询到的数据写入所述缓存130。写入操作可以保证缓存中的数据与主数据库以及从数据库中的数据一致,从而保证了之后的15数据库查询中,当缓存中存在数据时,只需查询缓存即可得到正确且最新的数据结果。

步骤360,将所述缓存中的数据作为查询结果返回。

根据本发明的分布式服务中对主从数据库进行数据库更新的方法和系统,能够有效地避免在完成数据库更新后的缓存中仍存有更新前的旧数据的可能性。本发明的数据库更新和查询方法特别适用于在高并发的分布式服务和主从数据库环境下,保证了缓存中的数据与数据库的数据一致,消除了因高并发和主从同步延迟带来的数据不一致风险。

结合这里披露的本发明的说明和实践,本发明的其他实施例对于本领域技术人员都是易于想到和理解的。说明和实施例仅被认为是示例性的,本发明的真正范围和主旨均由权利要求所限定。

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