共享数据更新装置和共享数据更新方法

文档序号:6382068阅读:288来源:国知局
专利名称:共享数据更新装置和共享数据更新方法
技术领域
本发明涉及计算机技术领域,具体而言,涉及ー种共享数据更新装置和一种共享数据更新方法。
背景技术
在业务系统中,很多共享数据面临高并发的用户访问,而共享数据往往是系统核心业务模型,因此,共享数据正确性必须得到保障。如果要保证数据的正确性,那必然会涉及事务更新共享数据时的竞争及等待,如图1所示,用户I正在更新数据表记录增加数量20,同时,用户2通过操作需要将同一条记录的数量減少40,而可能此时仍然存在其他用户正在更新同一条记录。如何支持用户并发访问并最大限度提升系统支持的并发度是必须解决的问题。为了保证业务数据的准确性,绝大部分业务系统会采用两种如下方法方法一首先对操作的数据进行锁定,然后更新数据,最后校验数据,事务结束后释放锁 ,方法ニ :首先更新数据,然后锁定数据,最后校验数据,事务结束释放锁。以上两种方法都会至少涉及到两次业务数据加锁,一次为了保证数据的正确性,在校验数据时对数据加锁。另外一次在数据持久化时,需要数据库级别进行加锁。而系统在高并发的情况下,对数据进行频繁加锁,会导致事务出现大量等待,从而出现系统性能瓶颈,导致系统支持并发能力下降。一般的系统处理业务数据更新流程如图2所示。可以明显看出,一次用户操作导致的更新事务,可能导致两次锁等待。在高并发的情况下,导致系统支持并发能力下降。因此,需要ー种共享数据更新技木,能够在保证数据更新正确性的前提下,消除数据更新及校验过程的加锁处理,从而提高系统支持的并发度。

发明内容
本发明正是基于上述问题,提出了ー种共享数据更新技术,能够在保证数据更新 正确性的前提下,消除数据更新及校验过程的加锁处理,从而提高系统支持的并发度。有鉴于此,根据本发明的ー个方面,提供了ー种共享数据更新装置,包括存储单元,用于保存基本数据库表和缓存数据库表,所述基本数据库表用于保存所述共享数据的汇总数据,所述缓存数据库表用于保存所述共享数据的差异数据;差异数据计算单元,计算本次更新操作引起所述共享数据的差异数据;数据持久化単元,采用独立事务将所述差异数据插入至所述缓存数据库表中;数据校验単元,查询所述基本数据库表和所述缓存数据库表校验所述差异数据,根据校验结果确定是否提交所述独立事务。上述技术方案采用新增差异记录的方式持久化,避免了数据库级别的加锁过程。差异数据采用独立事务直接提交至缓存表,并基于缓存表序列机制进行数据校验,使得数据校验过程无需对业务数据进行锁定,可以在保证数据正确性的基础上,消除数据校验的加锁过程。由于加锁在基于缓存表序列的数据更新过程中完全消除,可以明显提高系统的支持的并发度,优化系统并发性能。在上述技术方案中,优选的,数据持久化単元包括序列生成子単元,为所述本次更新操作引起的所述差异数据生成唯一缓存表递增序列,根据所述独立事务的发生时间确定所述唯一缓存表递增序列的大小。在上述技术方案中,优选的,所述数据校验单元还用于在校验所述差异数据时,首先校验所述唯一缓存表递增序列小于等于当前序列值的差异数据。缓存表的序列按事务发生时间递增,在数据校验查询时,只查询序列小于等于当前事务序列的记录。因此,对于用户并发更新数据导致共享数据资源争用的情形下,采用了先到先得的排队策略进行共享数据资源的分配。在上述技术方案中,优选的,所述数据校验单元还用于在所述校验结果为通过时,提交所述独立事务,在所述校验结果为未通过时,回滚所述独立事务。在上述任一技术方案中,优选的,还包括数据查询単元,用于对所述缓存数据库表和所述基本数据库表进行查询并定期将所述缓存数据库表的数据汇总至所述基本数据库表。由于缓存表采用差异插入方式持久化数据,差异明细的数据量较大,因此需要定期对缓存表数据按业务维度汇总至基本表。根据本发明的另一方面,还提供了ー种共享数据更新方法,包括以下步骤步骤402,将所述共享数据的汇总数据保存于基本数据库表中,以及将所述共享数据的差异数据保存于缓存数据库表中;步骤404,计算本次更新操作引起所述共享数据的差异数据并采用独立事务将所述差异数据插入至所述缓存数据库表中;步骤406,查询所述基本数据库表和所述缓存数据库表校验所述差异数据;步骤408,根据校验结果确定是否提交所述独立事务。上述技术方案采用新增差异记录的方式持久化,避免了数据库级别的加锁过程。差异数据采用独立事务直接提交至缓存表,并基于缓存表序列机制进行数据校验,使得数据校验过程无需对业务数据进行锁定,可以在保证数据正确性的基础上,消除数据校验的加锁过程。由于加锁在基于缓存表序列的数据更新过程中完全消除,可以明显提高系统的支持的并发度,优化系统并发性能。在上述技术方案中,优选的,所述步骤404还包括为所述本次更新操作引起的所述差异数据生成唯一缓存表递增序列,根据所述独立事务的发生时间确定所述唯一缓存表递增序列的大小。在上述技术方案中,优选的,所述步骤406还可以包括在校验所述差异数据吋,首先校验所述唯一缓存表递增序列小于等于当前序列值的差异数据。缓存表的序列按事务发生时间递增,在数据校验查询时,只查询序列小于等于当前事务序列的记录。因此,对于用户并发更新数据导致共享数据资源争用的情形下,采用了先到先得的排队策略进行共享数据资源的分配。在上述技术方案中,优选的,在所述校验结果为通过时,提交所述独立事务,在所述校验结果为未通过时,回滚所述独立事务。如果数据校验通过,则先提交差异数据新增事务(即所述独立事务),然后提交用户数据更新事务。如果数据校验不通过,则先回滚差异数据新增事务(即所述独立事务),保证缓存表数据记录的合法性,然后回滚用户数据更新事务。
在上述任一技术方案中,优选的,所述步骤408还可以包括,定期将所述缓存数据库表的数据汇总至所述基本数据库表。由于缓存表采用差异插入方式持久化数据,差异明细的数据量较大,因此需要定期对缓存表数据按业务维度汇总至基本表。数据的持久化操作采用在缓存表中新增差异数据记录的方式,減少了数据库级别的锁等待,解决了不同事务对同一行共享数据更新的资源竞争。采用独立事务并引入序列机制进行数据正确性验证,避免了数据加锁校验。而且对于数据的查询操作分摊至两张表,可提升数据的访问性能。因此,共享数据访问系统通过消除数据更新中的两次加锁,減少系统性能瓶颈,保证系统能够支持高并发数据访问。


