数据库服务器端结果集缓存的数据同步方法及装置的制作方法

文档序号:6369200阅读:146来源:国知局
专利名称:数据库服务器端结果集缓存的数据同步方法及装置的制作方法
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库服务器端结果集缓存的数据同步方法及装置。
背景技术
目前,在数据库实际应用环境中,服务器端为快速响应用户端的查询请求,提高用户体验,产生了结果集缓存技术,也就是在服务器端的共享缓存中的一块区域存放某一条查询语句执行所得到的结果,从而便于下一次用户端再有相同语句查询时能够直接获取并返回之前缓存的结果集。举例来说,在网页服务中相同的网页会被重复的请求,这样只要查询一次,将结果缓存,下次相同查询请求时,便可直接返回结果,该结果集缓存技术有效解决了只读和读操·作占多数的数据的缓存问题。但现有技术方案中,结果集缓存技术也存在着数据一致性要求,即当数据库服务器端的数据表被修改时,所有涉及此表的结果集直接失效,那么再有相同语句进行查询时,就需要执行传统流程,然后将获得的最新结果保存到结果集缓存中,并没有实现结果集缓存的增量更新,使得结果集的更新时间较长,降低了用户体验。

发明内容
本发明实施例提供了一种数据库服务器端结果集缓存的数据同步方法及装置,能够有效保证数据的一致性,使结果集在相关表被修改时也能继续使用,从而大大缩短了修改表时结果集的更新时间,进而提高了用户体验。本发明实施例提供了一种数据库服务器端结果集缓存的数据同步方法,所述方法包括在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识,并在结果集缓存的结果集头部字段中存储该数据表的表标识,且在所述结果集头部字段中存储有查询语句的类别,所述查询语句的类别包括单一操作的简单语句和多操作的复杂语句;当所述结果集缓存中的某一查询语句被执行,且该查询语句为简单语句时,在所记录的被修改的所有行记录上重新执行查询并得到查询结果;根据修改数据表的不同操作将所得到的查询结果与所述结果集缓存中缓存的结果合并,冋步更新结果集缓存。本发明实施例还提供了一种数据库服务器端结果集缓存的数据同步装置,所述装置包括修改记录单元,用于在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识;头部字段设置单元,用于在结果集缓存的结果集头部字段中存储所修改数据表的表标识,且在所述结果集头部字段中存储有查询语句的类别,所述查询语句的类别包括单一操作的简单语句和多操作的复杂语句;记录查询单元,用于当所述结果集缓存中的某一查询语句被执行,且该查询语句为简单语句时,在所记录的被修改的所有行记录上重新执行查询并得到查询结果;同步更新单元,用于根据修改数据表的不同操作将记录查询单元所得到的查询结果与所述结果集缓存中缓存的结果合并,同步更新结果集缓存。由上述所提供的技术方案可以看出,所述方法在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识,并在结果集缓存的结果集头部字段中存储该数据表的表标识;当所述结果集缓存中的某一查询语句被执行,且该查询语句为简单语句时,在所记录的被修改的所有行记录上重新执行查询并得到查询结果;根据修改数据表的不同操作将所得到的查询结果与所述结果集缓存中缓存的结果合并,同步更新结果集缓存。通过上述方法实施就能够有效保证数据的一致性,使结果集在相关表被修改时也能继续使用,从而大大缩短了修改表时结果集的更新时间,进而提高了用户体验。


