专利名称:数据更新方法及装置的制作方法
技术领域:
本发明涉及应用系统中的数据更新方法,尤其涉及一种数据更新方法及装置。
技术背景
在应用系统中有一类数据是通过其他数据汇总得到的,例如企业中的账户余额, 库存中的剩余商品数量等,在高并发网络应用中这种数据因为交易的进行而经常被修改。
当前的应用系统解决这种问题主要有以下几种方法
1)利用数据库事务保持数据更新一致性。每个交易对热点数据的更新都是通过 SQL直接按照增量更新,利用数据库事务特性保证更新的互斥、保证数据更新的一致性。这 种方式的问题是,如果有大量的并发业务同时请求更新同一条数据,例如10000笔收款交 易同时请求修改账户余额,那么所有的更新将串行执行,系统的性能将大大降低。这种方式 可以很好的保证系统数据的一致性,但性能难于保证。
2)使用缓存机制。将热点数据缓存到内存中,每个交易通过内存更新数据不进行 昂贵的数据库操作。这种更新方式可以在一定程度上提高了数据更新的效率,但是为了避 免出现并发更新导致的数据错误,缓存数据的更新也需要提供锁的机制控制并发,这样在 并发量增加时也会形成瓶颈。另外,缓存数据的更新事务复杂。一个交易更新了缓存数据 后可能回滚,需要提供相应的回退机制退回此交易对缓存数据的更新。另外,并发情况下缓 存可能存在不一致读的情况。缓存还存在致命的问题,就是数据持久化的问题,如果数据更 新到缓存而缓存没有持久化之前服务器崩溃,将造成不可弥补的数据丢失。
3)异步调用方式。将需要更新热点数据的操作推后执行,在交易提交后再异步执 行更新操作。这种方式可以提高执行的效率,但是真正更新热点数据的压力没有减轻,热点 数据的更新依然是热点,读取热点数据的操作将受影响,并且并发很高的情况下会导致数 据不能及时完成更新情况。另外,异步调用方式可能在服务器崩溃时导致数据丢失问题。
因此,需要一种数据更新方法,可以在高并发操作产生的情况下保证数据的及时 更新,提高系统的运行效率,保证系统数据的一致性、安全、不丢失。发明内容
有鉴于此,本发明所要解决的技术问题在于,提供一种数据更新方法和装置,可以 在高并发操作产生的情况下保证数据的及时更新,提高系统的运行效率,保证系统数据的 一致性、安全、不丢失。
本发明提供了一种数据更新方法,包括步骤102,将每次对原始表中的指定数据 进行的操作产生的增量数据分别存储在暂存表中;步骤104,根据所述增量数据对所述原 始表中的所述指定数据的值进行更新。通过该技术方案,通过暂存表使用所有增量数据对 指定数据更新,可以提高系统运行的效率,保证系统数据的安全。
在上述技术方案中,优选地,在所述步骤102中,在对所述指定数据的操作被取消 时,将所取消的操作产生的增量数据的相反数作为新的增量数据进行存储。通过该技术方案,简化了数据更新的算法和操作,同时提高了运行效率,保证数据的安全。
在上述技术方案中,优选地,所述步骤104包括将所存储的对所述指定数据的所 有操作产生的增量数据求和,并使用求和的结果对所述指定数据的值进行更新。通过该技 术方案,可以实现仅用一次操作来对指定数据更新,提高了数据更新的效率。
在上述技术方案中,优选地,所述更新包括将所述求和的结果与所述指定数据的 值之间的和作为所述指定数据的值。
在上述技术方案中,优选地,在所述更新未完成,且所述用户对所述指定数据查询 时,将所述求和的结果与所述指定数据的值之间的和提供给用户。本技术方案中,即将所述 指定数据在原始表以及暂存表中的数据进行相加,作为用户的查询结果。
在上述技术方案中,优选地,所述步骤104还包括定时或在对所述原始表的预定 操作完成之后,对位于所述原始表中的所述指定数据进行更新,并在更新之后,将所述暂存 表中的所述增量数据删除。通过该技术方案,可以实现对数据的定时更新,同时还可以提高 数据运行的效率。
通过本发明提供的数据更新方法,可以在高并发操作产生的下保证数据的及时更 新,提高系统的运行效率,保证系统数据的一致性、安全、不丢失。
本发明还提供了一种数据更新装置,包括暂存模块,将每次对原始表中的指定数 据进行的操作产生的增量数据分别存储在暂存表中;更新模块,根据所述增量数据对所述 原始表中的所述指定数据的值进行更新。通过该技术方案,通过暂存表使用所有增量数据 对指定数据更新,可以提高系统运行的效率,保证系统数据的安全。
在上述技术方案中,优选地,在对所述指定数据的操作被取消时,所述暂存模块还 将所取消的述操作产生的增量数据的相反数作为新的增量数据进行存储。通过该技术方 案,简化了数据更新的算法和操作,同时提高了运行效率,保证数据的安全。
在上述技术方案中,优选地,所述更新模块将所存储的对所述指定数据的所有操 作产生的增量数据求和,并使用求和的结果对所述指定数据的值进行更新。通过该技术方 案,可以实现仅用一次操作来对指定数据更新,提高了数据更新的效率。
在上述技术方案中,优选地,所述更新模块将所述求和的结果与所述指定数据的 值之间的和作为所述指定数据的值。
在上述技术方案中,优选地,在所述更新未完成,且所述用户对所述指定数据查询 时,将所述求和的结果与所述指定数据的值之间的和提供给用户。本技术方案中,即将所述 指定数据在原始表以及暂存表中的数据进行相加,作为用户的查询结果。
在上述技术方案中,优选地,所述更新模块定时或在对所述原始表的预定操作完 成之后,对位于所述原始表中的所述指定数据进行更新,并在更新之后,由所述暂存模块将 所述暂存表中的所述增量数据删除。通过该技术方案,可以实现对数据的定时更新,同时还 可以提高数据运行的效率。
通过本发明提供的数据更新装置,可以在高并发操作产生的情况下保证数据的及 时更新,提高系统的运行效率,保证系统数据的一致性、安全、不丢失。
图1示出了根据本发明的实施例的数据更新方法流程图2示出了根据本发明的实施例的数据更新装置的框图3示出了根据本发明的实施例的数据更新方法的数据更新流程图4示出了根据本发明的实施例的数据更新方法的保持数据一致性的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实 施方式对本发明进行进一步的详细描述。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可 以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实 施例的限制。
图1示出了根据本发明的实施例的数据更新方法流程图。
如图1所示,本发明提供了一种数据更新方法,包括步骤102,将每次对原始表中 的指定数据进行的操作产生的增量数据分别存储在暂存表中;步骤104,根据增量数据对 原始表中的指定数据的值进行更新。通过该技术方案,通过暂存表使用所有增量数据对指 定数据更新,可以提高系统运行的效率,保证系统数据的安全。
在上述技术方案中,在步骤102中,在对指定数据的操作被取消时,将所取消的操 作产生的增量数据的相反数作为新的增量数据进行存储。通过该技术方案,简化了数据更 新的算法和操作,同时提高了运行效率,保证数据的安全。
在上述技术方案中,在步骤104包括将所存储的对指定数据的所有操作产生的 增量数据求和,并使用求和的结果对指定数据的值进行更新。通过该技术方案,可以实现仅 用一次操作来对指定数据更新,提高了数据更新的效率。
在上述技术方案中,更新包括将求和的结果与指定数据的值之间的和作为指定 数据的值。
在上述技术方案中,在所述更新未完成,且所述用户对所述指定数据查询时,将所 述求和的结果与所述指定数据的值之间的和提供给用户。本技术方案中,即将所述指定数 据在原始表以及暂存表中的数据进行相加,作为用户的查询结果。
在上述技术方案中,步骤104还包括定时或在对所述原始表的预定操作完成之 后,对位于原始表中的指定数据进行更新,并在更新之后,将暂存表中的增量数据删除。通 过该技术方案,可以实现对数据的定时更新,同时还可以提高数据运行的效率。
通过本发明提供的数据更新方法,可以在高并发操作产生的情况下保证数据的及 时更新,提高系统的运行效率,保证系统数据的一致性、安全、不丢失。
图2示出了根据本发明的实施例的数据更新装置的框图。
如图2所示,本发明提供了一种数据更新装置200,包括暂存模块202,将每次对 原始表中的指定数据进行的操作产生的增量数据分别存储在暂存表中;更新模块204,根 据所述增量数据对所述原始表中的所述指定数据的值进行更新。通过该技术方案,通过暂 存表使用所有增量数据对指定数据更新,可以提高系统运行的效率,保证系统数据的安全。
在上述技术方案中,在对指定数据的操作被取消时,暂存模块202还将所取消的 述操作产生的增量数据的相反数作为新的增量数据进行存储。通过该技术方案,简化了数 据更新的算法和操作,同时提高了运行效率,保证数据的安全。
在上述技术方案中,更新模块204将所存储的对指定数据的所有操作产生的增量 数据求和,并使用求和的结果对指定数据的值进行更新。通过该技术方案,可以实现仅用一 次操作来对指定数据更新,提高了数据更新的效率。
在上述技术方案中,更新模块204将求和的结果与指定数据的值之间的和作为指 定数据的值。
在上述技术方案中,在所述更新未完成,且所述用户对所述指定数据查询时,将所 述求和的结果与所述指定数据的值之间的和提供给用户。本技术方案中,即将所述指定数 据在原始表以及暂存表中的数据进行相加,作为用户的查询结果。
在上述技术方案中,更新模块204定时或在对所述原始表的预定操作完成之后, 对位于原始表中的指定数据进行更新,并在更新之后,由暂存模块202将所述暂存表中的 增量数据删除。通过该技术方案,可以实现对数据的定时更新,同时还可以提高数据运行的 效率。
通过本发明提供的数据更新装置,可以在高并发操作产生的情况下保证数据的及 时更新,提高系统的运行效率,保证系统数据的一致性、安全、不丢失。
下面结合图3和图4进一步详细说明本发明的实施例的技术方案。
图3示出了根据本发明的实施例的数据更新方法的数据更新流程图。
如图3所示,本方案主要利用数据库技术来实现一致性和效率。主要思路是将热 点数据分散,将更新热点数据的操作变更为对增量数据的操作,这样可以保证增加操作没 有竞争,可以保证操作效率。同时,保存到数据库中增量数据的事务与交易操作是同一事 务,不存在数据不一致情况。另外,通过对热点数据的查询服务的修改,可以保证数据更新 及时反应的效果。最后通过定时任务服务定时将增量数据汇总合并后保证数据的一致性。 其流程图如图3所示,包括
步骤302,收集交易中数据变化增量,这样将更新热点数据的操作变更为对增量数 据的操作,保证操作效率;
步骤304,将数据变化增量在交易事务中insert到暂存中心,这样便于对指定数 据进行更新;
步骤306,定时任务将暂存数据同步到原始数据表中,通过定时任务服务定时地将 增量数据汇总合并后保证数据的一致性。
本发明的技术方案主要有以下几个方面
第一为数据库的设计
通过设计与热点关键数据相似的暂存表结构来分散数据访问。暂存表结构包括热 点数据的主要信息和发生事件信息以及交易唯一标识。例如账户余额的表结构如下所示 (假定表名称为accountbal)
权利要求
1.一种数据更新方法,其特征在于,包括步骤102,将每次对原始表中的指定数据进行的操作产生的增量数据分别存储在暂存 表中;步骤104,根据所述增量数据对所述原始表中的所述指定数据的值进行更新。
2.根据权利要求1所述的数据更新方法,其特征在于,在所述步骤102中,在对所述指 定数据的操作被取消时,将所取消的操作产生的增量数据的相反数作为新的增量数据进行 存储。
3.根据权利要求1所述的数据更新方法,其特征在于,所述步骤104包括将所存储的 对所述指定数据的所有操作产生的增量数据求和,并使用求和的结果对所述指定数据的值 进行更新。
4.根据权利要求3所述的数据更新方法,其特征在于,所述更新包括将所述求和的结果与所述指定数据的值之间的和作为所述指定数据的值。
5.根据权利要求1至4任一项所述的数据更新方法,其特征在于,所述步骤104还包 括定时或在对所述原始表的预定操作完成之后,对位于所述原始表中的所述指定数据进 行更新,并在更新之后,将所述暂存表中的所述增量数据删除。
6.一种数据更新装置,其特征在于,包括暂存模块,将每次对原始表中的指定数据进行的操作产生的增量数据分别存储在暂存 表中;更新模块,根据所述增量数据对所述原始表中的所述指定数据的值进行更新。
7.根据权利要求6所述的数据更新装置,其特征在于,在对所述指定数据的操作被取 消时,所述暂存模块还将所取消的述操作产生的增量数据的相反数作为新的增量数据进行 存储。
8.根据权利要求6所述的数据更新装置,其特征在于,所述更新模块将所存储的对所 述指定数据的所有操作产生的增量数据求和,并使用求和的结果对所述指定数据的值进行 更新。
9.根据权利要求8所述的数据更新装置,其特征在于,所述更新模块将所述求和的结 果与所述指定数据的值之间的和作为所述指定数据的值。
10.根据权利要求6至9任一项所述的数据更新方法,其特征在于,所述更新模块定时 或在对所述原始表的预定操作完成之后,对位于所述原始表中的所述指定数据进行更新, 并在更新之后,由所述暂存模块将所述暂存表中的所述增量数据删除。
全文摘要
本发明提供了一种数据更新方法,包括步骤102,将每次对原始表中的指定数据进行的操作产生的增量数据分别存储在暂存表中;步骤104,根据所述增量数据对所述原始表中的所述指定数据的值进行更新。本发明还提供了一种数据更新装置。通过本发明提供的技术方案,可以在高并发操作产生的情况下保证数据的及时更新,提高系统的运行效率,保证系统数据的一致性、安全、不丢失。
文档编号G06F17/30GK102043859SQ201010608358
公开日2011年5月4日 申请日期2010年12月27日 优先权日2010年12月27日
发明者宋涛 申请人:用友软件股份有限公司