首页 / 智能数据归档

智能数据归档有效专利 发明

技术领域

[0001] 本发明涉及数据归档(data archiving),更具体地,涉及存储在数据库中的数据的归档。

相关背景技术

[0002] 数据归档指把不再积极使用的数据转移到单独的数据存储设备用于长期保留的过程。数据档案通常包括仍然重要并且需要用于将来参考的较旧的数据,以及必须为法规遵从、审计跟踪的目的而保持的数据,或者基于历史数据可以从中得到业务概况的资源。通常,数据档案是有索引的并且具有查找功能,使得文件及文件的部分能够被容易地定位和检索。
[0003] 通常,数据库归档工作分三个阶段。首先,从数据库中获取要被归档的数据库中的记录并将其存储在数据档案中。获取通常可以利用SQL(结构化查询语言)查询来完成,诸如“SELECT”查询。被检索的记录以适当的格式归档到诸如磁盘、磁带等的某种类型的长期存储介质上。然后,验证归档的记录以确保它们的正确性,并且一旦验证完成,最终从数据库中永久地删除这些记录。
[0004] 在传统的数据库归档中,使用了两种主要的方法来从数据库中删除归档的记录。第一种方法是基于完全的数据比较模型。即,在从数据库中删除记录之前,在归档的数据和数据库中的活动(active)(产品)数据之间做一对一的比较。第二种方法是基于以下思想:基于分区数据归档数据库记录(当归档策略是基于数据的整个分区时),然后放弃整个分区。
[0005] 这些方法带有的缺陷是(带有所有属性值的)记录比较是昂贵并且计算密集型的,部分地因为归档的记录必须从档案(即,存储介质/磁盘等)中获取以用于比较。此外,当记录在归档之后被更新时,没有维护元数据。因此,可能存在某人更新已经归档并且符合删除条件的记录的可能性。由于没有维护数据库相关的元数据,所以这使得数据库中更新的记录与同一记录的归档拷贝不一致。因此,存在提高用于归档数据的技术的需要。

具体实施方式

