历史数据存储管理方法

文档序号:9375843阅读:702来源:国知局
历史数据存储管理方法
【技术领域】
[0001]本发明涉及数据库数据存储及检索领域,尤其涉及一种历史数据存储管理方法。
【背景技术】
[0002]在现有的数据管理系统中,一些很关键的数据要求记录变更历史,并需要呈现历史。比如,对于订单合同类数据,存在主子关系表,并且一个主表有多个相关联的子表;这样,在存储变更历史数据时,对于当前的数据管理系统中,会在每次修改前保存完整的订单或合同数据到历史表,即将主表记录和对应的所有子表中全部关联数据复制到历史表。
[0003]然而,随着数据越来越多,变更次数越来越多,存储的历史数据也随之成倍增加。同时影响数据库存储、备份时的数据大小;并且数据量太大影响查询返回速度,急需一种更好的历史数据存储方案。
[0004]因此,本领域的技术人员致力于开发一种能够节省存储空间而且简化获取变化历史数据的处理的方法。

【发明内容】

[0005]有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种历史数据存储管理方法,其能够节省存储空间而且简化获取变化历史数据的处理。
[0006]为实现上述目的,本发明提供了一种历史数据存储管理方法,其特征在于包括:在关系数据库中存储包含一个或多个子表的主表,而且在历史表中关联主表及其子表,其中历史表中存储主表的开始版本号和结束版本号以及每个子表的开始版本号和结束版本号;在主表的数据变更后且在保存变更后的数据之前。
[0007]在本发明的较佳实施方式中,所述历史数据存储管理方法还包括:分别判断由于本次数据变更而导致的主表记录以及相应子表中对应的多条记录的变化情况。
[0008]在本发明的较佳实施方式中,所述历史数据存储管理方法还包括:使得主表记录以及相应子表中对应的多条记录中没有变化的项目所对应的结束版本号递增加一。
[0009]在本发明的较佳实施方式中,所述历史数据存储管理方法还包括:在历史表中插入主表记录以及相应子表中对应的多条记录中存在变化的项目的新纪录,该新纪录中的开始版本号和结束版本号为相应子表的当前版本号。
[0010]在本发明的较佳实施方式中,历史表中还主表记录关键字。
[0011]在本发明的较佳实施方式中,所述历史数据存储管理方法还包括:在读取历史数据时提供主表记录关键字和期望查找的变更状态所对应的结束版本号,从而根据主表记录关键字和期望查找的变更状态所对应的结束版本号在历史表中存储的主表记录关键字和开始版本号、结束版本号中进行检索,以找到对应的历史记录。
[0012]在本发明中,主子表部分数据变更时,其他部分可不用因为这些变更,重新记录历史,只需要更新结束版本号即可,从而减少历史记录。由此,本发明在将多级数据表变更后保存变更历史时,能够节省存储空间,而且简化获取变化历史数据的处理。
[0013]以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
【附图说明】
[0014]图1是根据本发明优选实施例的历史数据存储管理方法的保存变更历史数据处理的流程图。
[0015]图2是根据本发明优选实施例的历史数据存储管理方法的保存变更历史数据处理的一个具体流程示例。
【具体实施方式】
[0016]本发明的目的是提供一种历史数据存储管理方法,使数据变动时历史数据占用较少的存储空间。其中,在记录历史时,如果本次要记录的历史数据与前次历史数据相同,就不进行保存,而使用之前的记录;只有在本次需要记录的历史数据变化的情况下,才保存本次历史。这样就可以大大减少因小部分数据变更,需要保存主、子表中相关的所有数据,而产生大量历史数据占用存储空间的问题。
[0017]根据本发明优选实施例的历史数据存储管理方法可体现在保存变更历史数据处理以及读取变更历史数据处理中。
[0018]图1是根据本发明优选实施例的历史数据存储管理方法的保存变更历史数据处理的流程图。
[0019]如图1所示,可以在关系数据库中存储包含一个或多个子表的主表(第一步骤SI),而且在历史表中关联主表及其子表,其中历史表中存储主表的开始版本号和结束版本号以及每个子表的开始版本号和结束版本号(第二步骤S2);在主表的数据变更(第三步骤S3)后且在保存变更后的数据之前,分别判断由于本次数据变更而导致的主表记录以及相应子表中对应的多条记录的变化情况(第四步骤S4),使得主表记录以及相应子表中对应的多条记录中没有变化的项目所对应的结束版本号递增加一(第五步骤S5),而且在历史表中插入主表记录以及相应子表中对应的多条记录中存在变化的项目的新纪录(第六步骤S6),该新纪录中的开始版本号和结束版本号为相应子表的当前版本号。此后,即可保存变更后的数据(第七步骤S7)。由此完成保存变更历史数据处理。
[0020]图2是根据本发明优选实施例的历史数据存储管理方法的保存变更历史数据处理的一个具体流程示例。
[0021]如图2所示,可以在变更后保存数据前调用历史数据处理;将新数据保存前对当前数据库主子表中存储的数据当前数据拿出来,分别跟历史表中最后一次历史数据进行比较;未变化的部分数据更新变更的结束版本号为当前版本号;变化的部分数据重新插入到历史表,开始版本号、结束版本号均为当前版本号;接下来依次处理各子表中对应数据,判断、记录历史等;所有历史数据处理完毕后,保存变更后的新数据。
[0022]优选地,历史表中还主表记录关键字。由此进一步地,在历史数据读取处理中,在读取历史数据时可以提供主表记录关键字和期望查找的变更状态所对应的结束版本号,从而根据主表记录关键字和期望查找的变更状态所对应的结束版本号在历史表中存储的主表记录关键字和开始版本号、结束版本号中进行检索,从而找到对应的历史记录,并返回该记录。
[0023]可以看出,本发明解决了局部数据变化需要记录所有相关数据历史,从而占用大量存储空间的缺点。保存的历史数据减少,同时因为增加了变更结束版本号,方便查询时可以直接定位到变更时的版本,同时可应用于其他数据存储时,主子表关系较复杂数据存储的历史变更保存。
[0024]在另一种替换实施例中,也可以在有效数据和历史数据之间使用一个关联表记录变更版本号,变更数据保存前,将所有主子表中数据与历史表中保存的当前数据进行比较,如果找到与当前数据一致的数据,则关联表增加一条当前变更版本号相关的当前数据对应的历史数据记录;如果该条数据部分内容变更,则增加一条新的历史记录,然后再在关联表中插入一条有效数据与当前数据对应的记录。然后再保存新数据。
[0025]上述说明示出并描述了本发明的优选实施例,如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
【主权项】
1.一种历史数据存储管理方法,其特征在于包括:在关系数据库中存储包含一个或多个子表的主表,而且在历史表中关联主表及其子表,其中历史表中存储主表的开始版本号和结束版本号以及每个子表的开始版本号和结束版本号;在主表的数据变更后且在保存变更后的数据之前。2.如权利要求1所述的历史数据存储管理方法,其特征在于还包括:分别判断由于本次数据变更而导致的主表记录以及相应子表中对应的多条记录的变化情况。3.如权利要求2所述的历史数据存储管理方法,其特征在于还包括:使得主表记录以及相应子表中对应的多条记录中没有变化的项目所对应的结束版本号递增加一。4.如权利要求2所述的历史数据存储管理方法,其特征在于还包括:在历史表中插入主表记录以及相应子表中对应的多条记录中存在变化的项目的新纪录,该新纪录中的开始版本号和结束版本号为相应子表的当前版本号。5.如权利要求1或2所述的历史数据存储管理方法,其特征在于,历史表中还主表记录关键字。6.如权利要求5所述的历史数据存储管理方法,其特征在于还包括:在读取历史数据时提供主表记录关键字和期望查找的变更状态所对应的结束版本号,从而根据主表记录关键字和期望查找的变更状态所对应的结束版本号在历史表中存储的主表记录关键字和开始版本号、结束版本号中进行检索,以找到对应的历史记录。
【专利摘要】本发明公开了一种历史数据存储管理方法,包括:在关系数据库中存储包含一个或多个子表的主表,而且在历史表中关联主表及其子表,其中历史表中存储主表的开始版本号和结束版本号以及每个子表的开始版本号和结束版本号;在主表的数据变更后且在保存变更后的数据之前,分别判断由于本次数据变更而导致的主表记录以及相应子表中对应的多条记录的变化情况,使得主表记录以及相应子表中对应的多条记录中没有变化的项目所对应的结束版本号递增加一,而且在历史表中插入主表记录以及相应子表中对应的多条记录中存在变化的项目的新纪录,该新纪录中的开始版本号和结束版本号为相应子表的当前版本号。
【IPC分类】G06F17/30
【公开号】CN105095457
【申请号】CN201510451790
【发明人】江南春, 罗巍峰
【申请人】驰众信息技术(上海)有限公司
【公开日】2015年11月25日
【申请日】2015年7月28日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1