·图I为本发明实施例所提供数据库服务器端结果集缓存的数据同步方法流程示意图;图2为本发明所举具体实例中结果集缓存的结构示意图;图3为本发明实施例所提供数据同步装置的结构示意图。
具体实施例方式本发明实施方式提供了一种数据库服务器端结果集缓存的数据同步方法及装置,该方法通过记录修改数据表时被修改的行记录的Oid(即表内每行数据的唯一性标识,通过此标识可找到行数据),在数据表修改后,如果查询语句在结果集缓存中存在,则在所记录的被修改的行记录上重新做查询,避免全表的查询,并在得到结果后,将其与之前缓存的结果集进行合并,从而避免修改表时,将对应结果集直接作废,达到增量更新缓存的效果,该方法有效保证数据的一致性,使结果集在相关表被修改时也能继续使用,从而大大缩短了修改表时结果集的更新时间,进而提高了用户体验。为更好的描述本发明实施方式,现结合附图对本发明的具体实施方式
进行说明,如图I所示为本发明实施例所提供数据库服务器端结果集缓存的数据同步方法流程示意图,所述方法包括步骤11 :在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识,并在结果集缓存的结果集头部字段中存储该数据表的表标识。在该步骤中,在修改数据库服务器端的数据表时,可以通过在所述结果集缓存中设置记录表来记录被修改的数据表的行记录标识,并将该数据表的表标识存储在结果集缓存的结果集头部子段中。步骤12 :当所述结果集缓存中的某一查询语句被执行,判断该查询语句是否为简单语句。在该步骤中,当结果集缓存中的某一查询语句被执行,对该查询语句的类别进行判断,具体实现中,在结果集头部字段中还可以存储有查询语句的类别,所述查询语句的类别包括单一操作的简单语句和多操作的复杂语句。具体来说,通过对该查询语句的操作过程进行判断,若是单一操作的语句,则判断为简单语句,并可进一步将结果集头部字段中所存储的查询语句类别设定为简单语句;若是多操作混合的语句,则判断为复杂语句,并可进一步将结果集头部字段中所存储的查询语句类别设定为复杂语句。另外,在结果集头部字段中还可以设置数据一致性标志位,当所述结果集缓存中的某一查询语句被执行时,还可以进一步根据在所述结果集头部字段中设置的数据一致性标志位判断是否需要进行后继操作,若所述数据一致性标志位为一致,则不需要进行后继步骤的操作,若所述数据一致性标志位为不一致,则继续后继步骤操作。步骤13 :若判断是简单语句,则在所记录的被修改的所有行记录上重新执行查询并得到查询结果。在该步骤中,在所记录的被修改的所有行记录上重新执行查询并得到查询结果的·过程具体为根据所存储的数据表的表标识查找得到该数据表的所有行记录标识,并根据该所有行记录标识在被修改的所有行记录上重新执行查询并得到查询结果。步骤14 :根据修改数据表的不同操作将所得到的查询结果与所述结果集缓存中缓存的结果合并,同步更新结果集缓存。在该步骤中,修改数据表的不同操作包括插入行记录,修改行记录或删除行记录,针对不同情况将所得到的查询结果与所述结果集缓存中缓存的结果合并,具体来说若所述修改数据表的操作为插入行记录,则将查询结果与所述结果集缓存中缓存的结果合并;若所述修改数据表的操作为修改行记录,则将查询结果与所述结果集缓存中缓存的结果合并,并将原行记录删除;若所述修改数据表的操作为删除行记录,则在所述结果集缓存中删除该行记录。通过上述的操作就实现了同步更新结果集缓存,且缩短了修改表时结果集的更新时间,提闻了用户体验。另外,当进行上述步骤12的操作,判断该查询语句不是简单语句,也即为复杂语句时,则进行步骤15的操作,即该复杂语句的缓存失效,重新通过所述数据库服务器端的数据表来查询并得到查询结果,并更新结果集缓存。具体实现中,通过将查询语句进行分类,对于包含sortby、groupby、limit、聚集函数等多操作的复杂语句,在修改表发生时,直接将其结果集作废,能够避免因数据同步造成的得不偿失的情况,从而保证数据同步策略的有效性。另外,所述结果集缓存的结果集头部中还可进一步包括用于唯一标记结果集缓存的字段,以及用于记录结果集缓存被访问次数的字段,以便更有效的对结果集缓存进行管理。下面以具体的实例来对上述数据同步方法进行详细说明,如图2所示为本发明所举具体实例中结果集缓存的结构示意图,图2中结果集缓存包括索引、结果集、记录表三部分,本实例主要涉及结果集和记录表,结果集分为头部和结果数据两部分。图2中结果集头部共包括五个字段字段I存放查询语句用于唯一标记此结果集;字段2存放所修改数据表的表标识,表明结果集来自于哪些表;字段3存放数据一致性标志位,用于表示该结果集是否与数据表的数据一致;字段4存放此结果集被访问的次数,用于缓存管理策略;字段5存放查询语句的类别,包括操作单一的简单语句和多操作的复杂语句,该类别可以用I表示简单语句,2表示复杂语句。图2中记录表存放的是修改数据库服务器端的数据表时,被修改的行记录的标识oid,这里只有被修改的数据表标识出现在结果集头部的字段2里面的时候,才记录它被修改的行记录的oid到该记录表中,具体实现中记录表存放的不限于行记录的oid,其他可唯一标志行记录的标识也是可以的。通过上述操作,当数据表被修改时,将被修改行的Oid记录到记录表,并修改结果集头部的相应字段,并在下一条相同的查询语句执行时执行如下操作Stepl :首先读取结果集头部,若字段3 —致性标志位为true,则直接返回结果集给用户,不进行后继操作;若字段3为fale,则进行后继操作。进一步判断字段5的查询语句类别,若查询语句为类别I简单语句,则进入St印2 ;·若查询语句为类别2复杂语句,则说明结果集失效,重新通过所述数据库服务器端的数据表来查询并得到查询结果,并更新结果集缓存。Step2 :根据字段2中的数据表标识查找在记录表中所记录的被修改行记录的oid ;Step3 :对被修改的所有行记录重新执行查询语句,得到查询结果;Step4:将所得到的查询结果与之前结果集缓存的查询结果合并,更新结果集并设置相应字段,并将最新结果返回给用户。这里,所述的合并过程具体为对于被插入的行记录,满足查询条件则与缓存的查询结果合并;对于被修改的行记录,满足查询条件则与缓存的查询结果合并,若旧记录在缓存结果中存在将其删除;对于被删除的行记录,若在缓存结果中存在将其删除。上述的简单语句在本实例中可以是不包含分类sort by、分组group by、聚集函数、限定limit等语句的单一操作的语句。上述的复杂语句在本实例中可以是包含sortby、group by、聚集函数、限定limit等语句的多操作的语句,该复杂语句不适合进行数据同步,因为操作较为复杂,耗时较多。通过上述技术方案的实施,就可以有效保证数据的一致性,使结果集在相关表被修改时也能继续使用,从而大大缩短了修改表时结果集的更新时间,进而提高了用户体验。本发明实施例提供了一种数据库服务器端结果集缓存的数据同步装置,如图3所示为本发明实施例所提供数据同步装置的结构示意图,所述装置包括修改记录单元31,用于在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识;头部字段设置单元32,用于在结果集缓存的结果集头部字段中存储所修改数据表的表标识,且在所述结果集头部字段中存储有查询语句的类别,所述查询语句的类别包括单一操作的简单语句和多操作的复杂语句;记录查询单元33,用于当所述结果集缓存中的某一查询语句被执行,判断该查询语句是否为单一操作的简单语句,若是简单语句,则在所记录的被修改的所有行记录上重新执行查询并得到查询结果;同步更新单元34,用于根据修改数据表的不同操作将记录查询单元所得到的查询结果与所述结果集缓存中缓存的结果合并,同步更新结果集缓存。具体实现中,上述头部字段设置单元32还用于在所述结果集头部字段中设置数据一致性标志位,根据该数据一致性标志位判断是否需要进行后继操作,若所述数据一致性标志位为一致,则不需要进行后继操作,若所述数据一致性标志位为不一致,则继续后继操作。所述头部字段设置单元32还用于在所述结果集头部字段中设置用于唯一标记结果集缓存的字段,以及用于记录结果集缓存被访问次数的字段。上述装置实施例中各单元的具体实现过程可参考上述方法实施例中所述。值得注意的是,上述装置实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
·
另外,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。综上所述,本发明实施例能够有效保证数据的一致性,使结果集在相关表被修改时也能继续使用,从而大大缩短了修改表时结果集的更新时间,进而提高了用户体验。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种数据库服务器端结果集缓存的数据同步方法,其特征在于,所述方法包括 在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识,并在结果集缓存的结果集头部字段中存储该数据表的表标识; 当所述结果集缓存中的某一查询语句被执行,判断该查询语句是否为单一操作的简单语句,若是简单语句,则在所记录的被修改的所有行记录上重新执行查询并得到查询结果; 根据修改数据表的不同操作将所得到的查询结果与所述结果集缓存中缓存的结果合并,冋步更新结果集缓存。
2.如权利要求I所述的数据同步方法,其特征在于,所述在所记录的被修改的所有行记录上重新执行查询并得到查询结果,具体包括 根据所存储的数据表的表标识查找得到该数据表的所有行记录标识,并根据该所有行记录标识在被修改的所有行记录上重新执行查询并得到查询结果。
3.如权利要求I所述的数据同步方法,其特征在于,所述方法还包括 当所述结果集缓存中的某一查询语句被执行,若判断该查询语句为多操作的复杂语句,则该复杂语句的缓存失效,重新通过所述数据库服务器端的数据表来查询并得到查询结果,并更新结果集缓存。
4.如权利要求I所述的数据同步方法,其特征在于,在所述结果集缓存中的某一查询语句被执行时,所述方法还包括 根据在所述结果集头部字段中设置的数据一致性标志位判断是否需要进行后继操作,若所述数据一致性标志位为一致,则不需要进行后继操作,若所述数据一致性标志位为不一致,则继续后继操作。
5.如权利要求I所述的数据同步方法,其特征在于,所述记录被修改的数据表的行记录标识,具体包括 通过在所述结果集缓存中设置记录表来记录被修改的数据表的行记录标识。
6.如权利要求I所述的数据同步方法,其特征在于,所述结果集缓存的结果集头部中还包括 用于唯一标记结果集缓存的字段,以及用于记录结果集缓存被访问次数的字段。
7.如权利要求I所述的数据同步方法,其特征在于,所述根据修改数据表的不同操作将所得到的查询结果与所述结果集缓存中缓存的结果合并,具体包括 若所述修改数据表的操作为插入行记录,则将查询结果与所述结果集缓存中缓存的结果合并; 若所述修改数据表的操作为修改行记录,则将查询结果与所述结果集缓存中缓存的结果合并,并将原行记录删除; 若所述修改数据表的操作为删除行记录,则在所述结果集缓存中删除该行记录。
8.一种数据库服务器端结果集缓存的数据同步装置,其特征在于,所述装置包括 修改记录单元,用于在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识; 头部字段设置单元,用于在结果集缓存的结果集头部字段中存储所修改数据表的表标识,且在所述结果集头部字段中存储有查询语句的类别,所述查询语句的类别包括单一操作的简单语句和多操作的复杂语句; 记录查询单元,用于当所述结果集缓存中的某一查询语句被执行,判断该查询语句是否为单一操作的简单语句,若是简单语句,则在所记录的被修改的所有行记录上重新执行查询并得到查询结果; 同步更新单元,用于根据修改数据表的不同操作将记录查询单元所得到的查询结果与所述结果集缓存中缓存的结果合并,同步更新结果集缓存。
9.如权利要求8所述的数据同步装置,其特征在于, 所述头部字段设置单元还用于在所述结果集头部字段中设置数据一致性标志位,根据该数据一致性标志位判断是否需要进行后继操作,若所述数据一致性标志位为一致,则不需要进行后继操作,若所述数据一致性标志位为不一致,则继续后继操作。
10.如权利要求8所述的数据同步装置,其特征在于, 所述头部字段设置单元还用于在所述结果集头部字段中设置用于唯一标记结果集缓存的字段,以及用于记录结果集缓存被访问次数的字段。
全文摘要
本发明实施例提供了一种数据库服务器端结果集缓存的数据同步方法及装置。所述方法在修改数据库服务器端的数据表时,记录被修改的数据表的行记录标识,并在结果集缓存的结果集头部字段中存储该数据表的表标识,当所述结果集缓存中的某一查询语句被执行,且该查询语句为简单语句时,在所记录的被修改的所有行记录上重新执行查询并得到查询结果;根据修改数据表的不同操作将所得到的查询结果与所述结果集缓存中缓存的结果合并。通过上述方法实施就能够有效保证数据的一致性,使结果集在相关表被修改时也能继续使用,从而大大缩短了修改表时结果集的更新时间,进而提高了用户体验。
文档编号G06F17/30GK102789475SQ20121014017
公开日2012年11月21日 申请日期2012年5月8日 优先权日2012年5月8日
发明者巩玉旺 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1