[0012] 本发明的各种实施例提供了用于归档数据的技术,这将在以下进行详细描述。本质上,通过在数据库目录中维护辅助表中的参考键,就使得能够进行“智能删除”,而无需把归档的记录与原来的活动记录进行比较。而且,对归档记录的更新可以通过在辅助表中标记参考键记录来处理,使得这些记录不被删除。由于利用了这些技术,因此能够完成更有效的审计跟踪和报告生成。
[0013] 所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0014] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0015] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0016] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0017] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0018] 下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0019] 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
[0020] 计算机程序指令也可以加载到计算机、其它可编程数据处理装置或者其它设备上,使得一系列操作步骤在计算机、其它可编程装置或者其它设备上执行,以产生一种计算机实现的过程,使得在所述计算机或者其它可编程装置上执行的指令提供用于实现在流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
[0021] 图1示出了根据一种实施例的用于智能数据归档的过程(100)的流程图。如在图1中可以看到的,过程(100)通过创建附加的目录表(catalog table)作为辅助表开始(步骤102)。对于这个示例,附加的目录表将被称为“DELETEON”并且将具有模式(schema)(RowID、Table_Name、Update_Flag、Is_Delete_Sucessful)。RowID指示归档的记录ID(通过任何主键标识符)。Table_Name指示来自其的记录已被归档的表。Update_Flag是每当具有RowID的记录被更新时,其值被设置为“1”,否则的话设置为“0”的标志。Is_Delete_Sucessful是当具有RowID的记录没被删除时设置为“0”,并且当记录被删除时设置为“1”的标志。
[0022] 然后,选择数据库中要被归档的记录并且通过为每条要被归档的记录插入新的元组来更新DELETEON表(步骤104)。在一种实施例中,存在SELECT查询语法,其指示所有被访问的记录都具有将来被删除的资格。这个SELECT查询是当应该进行记录归档时由用户执行的。在一种实施例中,SELECT查询具有下述语法:
[0023] SELECT*fromwherewith DELETEON;
[0024] 一旦被执行,上述SELECT查询就在DELETEON目录表中标记每个被访问的记录用于删除。所有被访问记录的RowID在每一行中都与在其上运行SELECT查询的表的Table_Name一起存储。
[0025] 初始地,为记录把Update_Flag的值设置为“0”并且把Is_Delete_Sucessful设置为“1”。如果带有RowID的记录随后发生更新,那么用于这个记录的Update_Flag的值改变成“1”。以这种方式,能够确保在SELECT查询运行之后被改变的记录没有从活动数据库中删除。
[0026] 在一些实施例中,提供了进一步的表“List_of_Deleteon”。表“List_of_Deleteon”具有列“Table_Name”,其通过主键-外键(PK-FK)关联到DELETEON表的“Table_Name”列。
[0027] 如果对于已经被标记用于删除的记录,接收到更新请求,那么更新请求将把用于该记录的Update_Flag列值设置为“1”。在DELETEON表中改变用于该记录的Update_Flag(而不是简单地删除整个记录)的原因是该Update_Flag值可以在以后用来产生哪些已被归档和哪些已被删除之间的差异报告,如将在以下进一步详细描述的。
[0028] 在已经使用SELECT语句选择数据之后,所有选择的行都被获取并存储在存储装置中(步骤106)。如本领域普通技术人员所熟悉的,这种存储装置可以是例如各种类型的磁盘、磁带等。
[0029] 然后,从所有通过PK-FK关系连接的表中删除所选择的记录(步骤108)。在一种实施例中,使用带有下述语法的新的DELETE查询用于删除记录。
[0030] DELETE{ALL|<表格名列表>}WITH DELETEON
[0031] 当执行该DELETE查询时,将参考DELETEON表并且那些标记为删除的记录(即,那些具有Update_Flag列值“0”的记录)将被删除。用于删除记录的过程在图2和3进行进一步详细的描述。如在图2中可以看到的,过程(108)以在表中识别关系(如果有的话)开始(步骤202)。图3进一步详细地示出了这个步骤的一种实施例,并且现在将对其进行描述。
[0032] 如在图3中可以看到的,用于识别关系的过程(202)通过从List_of_Deleteon目录表中获取单个列中的所有记录——即,具有要被删除的记录的所有表的名称——开始(步骤302)。然后,为这些表创建关系树,其为这些表识别父子关系(步骤304)。在一种实施例中,使用现有的数据库目录表来建立这种关系树,其中现有的数据库目录表为List_of_Deleteon表中的每个表存储关于关系的信息。这结束步骤203。
[0033] 现在返回到图2,在关系树中选择最低层的孩子,即,本身不具有任何关联的子表的表(步骤203)。然后对RowID和Table_Name的值进行匹配并从List_of_Deleteon表中删除记录(步骤204)。然后,把DELETEON表中的Is_Delete_Successful列标记为“1”(步骤206)。如果由于某种原因,特定记录的删除没有成功,那么为了确保完整性,对所有关联的表的记录,将把用于该记录的Is_Delete_Successful列更新为“0”。
[0034] 然后,该过程检查在关系中是否有在DELETEON表中具有匹配记录的任何进一步的表(步骤208)。如果存在在DELETON表中带有匹配记录的进一步的表,那么过程返回到步骤204并且如上所述继续。如果没有在DELETEON表中带有匹配记录的进一步的表,那么过程以基于Is_Delete_Successful列中的值从DELETEON表自身中删除记录来继续(步骤210)。如果在Is_Delete_Successful列中的值是“1”,那么该记录从DELETEON表中删除。如果在Is_Delete_Successful列中的值是“0”,那么由于这些记录还没有从数据库中删除,因此记录被保留。来自List_of_Deleteon目录表中的记录以类似的方式删除。最终,给发起DELETE查询的用户(或应用)呈现指示该DELETE查询的成功或失败的报告(步骤212),这使该过程结束(即,图1的步骤108)。
[0035] 如技术人员所意识到的,利用上述实施例可以实现许多优点。例如,行的RowID指定数据文件和包含该行的数据块及该行在那个块中的位置。由于指定了在数据库中行的精确位置,因此通过指定其RowID来定位行是检索单个行的最快方法。而且,RowID扫描是由查询优化器使用来产生最好的查询执行计划的访问路径。
[0036] 仍然还有的优势包括不需要在数据库之外维护任何元数据信息的事实。磁盘访问的次数减少了,这使得I/O成本减少。没有比较记录的需要,这进一步显著地减少了计算成本。记录通过参考目录表来删除,即,不需要外部的元数据。通过在DELETON表中标记每一行,很容易确定记录是否已经被更新。辅助信息在审计跟踪和商业智能应用中会是有帮助的。
[0037] 如上所述,在一种实施例中,DELETEON表也可以用来产生已归档的数据和已从数据库中删除的数据之间的差异报告。在成功地执行“DELETE{ALL|<表格名列表>}WITH DELETEON”SQL查询之后,通过检查DELETEON表的“Is_Delete_Successful”列,可以检查DELETEON表,以检验是否仍然留有“Is_Delete_Successful”列值设置为“0”的任何记录。基于这些值,能够创建报告(主要通过执行特定的SQL命令),该报告列出所有没被删除的记录。
[0038] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0039] 本文所使用的术语仅仅是为了描述特定的实施例而不是要作为本发明的限制。所本文所使用的,除非上下文明确地另外指出,否则单数形式“一个”和“这个”是要也包括复数形式。还应当理解,当在本说明书使用时,术语“包括”和/或“包含”规定所述的特征、整数、步骤、操作、元素和/或部件的存在,但是并不排除一个或多个其它特征、整数、步骤、操作、元素、部件和/或其组的存在或添加。
[0040] 以下权利要求中所有手段或步骤加功能元素的对应结构、材料、动作及等价物都是要包括用于结合具体所述的其它所述元素执行所述功能的任何结构、材料或行为。已经为了说明和描述给出了本发明的描述,但这不是详尽的或者要把本发明限定到所公开的形式。在不背离本发明范围与主旨的情况下,许多修改和变化对本领域普通技术人员都将是显而易见的。实施例的选择和描述是为了最好地解释本发明的原理和实践应用,并使本领域普通技术人员能够理解本发明具有适于预期特定使用的各种修改的各种实施例。

当前第1页 第1页 第2页 第3页
相关技术
智能数据相关技术
S·阿格拉瓦尔发明人的其他相关专利技术