图1示出了在实际应用场景中并发访问示意图;图2示出了相关技术中的共享数据更新流程图;图3示出了根据本发明的实施例的共享数据更新装置的框图;图4示出了根据本发明的实施例的共享数据更新方法的流程图;图5示出了根据本发明的实施例的共享数据存储表结构示意图;图6示出了根据本发明的实施例的共享数据更新方法的流程图;图7示出了根据本发明的实施例的共享数据更新装置的示意图。
具体实施例方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式
对本发明进行进一歩的详细描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。图3示出了根据本发明的实施例的共享数据更新装置的框图。如图3所示,根据本发明的实施例的共享数据更新装置300包括存储单元302,用于保存基本数据库表和缓存数据库表,所述基本数据库表用于保存所述共享数据的汇总数据,所述缓存数据库表用于保存所述共享数据的差异数据;差异数据计算单元304,计算本次更新操作引起所述共享数据的差异数据;数据持久化単元306,采用独立事务将所述差异数据插入至所述缓存数据库表中;数据校验単元308,查询所述基本数据库表和所述缓存数据库表校验所述差异数据,根据校验结果确定是否提交所述独立事务。上述技术方案采用新增差异记录的方式持久化,避免了数据库级别的加锁过程。差异数据采用独立事务直接提交至缓存表,并基于缓存表序列机制进行数据校验,使得数据校验过程无需对业务数据进行锁定,可以在保证数据正确性的基础上,消除数据校验的加锁过程。由于加锁在基于缓存表序列的数据更新过程中完全消除,可以明显提高系统的支持的并发度,优化系统并发性能。在上述技术方案中,优选的,数据持久化単元306包括序列生成子単元,为所述本次更新操作引起的所述差异数据生成唯一缓存表递增序列,根据所述独立事务的发生时间确定所述唯一缓存表递增序列的大小。
在上述技术方案中,优选的,所述数据校验单元还用于在校验所述差异数据时,首先校验所述唯一缓存表递增序列小于等于当前序列值的差异数据。缓存表的序列按事务发生时间递增,在数据校验查询时,只查询序列小于等于当前事务序列的记录。因此,对于用户并发更新数据导致共享数据资源争用的情形下,采用了先到先得的排队策略进行共享数据资源的分配。在上述技术方案中,优选的,所述数据校验单元308还用于在所述校验结果为通过时,提交所述独立事务,在所述校验结果为未通过时,回滚所述独立事务。在上述任一技术方案中,优选的,还包括数据查询単元310,用于对所述缓存数据库表和所述基本数据库表进行查询并定期将所述缓存数据库表的数据汇总至所述基本数据库表。由于缓存表采用差异插入方式持久化数据,差异明细的数据量较大,因此需要定期对缓存表数据按业务维度汇总至基本表。图4示出了根据本发明的实施例的共享数据更新方法的流程图。如图4所示,根据本发明的实施例的共享数据更新方法,包括步骤402,将共享数据的汇总数据保存于基本数据库表中,以及将共享数据的差异数据保存于缓存数据库表中;步骤404,计算本次更新操作引起共享数据的差异数据并采用独立事务将差异数据插入至缓存数据库表中;步骤406,查询基本数据库表和缓存数据库表校验差异数据;步骤408,根据校验结果确定是否提交独立事务。上述技术方案采用新增差异记录的方式持久化,避免了数据库级别的加锁过程。差异数据采用独立事务直接提交至缓存表,并基于缓存表序列机制进行数据校验,使得数据校验过程无需对业务数据进行锁定,可以在保证数据正确性的基础上,消除数据校验的加锁过程。由于加锁在基于缓存表序列的数据更新过程中完全消除,可以明显提高系统的支持的并发度,优化系统并发性能。在上述技术方案中,优选的,所述步骤404还包括为所述本次更新操作引起的所述差异数据生成唯一缓存表递增序列,根据所述独立事务的发生时间确定所述唯一缓存表递增序列的大小。在上述技术方案中,优选的,所述步骤406还可以包括在校验所述差异数据吋,首先校验所述唯一缓存表递增序列小于等于当前序列值的差异数据。缓存表的序列按事务发生时间递增,在数据校验查询时,只查询序列小于等于当前事务序列的记录。因此,对于用户并发更新数据导致共享数据资源争用的情形下,采用了先到先得的排队策略进行共享数据资源的分配。在上述技术方案中,优选的,在所述校验结果为通过时,提交所述数据更新事务,在所述校验结果为未通过时,回滚所述数据更新事务。如果数据校验通过,则先提交差异数据新增事务(即所述独立事务),然后提交用户数据更新事务。如果数据校验不通过,则先回滚差异数据新增事务(即所述独立事务),保证缓存表数据记录的合法性,然后回滚用户数据更新事务。在上述任一技术方案中,优选的,所述步骤408还可以包括,定期将所述缓存数据库表的数据汇总至所述基本数据库表。由于缓存表采用差异插入方式持久化数据,差异明细的数据量较大,因此需要定期对缓存表数据按业务维度汇总至基本表。由于缓存表采用差异插入方式持久化数据,差异明细的数据量较大,因此需要定期对缓存表数据按业务维度汇总至基本表。基于缓存表序列的并发度优化原理如下1)将共享数据记录的持久化方式,由传统的每次更新数据记录改为每次首先计算本次更新差异值,然后将采用独立事务将差异值新增插入至缓存表,可以减少在数据更新及删除时加锁,避免了数据库锁等待。由于采用独立事务持久化数据,可以查询未提交用户事务的差异明细,以便后续数据校验。2)缓存表引入序列机制,校验时通过序列过滤相同业务维度的缓存表数据,消除数据校验加锁。数据校验过程同时查询基本表及缓存表,能够有效保证数据正确性。3)由于缓存表采用差异插入方式持久化数据,差异明细的数据量较大,因此需要定期对缓存表数据按业务维度汇总至基本表。采用缓存表序列的数据存储模型如图5所示。其中共享数据在存储上被拆分至两张基本同构的数据库表。基本表(即基本数据库表)存储共享数据按业务维度的汇总值。缓存表(即缓存数据库表)存储共享数据的差异流水明细。其中,缓存表添加递增序列,作为数据校验的筛选条件。差异明细持久化至缓存表时生成唯一递增序列,因此,每个用户事务可以得到唯一序列,且用户事务发生时间决定序列值大小,发生时间较早的事务对应的序列值小于发生时间较晚的事务。数据校验时,只需关注序列小于等于当前事务序列的缓存表数据记录。缓存表的数据定期汇总至基本表。一般在实践中,选择系统空闲时进行数据的汇总。基于优化模型的系统处理流程如图6所示。针对用户的数据更新事务,首先计算本次更新导致的差异数据。然后,在用户事务中启动差异数据新增事务,采用新启动事务完成数据的持久化,在新增差异记录过程中,生成缓存表数据记录的序列。最后,差异数据持久化后,进行数据业务正确性校验。如果数据校验通过,则先提交差异数据新增事务,然后提交用户数据更新事务。如果数据校验不同过,则先回滚差异数据新增事务,保证缓存表数据记录的合法性,然后回滚用户数据更新事务。由于存储模型的改变导致业务数据分布在基本表及缓存表中。其中,实时发生的业务数据分布在缓存表,而汇总数据分布在基本表。因此,为保证查询全部数据进行业务规则校验,数据校验过程需同时查询缓存表及基本表数据。由于缓存表采用独立事务进行数据持久化,因此,数据校验时可以查询到未提交的用户事务对共享数据的更新差异,从而避免由于事务的隔离机制必须进行数据校验加锁,实现用户事务对共享数据资源的实时占用。如前文所述,缓存表的序列按事务发生时间递增,在数据校验查询时,只查询序列小于等于当前事务序列的记录。因此,对于用户并发更新数据导致共享数据资源争用的情形下,采用了先到先得的排队策略进行共享数据资源的分配。需要强调的是,所有的数据校验过程必须发生在差异数据新增事务内部,以便数据校验失败时,通过差异数据新增事务的回滚,撤销缓存表数据持久化。通过图2与图6的比较,相比以往的共享数据更新过程,可以看出基于缓存表序列的数据更新完全消除了加锁过程。图2中,用户更新事务开始,为了保证数据校验正确性,就对操作数据进行加锁,在事务提交吋,才会释放数据校验锁。在数据持久化时,采用更新记录方式,使得在数据库级别上又増加一次加锁过程。图6中,用户数据采用新增差异记录的方式持久化,避免了数据库级别的加锁过程。差异数据采用独立事务直接提交至缓存表,并基于缓存表序列机制进行数据校验,使得数据校验过程无需对业务数据进行锁定,可以在保证数据正确性的基础上,消除数据校验的加锁过程。由于加锁在基于缓存表序列的数据更新过程中完全消除,可以明显提高系统的支持的并发度,优化系统并发性能。基于以上并发优化方法设计的共享数据访问系统结构如图7所示。共享数据访问系统主要包含以下两个模块1)数据更新模块702,处理用户更新事务,完成数据的新増、修改、删除。其可以包含四个部分用户更新服务接ロ、差异数据计算单元、数据持久化单元、数据校验単元。差异数据计算单元计算用户操作引起的差异数据明细。数据持久化单元负责缓存表序列的生成及缓存表数据的插入。数据校验単元查询基本表和缓存表,根据业务规则进行数据校验。2)数据查询模块704,处理用户查询事务,包含用户查询服务接ロ和数据查询単元两个部分。数据查询単元完成对基本表及缓存表数据的查询及合井。从图7中可看出,对于共享数据的访问被分摊至两张表,对于数据持久化操作只在缓存表完成,基本表只提供数据的查询服务。基于此结构的系统,数据的持久化操作由于采用在缓存表中新增差异数据记录的方式,因而减少了数据库级别的锁等待,解决了不同事务对同一行共享数据更新的资源竞争。在数据校验单元采用独立事务并引入序列机制进行数据正确性验证,避免了数据加锁校验。而且对于数据的查询操作分摊至两张表,可提升数据的访问性能。因此,共享数据访问系统通过消除数据更新中的两次加锁,減少系统性能瓶颈,保证系统能够支持高并发数据访问。下面结合实际应用举例说明。对于ERP系统的核心业务需求物料可用量管理。可用量记录物料在一定时间的预计可用库存量。可用量作为ERP系统的核心共享数据,其业务场景较多,大量操作单据事务会导致系统可用量更新。例如销售订单、生产订单、采购订单、出入库单据在保存吋,都会更新系统的可用量。ERP系统的可用量需要支持高并发的事务更新,否则,会成为ERP系统的性能瓶颈,影响主要单据的用户日常操作。采用上述缓存表优化可用量更新的ERP系统处理如下I)建立与现有可用量表同构的缓存表,并且在缓存表新增序列字段。2)计算单据操作对可用量影响的差异明细,并持久化。举例如下1.物料1,截至2012-9-7日累计预计入库量30。得到如下表所示的基本表和缓存表。可用量基本表可用量缓存表
权利要求
1.一种共享数据更新装置,其特征在于,包括 存储单元,用于保存基本数据库表和缓存数据库表,所述基本数据库表用于保存所述共享数据的汇总数据,所述缓存数据库表用于保存所述共享数据的差异数据; 差异数据计算单元,计算本次更新操作引起所述共享数据的差异数据; 数据持久化单元,采用独立事务将所述差异数据插入至所述缓存数据库表中; 数据校验单元,查询所述基本数据库表和所述缓存数据库表校验所述差异数据,根据校验结果确定是否提交所述独立事务。
2.根据权利要求1所述的共享数据更新装置,其特征在于,数据持久化单元包括序列生成子单元,为所述本次更新操作引起的所述差异数据生成唯一缓存表递增序列,根据所述独立事务的发生时间确定所述唯一缓存表递增序列的大小。
3.根据权利要求2所述的共享数据更新装置,其特征在于,所述数据校验单元还用于在校验所述差异数据时,首先校验所述唯一缓存表递增序列小于等于当前序列值的差异数据。
4.根据权利要求1所述的共享数据更新装置,其特征在于,所述数据校验单元还用于在所述校验结果为通过时,提交所述独立事务,在所述校验结果为未通过时,回滚所述独立事务。
5.根据权利要求1至4中任一项所述的共享数据更新装置,其特征在于,还包括数据查询单元,用于对所述缓存数据库表和所述基本数据库表进行查询并定期将所述缓存数据库表的数据汇总至所述基本数据库表。
6.一种共享数据更新方法,其特征在于,包括以下步骤 步骤402,将所述共享数据的汇总数据保存于基本数据库表中,以及将所述共享数据的差异数据保存于缓存数据库表中; 步骤404,计算本次更新操作引起所述共享数据的差异数据并采用独立事务将所述差异数据插入至所述缓存数据库表中; 步骤406,查询所述基本数据库表和所述缓存数据库表校验所述差异数据; 步骤408,根据校验结果确定是否提交所述独立事务。
7.根据权利要求6所述的共享数据更新方法,其特征在于,所述步骤404还包括为所述本次更新操作引起的所述差异数据生成唯一缓存表递增序列,根据所述独立事务的发生时间确定所述唯一缓存表递增序列的大小。
8.根据权利要求7所述的共享数据更新方法,其特征在于,所述步骤406还包括在校验所述差异数据时,首先校验所述唯一缓存表递增序列小于等于当前序列值的差异数据。
9.根据权利要求6所述的共享数据更新方法,其特征在于,在所述校验结果为通过时,提交所述独立事务,在所述校验结果为未通过时,回滚所述独立事务。
10.根据权利要求6至9中任一项所述的共享数据更新方法,其特征在于,所述步骤408还包括,定期将所述缓存数据库表的数据汇总至所述基本数据库表。
全文摘要
本发明提供了一种共享数据更新装置,包括存储单元,用于保存基本数据库表和缓存数据库表,基本数据库表用于保存共享数据的汇总数据,缓存数据库表用于保存共享数据的差异数据;差异数据计算单元,计算本次更新操作引起共享数据的差异数据;数据持久化单元,采用独立事务将差异数据插入至缓存数据库表中;数据校验单元,查询基本数据库表和缓存数据库表校验差异数据,根据校验结果确定是否提交独立事务。本发明还提供了一种共享数据更新方法。根据本发明的技术方案,能够在保证数据更新正确性的前提下,消除数据更新及校验过程的加锁处理,从而提高系统支持的并发度。
文档编号G06F17/30GK103020149SQ201210479818
公开日2013年4月3日 申请日期2012年11月22日 优先权日2012年11月22日
发明者陈倪娜 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1