CN111274226B - 一种实现业务通用历史数据管理的***及其方法 - Google Patents
一种实现业务通用历史数据管理的***及其方法 Download PDFInfo
- Publication number
- CN111274226B CN111274226B CN202010061779.3A CN202010061779A CN111274226B CN 111274226 B CN111274226 B CN 111274226B CN 202010061779 A CN202010061779 A CN 202010061779A CN 111274226 B CN111274226 B CN 111274226B
- Authority
- CN
- China
- Prior art keywords
- data
- entity
- historical
- historical data
- history
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种实现业务通用历史数据管理的***,包括有历史数据存储模块、历史数据查询模块、历史数据回滚模块、业务组成管理模块、历史数据策略模块;实现业务历史数据管理的方法包括以下步骤:步骤1,业务组成管理;步骤2,历史数据策略管理;步骤3,历史数据存储;步骤4,历史数据查询;步骤5,历史数据回滚;可以实现基于业务的历史数据管理,更符合历史数据的真实应用。
Description
技术领域
本发明属于历史数据管理技术领域,具体涉及一种实现业务通用历史数据管理的***及其方法。
背景技术
软件***最重要的功能就是存储业务数据,业务数据不断变化,业务历史数据不断增加,而历史数据是追溯、分析、数据回滚等重要工作的基础。历史数据管理成为软件***的一个重要需求。
当前对历史数据的管理,一般以数据表为切入点,通过增加数据生效时间、失效时间或者数据版本的方式对单个的数据表数据变更历史进行管理,而对整体业务的数据变更历史缺乏有效的存储和管理方法。
例如人员信息管理包含很丰富的内容,在人员的基本信息(姓名、性别、出生日期、身份证号、工号等)之外还包括更多的附加信息,如教育经历、工作履历、资质证书、等级认证、著作、专利等。传统的历史数据管理可以对人员信息涉及的单个数据表的历史数据进行管理,但对人员信息的整体管理缺乏历史数据的管理的概念。人员教育经历的变更往往意味着人员信息的变化,而变化则意味着之前的人员信息整体已成为一个历史数据。
发明内容
为克服上述现有技术的不足,本发明的目的在于提供一种实现业务通用历史数据管理的***及其方法,可以实现基于业务的历史数据管理,更符合历史数据的真实应用。
为实现上述目的,本发明采用的技术方案是:一种实现业务通用历史数据管理的***,包括有历史数据存储模块、历史数据查询模块、历史数据回滚模块、业务组成管理模块、历史数据策略模块;
所述的历史数据存储模块,用于保存对应历史数据,当软件***执行业务操作,导致业务基本实体的数据存储变化时,保存对应历史数据的处理过程和方法即是历史数据存储;
所述的历史数据查询模块,在历史数据存储的基础上,实现业务实体历史数据的查询;
所述的历史数据回滚模块,在历史数据存储及查询的基础上,实现业务实体历史数据回滚;历史数据回滚实现包括基于时间戳和基本版本的历史数据回滚;历史数据回滚的实现同时考虑业务实体和基本业务实体的历史数据回滚,并实现历史数据回滚的记录;
所述的业务组成管理模块,主要完成对业务的定义;
所述的历史数据策略管理模块,是配置关键实体的存储策略,当基本实体变化时,策略决定关键实体是否增加历史数据。
一种实现业务通用历史数据管理的方法,包括以下步骤:
步骤1,业务组成管理,本步骤主要涉及以下内容:
定义基本实体对应的关键实体,一个业务对应到多个实体时,总有一个实体是基本实体的主要表达,和基本实体是1:1的关系,其他实体都可以和关键实体产生关联关系;
定义关键实体的主键;
基本实体通过关键实体的主键进行关联;
定义关键实体和其他实体的关联关系,包括实体的对应关系以及关联的字段;
定义关键实体的基于历史版本的实体实例;关键实体实例定义包含关键实体名称,关键实体实例编号,关键实体实例版本,关键实体实例生效时间、失效时间、有效状态;
步骤2,历史数据策略管理,本步骤具体做法是:
定义并管理业务基本实体的变化,是否影响业务关键实体的历史数据存储;
定义并管理业务基本实体的字段变化,是否影响业务关键实体的历史数据存储;
定义并管理业务基本实体的字段变化,是否影响业务基本实体的历史数据存储;
定义并管理业务基本实体变化对应的业务实体历史数据存储的版本号规则;
步骤3,历史数据存储,本步骤具体操作是:
当有业务请求时,服务端执行请求,如果业务执行需要进行数据操作,历史数据存储管理就拦截执行的SQL语句;在执行当前数据操作SQL的同时,对执行SQL进行分析,并结合业务实体组成、历史数据策略判断如何进行历史数据的更新工作,分析完成后对历史数据进行更新;本步骤具体做法是:
1)SQL执行拦截管理
当软件***的客户端发起业务请求时,服务端对请求的业务进行执行处理,当业务执行需要进行数据操作时,在应用程序和数据库之间的中间件对数据操作的SQL进行拦截,对该次事务执行SQL进行复制记录,用于后续的历史数据SQL分析;
2)当前数据操作SQL执行
对数据操作SQL进行复制存储后,便放行当前SQL执行操作,完成***对数据的操作。待数据库返回数据操作执行结果后,记录数据操作的执行状态;当数据操作成功时,则仅需进行执行SQL分析,若操作实行失败,数据回滚;则不在进行后续的执行SQL分析;
3)执行SQL分析
对之前拦截的执行SQL副本进行分析,分析出执行SQL将要影响的数据表,数据行及数据字段;
4)更新策略应用分析
通过执行SQL分析,得到数据操作以及对应的数据表、数据行、数据列;结合业务实体组成和历史数据策略对本次数据操作是否需要记录更新的历史数据,以及记录更新哪些具体的历史进行分析输出;
5)历史数据更新
通过更新策略应用分析后,对业务实体的历史数据进行更新,业务实体数据通过单数据表的方式进行存储,因此数据更新通过和数据表历史数据更新同样的方法进行更新存储;
6)数据表历史数据存储
数据表的数据存储,通过区分当前库和历史库的方式进行;当前库中存储所有当前正在使用的数据,即最新的数据。历史库中存储所有的历史数据,包括当前最新的数据;
步骤4,历史数据查询
在历史数据存储的基础上,实现业务实体历史数据的查询方法。历史数据查询实现包括基于时间戳和基于版本的历史数据查询;
步骤5,历史数据回滚
在历史数据存储及查询的基础上,实现业务实体历史数据回滚;历史数据回滚实现包括基于时间戳和基本版本的历史数据回滚;历史数据回滚的实现,同时考虑业务实体和基本业务实体的历史数据回滚,并实现历史数据回滚的记录。
所述的执行SQL分析,可通过以下两种方式实现:
一、对执行SQL的SQL语句进行全面解析,过滤掉查询SQL,对所有INSERT/UPDATE/DELETE操作都进行全面SQL语法和语义解析。分析出SQL将要操作的数据表、数据行、数据列;
二对执行SQL的SQL语句进行过滤,滤掉查询SQL,对INSERT/UPDATE/DELETE操作进行替换查询分析,即将操作SQL的INSERT/UPDATE/DELETE替换为SELECT,并同时查询出对应数据表的数据行,并对数据表和数据行进行缓存。在数据操作完成后,对缓存的数据表的对应数据行和历史数据中的最新版本进行对比分析,从而识别出具体的数据变化。
所述的历史数据策略涉及以下内容:
根据需要操作的数据表通过分析业务实体组成,从而识别数据操作对应的业务实体;
根据业务实体的历史数据更新策略,分析本次数据操作是否满足历史数据更新策略的条件,从而识别业务实体是否需要记录历史数据更新及增加历史数据版本号。
所述的数据表历史数据存储,具体采用以下步骤实现:
1)在历史库建立所有数据表的历史数据表。历史数据表包含所有当前数据表的字段,并增加数据版本、数据生效时间、数据失效时间、数据来源操作、数据状态字段;
2)历史数据表只对数据行进行增加和更改操作,不进行任何删除操作,历史数据的存储实现主要通过以下方法:
新增数据:当前库中某一数据表一行数据被添加时,历史库中同时在对应历史数据表中,增加一行数据。数据内容和当前一致,数据版本为版本初始值,生效时间为当前时间,失效时间可标记为无限制,数据来源操作标记为INSERT,数据状态为有效。
更新数据:当前库中某一数据表一行数据被更改时,将同时修改当前最新数据的状态和失效时间,并同时增加一行新的历史数据,记录当前最新数据;在历史库中找到当前对应的最新版本的数据,具体可通过数据主键,结合数据版本或生效时间、失效时间或数据状态等实现。对找到的历史数据进行更新:将失效时间设置为当前时间,将数据状态标记为无效;新增加一行数据,增加的数据内容和当前库一致,数据版本增加一个单位,生效时间为当前时间,失效时间可标记为无限制,数据来源操作标记为UPDATE,数据状态为有效。
删除数据:当前库中某一数据表一行数据被删除时,历史库中同时在对应历史数据表中修改对应数据的数据状态。失效时间可标记为当前时间,数据状态为失效。
所述的历史数据查询,主要涉及以下内容:
业务实体所有历史数据查询;基于时间戳的业务实体历史数据查询;基于历史数据版本的业务实体历史数据查询;业务实体包含的基本业务实体历史数据查询;业务实体不同历史数据变化查询;基本业务实体不同历史数据变更历史查询。
本发明的有益效果是:
通过该方法可以业务实体历史数据的全面管理,满足绝大部分信息化***的历史数据管理需求。该方法的实现不影响当前***的使用,可逐步独立扩展,可同时使用已有***和未开发的***,可实现性强。同时***支持灵活的历史数据策略仅对应的相关配置的数据的调整,不需重新进行代码开发,不需重复测试,不需***的重新部署或者***重启,一次部署后后续调整成本非常低。本发明的优点具体体现在以下几点:
1)该方法对业务实体的历史数据管理实现的各个方面进行了全面的实现描述,包括业务实体组成、历史数据策略、历史数据存储、历史数据查询、历史数据回滚等。
2)该方法定义了历史数据库,不影响当前正在使用的数据库,可进行业务的不中断扩展。
3)该方法定义灵活多变的历史数据策略,支持即插即用,不需重新开发或重启***。
4)该方法定义的业务实体符合现实世界对象定义要求,能够满足绝大部分信息化***的历史数据管理要求。
本发明以一个业务整体(或对象)的角度实现历史数据管理,从而更好的发挥历史数据的价值。
附图说明
图1为本发明的***原理框图。
图2为本发明的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细说明。
一种实现业务通用历史数据管理的***,包括有历史数据存储模块、历史数据查询模块、历史数据回滚模块、业务组成管理模块、历史数据策略模块;
所述的历史数据存储模块,用于保存对应历史数据,当软件***执行业务操作,导致业务基本实体的数据存储变化时,保存对应历史数据的处理过程和方法即是历史数据存储;
其基本处理过程和方法如下:
当有业务请求时,服务端执行请求,如果业务执行需要进行数据操作,历史数据存储管理就拦截执行的SQL语句;在执行当前数据操作SQL的同时,对执行SQL进行分析,并结合业务实体组成、历史数据策略判断如何进行历史数据的更新工作,分析完成后对历史数据进行更新。
历史数据存储主要涉及以下内容:
1)SQL执行拦截管理
当软件***的客户端发起业务请求时,服务端对请求的业务进行执行处理,当业务执行需要进行数据操作时,在应用程序和数据库之间的中间件(如JDBC)对数据操作的SQL进行拦截,对该次事务执行SQL进行复制记录,用于后续的历史数据SQL分析。
2)当前数据操作SQL执行
对数据操作SQL进行复制存储后,便放行当前SQL执行操作,完成***对数据的操作。待数据库返回数据操作执行结果后,记录数据操作的执行状态。当数据操作成功时,则仅需进行执行SQL分析,若操作实行失败,数据回滚。则不在进行后续的执行SQL分析等其他步骤。
3)执行SQL分析
对之前拦截的执行SQL副本进行分析,分析出执行SQL将要影响的数据表,数据行(ID或其他主键)及数据字段。可以通过以下两种方法实现执行SQL的分析:
A、对执行SQL的SQL语句进行全面解析,过滤掉查询SQL,对所有INSERT/UPDATE/DELETE操作都进行全面SQL语法和语义解析。分析出SQL将要操作的数据表、数据行、数据列;
B、对执行SQL的SQL语句进行过滤,滤掉查询SQL,对INSERT/UPDATE/DELETE操作进行替换查询分析,即将操作SQL的INSERT/UPDATE/DELETE替换为SELECT,并同时查询出对应数据表的数据行,并对数据表和数据行(按主键识别)进行缓存。在数据操作完成后,对缓存的数据表的对应数据行和历史数据中的最新版本进行对比分析,从而识别出具体的数据变化。
4)更新策略应用分析
通过执行SQL分析,得到数据操作以及对应的数据表、数据行、数据列。结合业务实体组成和历史数据策略对本次数据操作是否需要记录更新的历史数据,以及记录更新哪些具体的历史进行分析输出。历史数据更新策略应用主要涉及以下内容:
根据需要操作的数据表通过分析业务实体组成,从而识别数据操作对应的业务实体。
根据业务实体的历史数据更新策略,分析本次数据操作是否满足历史数据更新策略的条件,从而识别业务实体是否需要记录历史数据更新及增加历史数据版本号等。
5)历史数据更新
通过更新策略应用分析后,对业务实体的历史数据进行更新,业务实体数据通过单数据表的方式进行存储,因此数据更新通过和数据表历史数据更新同样的方法进行更新存储。
6)数据表(基本实体)历史数据存储
数据表(基本实体)的数据存储,通过区分当前库和历史库的方式进行。当前库中存储所有当前正在使用的数据,即最新的数据。历史库中存储所有的历史数据,包括当前最新的数据(便于实现历史数据的使用)。在实际的应用***中,当前库就是正在使用的数据库,历史库可以独立建立;
(1)历史数据初始化
在该方法初次使用时,需要进行历史数据的初始化。即将当前库中的所有数据全部进行复制,并进行先关历史数据状态标记的初始化工作。初始化的实现包括:
a、创建历史库,并创建所有数据表的历史表。即在业务表的数据字段的基础上增加数据版本、数据生效时间、数据失效时间、数据来源操作、数据状态等。
b、将所有数据表的数据添加到历史库并进行历史数据相关字段的初始化设置。相当于新增数据的操作:数据内容和当前一致,数据版本为版本初始值(如1),生效时间为当前时间,失效时间可标记为无限制(具体实现时可标记为一个足够大的时间以便实现,如9999-12-31 23:59:39),数据来源操作标记为首次同步,数据状态为有效。
(2)数据表历史数据存储的主要实现方法
a、在历史库建立所有数据表的历史数据表。历史数据表包含所有当前数据表的字段,并增加数据版本、数据生效时间、数据失效时间、数据来源操作、数据状态等字段。
数据版本表示本行数据的版本号,可以使用各种版本编号规则,如1,2,3等依次累加。
数据生效时间表示本行数据生效的时间,因数据变化导致本行数据更新或被添加时的时间。
数据失效时间表示本行数据失效的时间,因数据变化,本行数据有新的数据生成的时间。
数据操作来源表示,该行数据的来源,即本行数据是因为数据数据操作而导致该行数据被添加进来。如该行数据是***新增数据时,可记录为INSERT;该行数据时因为数据被更新而增加时,记录为UPDATE。
(3)历史数据表只对数据行进行增加和更改操作,不进行任何删除操作。历史数据的存储实现主要通过以下方法:
新增数据:当前库中某一数据表一行数据被添加时,历史库中同时在对应历史数据表中,增加一行数据。数据内容和当前一致,数据版本为版本初始值(如1),生效时间为当前时间,失效时间可标记为无限制(具体实现时可标记为一个足够大的时间以便实现,如9999-12-31 23:59:39),数据来源操作标记为“INSERT”,数据状态为“有效”。
更新数据:当前库中某一数据表一行数据被更改时,将同时修改当前最新数据的状态和失效时间,并同时增加一行新的历史数据,记录当前最新数据。
在历史库中找到当前对应的最新版本的数据,具体可通过数据主键,结合数据版本或生效时间、失效时间或数据状态等实现。对找到的历史数据进行更新:将失效时间设置为当前时间,将数据状态标记为无效。
新增加一行数据,增加的数据内容和当前库一致,数据版本增加一个单位(在更新前的最大版本的基础上),生效时间为当前时间,失效时间可标记为无限制(具体实现时可标记为一个足够大的时间以便实现,如9999-12-31 23:59:39),数据来源操作标记为UPDATE,数据状态为有效。
删除数据:当前库中某一数据表一行数据被删除时,历史库中同时在对应历史数据表中修改对应数据的数据状态。失效时间可标记为当前时间,数据状态为失效。
所述的历史数据查询模块,在历史数据存储的基础上,实现业务实体历史数据的查询;
历史数据查询实现包括基于时间戳和基于版本的历史数据查询。历史数据查询的实现同时考虑业务实体和基本业务实体的历史数据查询,并实现不同历史版本数据变化的对比查询展示。历史数据查询在历史库中进行查询。
历史数据查询主要涉及以下内容:
1)业务实体所有历史数据查询;
通过业务实体组成可查询出所有的业务实体对应的数据表,因而可查询所有的业务实体组成部分的历史数据。
2)基于时间戳的业务实体历史数据查询;
在业务实体数据查询以时间戳作为条件,通过时间戳和业务实体实例的生效时间、失效时间进行匹配过滤,可查询到所有满足时间戳条件的业务实体实例,根据业务实体实例查询所有相关基本实体历史数据。
3)基于历史数据版本的业务实体历史数据查询;
在业务实体数据查询以版本号作为条件,通过业务实体实例的版本号过滤,可查询到所有满足版本号业务实体实例,根据业务实体实例查询所有相关基本实体历史数据。实际使用中,往往会同时制定业务实体实例的实例编号。
4)业务实体包含的基本业务实体历史数据查询;
基本业务实体通过数据表的历史数据存储实现,可直接进行历史库对应数据表的查询。
5)业务实体不同历史数据变化查询;
以业务实体实例的版本号或时间段(生效时间、失效时间)为基准,通过查询两个不同版本或时间段的实体实例,并根据数据主键进行匹配,从而实现历史数据对比变化查询。
6)基本业务实体不同历史数据变更历史查询。
以基本业务实体(数据表)的版本号或时间段(生效时间、失效时间)为基准,通过查询两个不同版本(统一主键)或时间段的数据信息,从而实现历史数据对比变化查询。
所述的历史数据回滚模块,在历史数据存储及查询的基础上,实现业务实体历史数据回滚;历史数据回滚实现包括基于时间戳和基本版本的历史数据回滚;历史数据回滚的实现同时考虑业务实体和基本业务实体的历史数据回滚,并实现历史数据回滚的记录;历史数据回滚主要涉及以下内容:
1)业务实体历史数据回滚策略;
通过定义业务实体历史数据回滚策略对混滚操作进行控制。业务实体历史数据回滚策略定义的关键信息包括业务实体、是否允许回滚、回滚记录标记,回滚条件配置等。其中回滚条件配置可通过多种方式以表达式的方式实现,包括但不限于JAVA Script,SQL语句、多条件组合运算等。
2)指定时间戳、数据版本的业务实体实例历史数据回滚;
在业务实体历史数据的基础上,可通过时间戳、数据版本等查询到对应的业务实体历史数据。将指定的历史数据以最新数据的方式更新到当前库,并对历史库进行更新,具体实现主要包括以下关键方法:
通过业务实体实例号、时间戳、数据版本等查询到对应的业务实体实例历史数据。
将当前库中的业务实体实例数据进行删除。
将查询到的业务实体实例历史数据添加到当前库中(不包含历史数据状态及记录字段)。
更新业务实体实例历史数据。
根据业务实体业务组成识别对应的业务实例可通过复制指定业务实例历史数据,并和历史库中数据根据主键进行对比分析,分析出数据变化需要的数据具体操作,并按照历史数据存储的方法实现存储和记录。
3)历史数据回滚记录
当进行历史数据回滚时,记录回滚发生的主要信息,包括操作时间、操作用户、操作业务实体、业务实体实例、回滚版本号或时间戳、操作结果等。
所述的业务组成管理模块,主要完成对业务的定义;各类软件***的真实使用场景中,业务往往包含多个基本实体(数据表),因此业务组成管理模块需要完成基本实体的定义,可以理解为管理基本实体所体包含的实体的E-R关系;基本实体管理主要涉及以下内容:
(1)定义基本实体对应的关键实体,一个业务对应到多个实体时,总有一个实体是基本实体的主要表达,和基本实体是1:1的关系,其他实体都可以和关键实体产生关联关系;
(2)定义关键实体的主键;
(3)基本实体通过关键实体的主键进行关联;
(4)定义关键实体和其他实体的关联关系,包括实体的对应关系(如1:1,1:N)以及关联的字段(逻辑外键关系);
(5)定义关键实体的基于历史版本的实体实例;关键实体实例定义包含关键实体名称(或编号),关键实体实例编号,关键实体实例版本,关键实体实例生效时间、失效时间、有效状态。
所述的历史数据策略管理模块,是配置关键实体的存储策略,当基本实体变化时,策略决定关键实体是否增加历史数据。
通过配置历史数据策略,即可管理历史数据存储。历史数据策略管理主要涉及以下内容:
1)定义并管理业务基本实体的变化,是否影响业务关键实体的历史数据存储。
2)定义并管理业务基本实体的字段变化,是否影响业务关键实体的历史数据存储。
3)定义并管理业务基本实体的字段变化,是否影响业务基本实体的历史数据存储。
4)定义并管理业务基本实体变化对应的业务实体历史数据存储的版本号规则。
一种实现业务通用历史数据管理的方法,包括以下步骤:
步骤1,业务组成管理,本步骤主要涉及以下内容:
定义基本实体对应的关键实体,一个业务对应到多个实体时,总有一个实体是基本实体的主要表达,和基本实体是1:1的关系,其他实体都可以和关键实体产生关联关系;
定义关键实体的主键;
基本实体通过关键实体的主键进行关联;
定义关键实体和其他实体的关联关系,包括实体的对应关系以及关联的字段;
定义关键实体的基于历史版本的实体实例;关键实体实例定义包含关键实体名称,关键实体实例编号,关键实体实例版本,关键实体实例生效时间、失效时间、有效状态;
步骤2,历史数据策略管理,本步骤具体做法是:
定义并管理业务基本实体的变化,是否影响业务关键实体的历史数据存储;
定义并管理业务基本实体的字段变化,是否影响业务关键实体的历史数据存储;
定义并管理业务基本实体的字段变化,是否影响业务基本实体的历史数据存储;
定义并管理业务基本实体变化对应的业务实体历史数据存储的版本号规则;
步骤3,历史数据存储,本步骤具体操作是:
当有业务请求时,服务端执行请求,如果业务执行需要进行数据操作,历史数据存储管理就拦截执行的SQL语句;在执行当前数据操作SQL的同时,对执行SQL进行分析,并结合业务实体组成、历史数据策略判断如何进行历史数据的更新工作,分析完成后对历史数据进行更新;本步骤具体做法是:
1)SQL执行拦截管理
当软件***的客户端发起业务请求时,服务端对请求的业务进行执行处理,当业务执行需要进行数据操作时,在应用程序和数据库之间的中间件对数据操作的SQL进行拦截,对该次事务执行SQL进行复制记录,用于后续的历史数据SQL分析;
2)当前数据操作SQL执行
对数据操作SQL进行复制存储后,便放行当前SQL执行操作,完成***对数据的操作。待数据库返回数据操作执行结果后,记录数据操作的执行状态;当数据操作成功时,则仅需进行执行SQL分析,若操作实行失败,数据回滚;则不在进行后续的执行SQL分析;
3)执行SQL分析
对之前拦截的执行SQL副本进行分析,分析出执行SQL将要影响的数据表,数据行及数据字段;
4)更新策略应用分析
通过执行SQL分析,得到数据操作以及对应的数据表、数据行、数据列;结合业务实体组成和历史数据策略对本次数据操作是否需要记录更新的历史数据,以及记录更新哪些具体的历史进行分析输出;
5)历史数据更新
通过更新策略应用分析后,对业务实体的历史数据进行更新,业务实体数据通过单数据表的方式进行存储,因此数据更新通过和数据表历史数据更新同样的方法进行更新存储;
6)数据表历史数据存储
数据表的数据存储,通过区分当前库和历史库的方式进行;当前库中存储所有当前正在使用的数据,即最新的数据。历史库中存储所有的历史数据,包括当前最新的数据;
步骤4,历史数据查询
在历史数据存储的基础上,实现业务实体历史数据的查询方法。历史数据查询实现包括基于时间戳和基于版本的历史数据查询;
步骤5,历史数据回滚
在历史数据存储及查询的基础上,实现业务实体历史数据回滚;历史数据回滚实现包括基于时间戳和基本版本的历史数据回滚;历史数据回滚的实现,同时考虑业务实体和基本业务实体的历史数据回滚,并实现历史数据回滚的记录。
所述的执行SQL分析,可通过以下两种方式实现:
一、对执行SQL的SQL语句进行全面解析,过滤掉查询SQL,对所有INSERT/UPDATE/DELETE操作都进行全面SQL语法和语义解析。分析出SQL将要操作的数据表、数据行、数据列;
二、对执行SQL的SQL语句进行过滤,滤掉查询SQL,对INSERT/UPDATE/DELETE操作进行替换查询分析,即将操作SQL的INSERT/UPDATE/DELETE替换为SELECT,并同时查询出对应数据表的数据行,并对数据表和数据行进行缓存。在数据操作完成后,对缓存的数据表的对应数据行和历史数据中的最新版本进行对比分析,从而识别出具体的数据变化。
所述的历史数据策略涉及以下内容:
根据需要操作的数据表通过分析业务实体组成,从而识别数据操作对应的业务实体;
根据业务实体的历史数据更新策略,分析本次数据操作是否满足历史数据更新策略的条件,从而识别业务实体是否需要记录历史数据更新及增加历史数据版本号。
所述的数据表历史数据存储,具体采用以下步骤实现:
1)在历史库建立所有数据表的历史数据表。历史数据表包含所有当前数据表的字段,并增加数据版本、数据生效时间、数据失效时间、数据来源操作、数据状态字段;
2)历史数据表只对数据行进行增加和更改操作,不进行任何删除操作,历史数据的存储实现主要通过以下方法:
新增数据:当前库中某一数据表一行数据被添加时,历史库中同时在对应历史数据表中,增加一行数据。数据内容和当前一致,数据版本为版本初始值,生效时间为当前时间,失效时间可标记为无限制,数据来源操作标记为INSERT,数据状态为有效。
更新数据:当前库中某一数据表一行数据被更改时,将同时修改当前最新数据的状态和失效时间,并同时增加一行新的历史数据,记录当前最新数据;在历史库中找到当前对应的最新版本的数据,具体可通过数据主键,结合数据版本或生效时间、失效时间或数据状态等实现。对找到的历史数据进行更新:将失效时间设置为当前时间,将数据状态标记为无效;新增加一行数据,增加的数据内容和当前库一致,数据版本增加一个单位,生效时间为当前时间,失效时间可标记为无限制,数据来源操作标记为UPDATE,数据状态为有效。
删除数据:当前库中某一数据表一行数据被删除时,历史库中同时在对应历史数据表中修改对应数据的数据状态。失效时间可标记为当前时间,数据状态为失效。
所述的历史数据查询,主要涉及以下内容:
业务实体所有历史数据查询;基于时间戳的业务实体历史数据查询;基于历史数据版本的业务实体历史数据查询;业务实体包含的基本业务实体历史数据查询;业务实体不同历史数据变化查询;基本业务实体不同历史数据变更历史查询。
词汇表:
Claims (6)
1.一种实现业务通用历史数据管理的方法,其特征在于,包括以下步骤:
步骤1,业务组成管理,本步骤主要涉及以下内容:
定义基本实体对应的关键实体,一个业务对应到多个实体时,总有一个实体是基本实体的主要表达,和基本实体是1:1的关系,其他实体都可以和关键实体产生关联关系;
定义关键实体的主键;
基本实体通过关键实体的主键进行关联;
定义关键实体和其他实体的关联关系,包括实体的对应关系以及关联的字段;
定义关键实体的基于历史版本的实体实例;关键实体实例定义包含关键实体名称,关键实体实例编号,关键实体实例版本,关键实体实例生效时间、失效时间、有效状态;
步骤2,历史数据策略管理,本步骤具体做法是:
定义并管理业务基本实体的变化,是否影响业务关键实体的历史数据存储;
定义并管理业务基本实体的字段变化,是否影响业务关键实体的历史数据存储;
定义并管理业务基本实体的字段变化,是否影响业务基本实体的历史数据存储;
定义并管理业务基本实体变化对应的业务实体历史数据存储的版本号规则;
步骤3,历史数据存储,本步骤具体操作是:
当有业务请求时,服务端执行请求,如果业务执行需要进行数据操作,历史数据存储管理就拦截执行的SQL语句;在执行当前数据操作SQL的同时,对执行SQL进行分析,并结合业务实体组成、历史数据策略判断如何进行历史数据的更新工作,分析完成后对历史数据进行更新;本步骤具体做法是:
1)SQL执行拦截管理
当软件***的客户端发起业务请求时,服务端对请求的业务进行执行处理,当业务执行需要进行数据操作时,在应用程序和数据库之间的中间件对数据操作的SQL进行拦截,对执行SQL进行复制记录,用于后续的历史数据SQL分析;
2)当前数据操作SQL执行
对数据操作SQL进行复制存储后,便放行当前SQL执行操作,完成***对数据的操作,待数据库返回数据操作执行结果后,记录数据操作的执行状态;当数据操作成功时,则仅需进行执行SQL分析,若操作实行失败,数据回滚;则不在进行后续的执行SQL分析;
3)执行SQL分析
对之前拦截的执行SQL副本进行分析,分析出执行SQL将要影响的数据表,数据行及数据字段;
4)更新策略应用分析
通过执行SQL分析,得到数据操作以及对应的数据表、数据行、数据列;结合业务实体组成和历史数据策略对本次数据操作是否需要记录更新的历史数据,以及记录更新哪些具体的历史进行分析输出;
5)历史数据更新
通过更新策略应用分析后,对业务实体的历史数据进行更新,业务实体数据通过单数据表的方式进行存储,因此数据更新通过和数据表历史数据更新同样的方法进行更新存储;
6)数据表历史数据存储
数据表的数据存储,通过区分当前库和历史库的方式进行;当前库中存储所有当前正在使用的数据,即最新的数据,历史库中存储所有的历史数据,包括当前最新的数据;
步骤4,历史数据查询
在历史数据存储的基础上,实现业务实体历史数据的查询方法,历史数据查询实现包括基于时间戳和基于版本的历史数据查询;
步骤5,历史数据回滚
在历史数据存储及查询的基础上,实现业务实体历史数据回滚;历史数据回滚实现包括基于时间戳和基本版本的历史数据回滚;历史数据回滚的实现,同时考虑业务实体和基本业务实体的历史数据回滚,并实现历史数据回滚的记录。
2.根据权利要求1所述的一种实现业务通用历史数据管理的方法,其特征在于,所述的执行SQL分析,可通过以下两种方式实现:
一、对执行SQL的SQL语句进行全面解析,过滤掉查询SQL,对所有INSERT/UPDATE/DELETE操作都进行全面SQL语法和语义解析;分析出SQL将要操作的数据表、数据行、数据列;
二、对执行SQL的SQL语句进行过滤,滤掉查询SQL,对INSERT/UPDATE/DELETE操作进行替换查询分析,即将操作SQL的INSERT/UPDATE/DELETE替换为SELECT,并同时查询出对应数据表的数据行,并对数据表和数据行进行缓存,在数据操作完成后,对缓存的数据表的对应数据行和历史数据中的最新版本进行对比分析,从而识别出具体的数据变化。
3.根据权利要求1所述的一种实现业务通用历史数据管理的方法,其特征在于,所述的历史数据策略涉及以下内容:
根据需要操作的数据表通过分析业务实体组成,从而识别数据操作对应的业务实体;
根据业务实体的历史数据更新策略,分析本次数据操作是否满足历史数据更新策略的条件,从而识别业务实体是否需要记录历史数据更新及增加历史数据版本号。
4.根据权利要求1所述的一种实现业务通用历史数据管理的方法,其特征在于,所述的数据表历史数据存储,具体采用以下步骤实现:
1)在历史库建立所有数据表的历史数据表,历史数据表包含所有当前数据表的字段,并增加数据版本、数据生效时间、数据失效时间、数据来源操作、数据状态字段;
2)历史数据表只对数据行进行增加和更改操作,不进行任何删除操作,历史数据的存储实现主要通过以下方法:
新增数据:当前库中某一数据表一行数据被添加时,历史库中同时在对应历史数据表中,增加一行数据,数据内容和当前一致,数据版本为版本初始值,生效时间为当前时间,失效时间标记为无限制,数据来源操作标记为INSERT,数据状态为有效,
更新数据:当前库中某一数据表一行数据被更改时,将同时修改当前最新数据的状态和失效时间,并同时增加一行新的历史数据,记录当前最新数据;在历史库中找到当前对应的最新版本的数据,具体通过数据主键,结合数据版本或生效时间、失效时间或数据状态实现;对找到的历史数据进行更新:将失效时间设置为当前时间,将数据状态标记为无效;新增加一行数据,增加的数据内容和当前库一致,数据版本增加一个单位,生效时间为当前时间,失效时间标记为无限制,数据来源操作标记为UPDATE,数据状态为有效,
删除数据:当前库中某一数据表一行数据被删除时,历史库中同时在对应历史数据表中修改对应数据的数据状态,失效时间标记为当前时间,数据状态为失效。
5.根据权利要求1所述的一种实现业务通用历史数据管理的方法,其特征在于,所述的历史数据查询,主要涉及以下内容:
业务实体所有历史数据查询;基于时间戳的业务实体历史数据查询;基于历史数据版本的业务实体历史数据查询;业务实体包含的基本业务实体历史数据查询;业务实体不同历史数据变化查询;基本业务实体不同历史数据变更历史查询。
6.用于如权利要求1所述的实现业务通用历史数据管理的方法的专用***,其特征在于,包括有历史数据存储模块、历史数据查询模块、历史数据回滚模块、业务组成管理模块、历史数据策略模块;
所述的历史数据存储模块,用于保存对应历史数据,当软件***执行业务操作,导致业务基本实体的数据存储变化时,保存对应历史数据的处理过程和方法即是历史数据存储;
所述的历史数据查询模块,在历史数据存储的基础上,实现业务实体历史数据的查询;
所述的历史数据回滚模块,在历史数据存储及查询的基础上,实现业务实体历史数据回滚;历史数据回滚实现包括基于时间戳和基本版本的历史数据回滚;历史数据回滚的实现同时考虑业务实体和基本业务实体的历史数据回滚,并实现历史数据回滚的记录;
所述的业务组成管理模块,主要完成对业务的定义;
所述的历史数据策略模块,是配置关键实体的存储策略,当基本实体变化时,策略决定关键实体是否增加历史数据;
基本业务实体是指数据表,关键实体和基本实体是1:1的关系,其他实体都可以和关键实体产生关联关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010061779.3A CN111274226B (zh) | 2020-01-20 | 2020-01-20 | 一种实现业务通用历史数据管理的***及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010061779.3A CN111274226B (zh) | 2020-01-20 | 2020-01-20 | 一种实现业务通用历史数据管理的***及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111274226A CN111274226A (zh) | 2020-06-12 |
CN111274226B true CN111274226B (zh) | 2023-05-12 |
Family
ID=71003460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010061779.3A Active CN111274226B (zh) | 2020-01-20 | 2020-01-20 | 一种实现业务通用历史数据管理的***及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111274226B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256668A (zh) * | 2020-09-22 | 2021-01-22 | 深圳市金蝶天燕云计算股份有限公司 | 关联数据处理方法、装置、计算机设备和存储介质 |
CN114925084B (zh) * | 2022-05-31 | 2023-07-21 | 易保网络技术(上海)有限公司 | 分布式事务处理方法、***、设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794299A (zh) * | 2010-01-27 | 2010-08-04 | 浪潮(山东)电子信息有限公司 | 一种历史数据管理的增量定义、处理方法 |
CN103226472A (zh) * | 2013-04-09 | 2013-07-31 | 武汉飞博科技有限公司 | 一种业务管理软件开发实现方法 |
CN106201780A (zh) * | 2016-07-08 | 2016-12-07 | 浪潮通用软件有限公司 | 一种历史数据还原方法 |
CN107886238A (zh) * | 2017-11-09 | 2018-04-06 | 金航数码科技有限责任公司 | 一种基于海量数据分析的业务流程管理***及方法 |
CN108629029A (zh) * | 2018-05-09 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 一种应用于数据仓库的数据处理方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8156083B2 (en) * | 2005-12-01 | 2012-04-10 | Oracle International Corporation | Database system that provides for history-enabled tables |
US8285596B2 (en) * | 2008-06-06 | 2012-10-09 | Oracle International Corporation | CRM system for enhanced retention of customers |
-
2020
- 2020-01-20 CN CN202010061779.3A patent/CN111274226B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794299A (zh) * | 2010-01-27 | 2010-08-04 | 浪潮(山东)电子信息有限公司 | 一种历史数据管理的增量定义、处理方法 |
CN103226472A (zh) * | 2013-04-09 | 2013-07-31 | 武汉飞博科技有限公司 | 一种业务管理软件开发实现方法 |
CN106201780A (zh) * | 2016-07-08 | 2016-12-07 | 浪潮通用软件有限公司 | 一种历史数据还原方法 |
CN107886238A (zh) * | 2017-11-09 | 2018-04-06 | 金航数码科技有限责任公司 | 一种基于海量数据分析的业务流程管理***及方法 |
CN108629029A (zh) * | 2018-05-09 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 一种应用于数据仓库的数据处理方法和装置 |
Non-Patent Citations (2)
Title |
---|
土地动态利用时空数据挖掘的方法及其实现;朱炎等;《经济地理》;20061215;第124-127页 * |
基于Geodatabase模型的矢量历史数据管理;盛琦;《地理空间信息》;20151031;第79-81页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111274226A (zh) | 2020-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10445321B2 (en) | Multi-tenant distribution of graph database caches | |
CN109144994B (zh) | 索引更新方法、***及相关装置 | |
CN109906448B (zh) | 用于促进可插拔数据库上的操作的方法、设备和介质 | |
TWI262406B (en) | System, method and program storage device for dynamic caching of data based on queries performed by a local application | |
US7730097B2 (en) | Smart database | |
US9213728B2 (en) | Change data capturing during an upgrade | |
US8595381B2 (en) | Hierarchical file synchronization method, software and devices | |
CN101046821B (zh) | 通用数据库操纵器 | |
CN102929771B (zh) | 日志记录装置和日志记录方法 | |
US8682859B2 (en) | Transferring records between tables using a change transaction log | |
US20030158947A1 (en) | Enabling online and offline operation | |
US20090012932A1 (en) | Method and System For Data Storage And Management | |
KR20080106431A (ko) | 기업 자원 계획 시스템 내에서의 동시성 제어 방법, 컴퓨터판독가능 매체 및 컴퓨터 | |
US8805777B2 (en) | Data record collapse and split functionality | |
JP2020140699A (ja) | データを記憶およびクエリするための方法、装置、設備、および媒体 | |
US10296542B2 (en) | Integration database framework | |
US8832022B2 (en) | Transaction processing device, transaction processing method and transaction processing program | |
CN111274226B (zh) | 一种实现业务通用历史数据管理的***及其方法 | |
CN110377649B (zh) | 标签化数据的构建、查询方法、装置、设备及存储介质 | |
CN109542892A (zh) | 一种实时数据库的关系化实现方法、装置及*** | |
US9922100B2 (en) | Systems and methods for facilitating the development of an application that accesses data | |
CN111143368A (zh) | 一种关系型数据库数据对比方法及*** | |
CN111367692A (zh) | 一种搜索引擎数据处理方法、装置、电子设备及介质 | |
US20090106216A1 (en) | Push-model based index updating | |
WO2023202394A1 (zh) | 分区表建立、针对分区表的数据写入、读取方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |