一种实现数据一致性的方法及其系统技术方案

技术编号:7257941 阅读:215 留言:0更新日期:2012-04-13 05:01
本发明专利技术公开了一种实现数据一致性的方法及其系统,数据访问组件接受用户消息,根据用户消息生成动态SQL,XML数据库配置文件连接关系数据库并获取数据,再将数据传给应用层;根据全局性质的数据访问组件对象名、数据获取对象名查询全局的缓存数据集合,若存在数据则返回数据给数据访问组件,由数据访问组件传递给应用层;若没有数据,则根据数据访问组件对象名、数据获取对象名,创建一个全局的缓存组件,并将获取的数据动态SQL、数据访问组件对象名、数据获取对象名传送给缓存组件。该方法及其系统解决了服务器缓存与关系数据库之间的数据一致性问题,保证服务器缓存数据的有效性,减少对关系数据库的连接访问,提高访问速度及效率。

【技术实现步骤摘要】

本专利技术涉及计算机数据处理
,尤其是涉及一种应用于计算机信息
的基于缓存技术的实现数据一致性的方法及其系统
技术介绍
缓存技术应用广泛,该技术有以下优点(1)减少网络带宽,从而减轻网络拥塞;(2)减少客户端访问延迟;(3)由于有些数据可以直接从缓存返回给客户端,从而可以减轻服务器的负载;(4)如果远程服务器故障或网络故障造成远程服务器无法响应客户端的要求,客户端可以从缓存中取得数据,从而增加了远程服务器的健壮性。在信息化工程中,大量研究主要关注在客户端与服务器缓存之间数据一致性上, 而在服务器缓存与数据库之间的数据一致性的研究较少。当前服务器缓存数据与关系数据库保持一致性的技术主要有以下几种方式(1)直接从数据库中获取数据,没有设置缓存,如图1所示。应用对象获取数据时, 通过访问对象联接数据库,数据库执行相应操作返回数据。采用这种方式,每次数据获取都要建立一个新的连接,数据获取都是从数据库中获取,不会有缓存数据与关系数据库的数据一致性问题。对于访问量大的服务器,连接池的资源有限,新的连接需要进行排队等候, 从而造成了访问速度慢、效率低。(2)采用TTLCTime-to-Live)缓存技术,在这种方法中,每个对象赋予一个对象生存期t,用来记录缓存副本的有效时间,当客户机对服务器进行请求时,如果请求时间小于 TTL,则认为缓存副本是有效的,缓存将不向服务器进行请求。当请求时间大于TTL时,我们称TTL失效,此时缓存收到的第一个对某个对象的请求时,会向服务器发送GET请求,更新缓存信息。TTL机制实现比较容易,但是在TTL未失效的时间内网站的源对象版本发生更改时,无法保持缓存对象与服务器的原始版本数据一致性。也就是说客户端可能访问到过时的数据。(3)与当前专利技术最相近似的现有技术方案国际商业机器公司于2005年10月沈日申请,2006年06月28日公开,公开号为CN1794207A的中国专利技术专利申请《实现缓存一致性的方法和系统》。该专利技术的主要内容为一种用于当允许应用继续将改变写入数据文件时支持由服务器对数据文件的改变进行并行记录的系统和方法。响应于数据文件的改变,创建该文件的近即时版本。将反映数据文件的改变的元数据与缓存中的文件中的版本同步, 并将其记录到持久性存储器中。在记录文件的元数据改变的过程中,可继续进行随后的对数据文件的改变,且可将反映所述改变的元数据记录到该文件的即时版本中,也可将该版本与持久性存储器中的元数据的版本同步。但是该专利技术主要是研究客户端与服务器缓存之间的数据一致性问题。
技术实现思路
本专利技术提供一种实现数据一致性的方法及其系统,该方法及其系统解决了服务器缓存与关系数据库之间的数据一致性问题,保证服务器缓存数据的有效性,减少对关系数据库的连接访问,提高访问速度及效率。本专利技术提供实现数据一致性的方法的技术实现方案,一种实现数据一致性的方法,包括以下步骤SlOl 数据访问组件对象接受用户消息,根据用户消息生成动态SQL ;S102 如果动态SQL是数据获取,则执行步骤S103 ;否则,数据访问组件对象根据 XML数据库配置文件连接关系数据库,获取数据,数据访问组件对象再将数据传给应用层, 流程结束;S103:数据访问组件对象根据全局性质的数据访问组件对象名、数据获取对象名查询全局的缓存数据集合,若存在数据,则说明缓存数据有效,返回数据给数据访问组件对象,由数据访问组件对象传递给应用层,流程结束;若没有数据,根据数据访问组件对象名、 数据获取对象名,创建一个全局缓存组件对象,并将获取的数据动态SQL、数据访问组件对象名、数据获取对象名传给该缓存组件对象;S104 缓存组件对象解析XML缓存配置文件、XML数据库配置文件,查看该数据访问组件对象是否设置缓存,若设置缓存,则说明全局缓存组件对象监测本地依赖文件,当依赖文件发生变化时,系统删除数据访问组件对象的缓存以及全局缓存对象;若没有设置缓存,则执行步骤S106;S105 缓存组件对象根据数据访问组件对象名解析XML缓存初始化文件,若有数据,则获取一条记录并生成一个触发器SQL,连接关系数据库并执行,同时删除这条XML文件记录,依次循环,直至文件中找不到数据为止;S106:缓存组件对象连接关系数据库,执行数据访问组件对象所传入的获取数据动态SQL,获取数据,若该数据访问组件对象设置缓存,则更新缓存数据;S107 缓存组件对象将数据传给数据访问组件对象,由数据访问组件对象传递给应用层,流程结束。作为本专利技术实现数据一致性的方法技术方案的进一步改进,实现数据一致性的方法包括缓存组件获取数据过程,该过程包括以下步骤S201 缓存组件对象的中心控制器接收数据访问组件对象的重要属性,该重要属性包括获取数据动态SQL、数据访问组件对象名、数据获取对象名,将重要属性写入公共属性集合中;S202 中心控制器解析包括有关系数据库类型、数据库名的XML数据库配置文件, 并将解析内容写入公共属性集合;S203 中心控制器通过数据访问组件对象名查找XML缓存配置文件,若找到数据, 则解析包括数据访问组件对象名、本地依赖文件全局路径在内的相关属性,写入缓存数据集合;若没有找到数据,则说明该数据访问组件对象没有设置缓存,执行步骤S208 ;S204 中心控制器通过数据访问组件对象名查找XML缓存初始化文件,若有数据, 找到一条记录,并解析包括数据库表名、数据库服务器的本地依赖文件在内的相关属性,写入公共属性集合中,完成后,中心控制器向触发器生成器发送创建触发器消息;S205 触发器生成器调用动态SQL拼装生成器和公共属性集合动态产生一个创建触发器SQL,并将该SQL发送给连接器;S206 连接器收到创建触发器的SQL,连接关系数据库,关系数据库执行创建触发器SQL,将结果返回给连接器,连接器将消息传给中心控制器;否则若连接器超时,则中心控制器发送一个错误信息,流程结束;S207 中心控制器收到创建触发器成功消息,在XML缓存初始化文件中删除该记录,重复执行步骤S204至步骤S206,直至XML缓存初始化文件中找不到数据访问组件对象名的相关节点;S208 中心控制器将公共属性集合中的获取数据动态SQL发送给连接器;S209 连接器收到获取数据动态SQL,连接关系数据库,关系数据库执行该SQL,将数据返回给连接器,连接器将数据传给中心控制器;否则若连接器超时,则中心控制器发送一个错误信息,流程结束;S210:中心控制器将数据传给数据访问组件对象,若该数据访问组件对象设置了缓存,则将该数据以数据访问组件对象名和数据获取对象名组合一起作为关键字查询插入缓存数据集合;S211 中心控制器向依赖文件监测器发送监测消息,执行缓存组件监测过程。作为本专利技术实现数据一致性的方法技术方案的进一步改进,缓存组件监测过程包括以下步骤S301 依赖文件监测器收到中心控制器所发送的监测消息后,从公共属性集合中获取到本地依赖文件路径;S302 依赖文件监测器开始监测本地依赖文件;S303 依赖文件监测器发现本地依赖文件发生变化时,向中心控制器发送缓存无效消息;S304:中心控制器收到缓存无效消息后,通过公共属性集合中的数据访问组件对象名、数据获取对象名查询缓存数据集合,找到该数据后进本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:吴卫平杨玻雅杨献刘旭君周晓
申请(专利权)人:株洲南车时代电气股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术