用于数据库结构比较的方法、装置和计算机程序的制作方法

文档序号:6642800阅读:158来源:国知局
专利名称:用于数据库结构比较的方法、装置和计算机程序的制作方法
技术领域
本发明涉及用于比较数据库模式以及/或比较字节码库或仓库的方法和装置。
背景技术
目前,计算机实现的数据库及应用程序接口(“API”)的使用是诸如关系数据库和程序代码库的各种类型信息的档案及使用的基础。为关系数据库和API提供数据定义的数据结构在这里通常被称为“数据库结构”,并且包括但不限于用于例如关系数据库和诸如Java档案数据库(“JAR”)的API的数据库模式的数据描述。由于它们的普遍存在,数据库结构包含广泛的软件包的基本元素,并且在编译、编目、分类和检索信息的许多方面均是有用的,并且用于控制程序执行的各方面。然而,升级的数据库结构的使用通常受限于升级或改变数据库结构或软件设计时遇到的问题。特别地,在原始的数据库结构下正确运行的功能完备的数据库系统或其他应用,由于数据库结构内的改变而通常不能在升级的数据库结构下运行。相似地,由于数据库结构的设计内的改变,依赖原始数据库结构的功能或操作支持的软件或应用通常不能在升级的数据库结构下正确运行。更进一步,当升级的数据包括例如JAR的字节码库时,升级的JAR中的不相容性可以引起已有应用中的操作问题。因此,每当原始数据库结构升级时,就存在原始数据库结构下工作的数据库或应用将不能在升级的数据库结构下正确运行的风险。
例如,如果一个DB2数据库在第一数据库定义集下正确地运行,那么如果该DB2数据库升级为使用与第一定义集在某些方面不同的升级定义集,则该DB2也许根本不能运行。
当升级包含多个API的JAR时,存在相似的问题。特别地,一个应用可在利用第一API集的第一JAR下正确运行,但是在利用与第一集某些方面不同(例如通过改变类构造函数,或包括诸如参数的数量和顺序的方法特征信息)的第二API集的第二JAR下根本不运行。
已知有用来比较数据库结构的现存方法,包括数据库模式、JAR、API和其他数据结构,但是这些常规方法缺少明确地识别两个数据库结构之间的重要差异的能力。例如,一种常规方法可识别出两个数据库模式是不同的,但是不能识别它们是如何不同,以使一个数据库可相应地被改变来运行。通过另一个例子,已知的方法涉及完全反编译两个JAR并比较两个反编译的输出。然而,这样的比较不能提供关于两个JAR之间的相关差异的有用信息。因此,已知的数据库结构比较方法不能识别在具体应用中两个数据库结构的向前和向后相容性。
另外,已知的方法缺少精确比较手段,并且基于不准确的比较,经常不准确地产生多个不存在的不相容性。例如,已知的数据库结构比较方法利用标准的对称比较,该方法逐字符或逐行地比较两个数据库结构的字符,以确定两个结构是否相同。因此,两个数据库结构可就其功能是完全一致的,但是如果一个数据库包含额外的嵌入空白,或不依赖于数据库结构并且与数据库结构无关的任何其它元素,则常规比较方法会认为两个数据库结构是不同的。类似地,通过包含相同部分,两个数据库结构可在功能上是相等的,但是如果各部分在每个数据库结构中被安置在不同位置,则常规比较方法会认为两个数据库结构是不同的。

发明内容
在各种实施例中,本发明提供了能够识别两个数据库之间的结构差异的方法和计算机结构。
在各种实施例中,本发明提供了通过仅比较数据库结构的相关部分从而能够准确地比较两个数据库结构的方法和计算机结构。
在各种实施例中,本发明提供了能够比较两个数据库结构,使得每个数据库结构内各段的位置不影响比较结果的方法和计算机结构。
应该理解,上面所列的优点不必全部由此处所要求保护的发明来实现。通过最优实施例的详细说明、权利要求书以及附图将能够明白本发明的更多的优点。
相应地,在各种实施例中,提供了用来比较数据库结构的方法。数据库比较方法包括从第一信息库中提取第一数据库结构,从第二信息库中提取第二数据库结构,从每个数据库结构中过滤结构无关数据,不对称地比较第一数据库结构和第二数据库结构,以及基于比较,识别第一信息库和第二信息库之间的不相容性。
在各种实施例中,提供了一种用于比较数据库结构的方法。该方法涉及从包含第一多个相关部分的第一关系数据库中提取第一模式。接着,从包含第二多个相关部分的第二关系数据库中提取第二模式。然后通过识别第一和第二模式中的相关部分并忽略不相关部分,来自第一和第二模式的相关数据被过滤。接着,不对称地比较第一和第二模式的所识别的相关部分以识别包括在一个模式内但不包括在另一个模式内的相关差异,其中,第一和第二模式中相关部分的位置不影响不对称比较的结果。更进一步地,基于该不对称比较,第一和第二关系数据库之间的任何不相容性被识别出,并且基于任何所识别的不相容性,确定第一和第二关系数据库的向前和向后相容性。
在各种实施例中,提供了一种用于比较字节码库的方法。该方法涉及基于要提取对象的描述,反编译及过滤来自第一字节码库的第一对象集,以及基于要提取对象的描述,反编译及过滤来自第二字节码库的第二对象集。然后基于第一对象集,形成第一对象表征符(objectcharacterizer)集。接着,基于第二对象集,形成第二对象表征符集。更进一步地,不对称地比较第一和第二对象表征符集来识别第一和第二对象集之间的相关差异,并且基于该不对称比较,识别第一和第二字节码库之间的任何不相容性。
可以理解,前面的概述以及后续的不同实施例的描述两者都仅是示范性和说明性的,并不限制该要求保护的发明。结合并组成该说明一部分的附示了一些实施例,并与描述一起用来解释此处所描述的实施例的原理。


技术人员将理解下面所述的附图仅是为说明的目的。附图不旨在在任何方面限制本发明的范围。
图1是图示了用于比较第一数据库或字节码档案与第二数据库或字节码档案的示例性方法的流程图;图2是图示了用于根据本发明比较数据库结构的计算机结构的方框图。
具体实施例方式
现在具体参照附图中所图示的一些实施例和例子。只要可能,全部附图使用相同的附图标记来表示相同或同类部分。
首先参见图1,本发明涉及用来比较数据库结构的计算机实现的方法。图1中的步骤100-110概述了一个示范的计算机实现的比较模式。此处所描述的该方法可被编程并存储在由诸如个人计算机或计算机网络的标准计算设备可读的设备上。适合的程序存储设备包括,例如,CD、DVD、内部计算机硬盘驱动器、以及外部网络硬盘驱动器。类似地,此处所描述的方法可由标准计算设备执行或由计算网络上驻留的多个计算设备分别执行。
图2图解了用于本发明的一个示范的计算机结构。该计算机结构广泛地包括数据库比较模块10,为比较和识别每个数据库或字节码库12、14之间结构上的不同,其可操作以访问第一数据库或字节码库12以及第二数据库或字节码库14。数据库比较模块10通过常规手段,例如通过访问本地或远程存储的信息,可访问数据库或字节码库12、14。数据库比较模块10包括过滤器模块16,其利用过滤器参数集18过滤来自数据库或字节码库12、14的信息。在各种实施例中,过滤器参数18包含正则表达式。在各种实施例中,过滤器16包括可以将层次关系数据库模式提取成基本上扁平的格式的模式提取器和正则表达式分析器,例如提取成数据库模式的结构化查询语言定义的ASCII表示,包括可以从一般的或无关部分中分离出SQL定义的相关部分的正则表达式分析器。在各种实施例中,过滤器模块16包含字节码反编译器,最好是基于正则表达式的反编译器,其可以从字节码库中只提取那些匹配例如一个特定的正则表达式或正则表达式集的对象。
比较模块10包括不对称比较器20,用来比较过滤的数据库或字节码库12、14,以及识别数据库或字节码库之间结构上的不同。比较模块10将所识别的差异或不相容性存储在一个计算机可读的比较输出22中。在各种实施例中,比较模块10执行两个数据库模式的相关部分的不对称比较。在其他各种实施例中,比较模块执行涉及字节码库中不同对象的对象表征符的不对称比较。此处所使用的“对象表征符”通常是指一个对象的特征描述,用于诸如识别API相容性的目的。“对象表征符”包括但不限于对象方法的名称、方法的参数的数量、顺序及类型、异常转移、返回值类型、对象方法的方法可访问性的ASCII表示。
在各种实施例中,比较输出为一个比较文件。可以理解,比较输出22可用包括如ASCII格式文本文件的若干种方法来实现。下面更详细地描述比较模块10的更详细操作。可以理解,在不背离本发明的精神和范围的前提下,此处所描述的方法和结构可由计算机程序,而不是示范的数据库比较模块10来完成。
返回到图1,在步骤100和102中,数据库比较模块10通过任何方便的手段访问数据库或代码库12、14,并且从第一数据库或字节码库12中提取第一数据库结构,及从第二数据库或字节码库14中提取第二数据库结构。数据库结构可从现存的诸如数据库或代码库12、14的数据库中提取,或者,可以另外例如通过访问不是从数据库提取的已存储的数据库结构来提供数据库结构。每个数据库结构包括多个数据定义或代码部分,其以诸如SQL或Java表示的任何方便格式描述或定义了数据库结构的功能或操作。在一个实施例中,数据库或字节码库12、14为DB2数据库,并且数据库结构为以SQL表示的数据定义语言(DDL)。在第二实施例中,数据库或字节码库12、14为JAR,并且数据库结构为Java语言表示的API。
DB2是由IBM公司提供的数据库管理系统。DB2数据库通常根据DDL来构造,DDL可以使数据库的结构和实例按人和机器可读的形式来定义。本发明所利用的DB2数据库可包含单一DDL或多个DDL。DDL包括允许表和相关元素的定义的多个数据定义,还包含利于数据的存储、检索、比较及排序的SQL关键字。然而,本发明可用于任何类型数据库,包括非常规的DDL或SQL数据库结构,并且不限于此处所描述的数据库结构。
JAR是包括至少一个API的库,应用该API可开发出各种的应用程序。例如,一个程序员通过应用具体的API中或在具体JAR中所提供的多个API中所提供函数可开发出应用程序。与本发明结合使用的JAR可包括单一API或多个API。更进一步,每个API包括能实现期望的功能的多个对象。由给定的API或JAR所提供的特定Java或应用功能不限制本发明的范围。另外,本发明可与任何类型编程语言或API一起使用,并且不限于此处所描述的常规或标准化格式。
在各种实施例中,例如,就JAR而言,最好利用关系数据库模式提取器(就关系数据库数据库而言)及反编译器从数据库或字节码库12、14中提取数据库结构。可以理解,在不偏离本发明的范围的前提下,可使用其他的数据库提取器,例如,用于编译型C#的反编译器。可以理解,不同的计算机实现工具可以用来从DB2数据库提取DDL,例如,来自IBM公司的DB2LOOK。此外,反编译器可以用来从JAR中提取特定的API和相关的对象。在不同的实施例中,所提取的数据库结构按计算机可读格式存储,使得它们可以如下面所描述的被比较模块10访问。
步骤104中,所提取的数据库结构被过滤器模块16过滤。特别地,通过识别数据库结构内的相关数据定义或代码部分及从数据库结构中消除一般(generic)部分,结构无关数据被从每个数据库结构中过滤。此处所定义的“结构无关数据”为包含在数据库结构内的数据,其与数据库的结构无关,或与该数据库结构相应的数据库的向前和向后兼容性无关。可以理解,数据库结构通常包含结构无关数据来执行不涉及数据库结构的不同功能,例如,包括描述数据库结构的功能的注释的API非特定部分、仅与特定并唯一的数据库实现有关的用户特定信息、仅涉及特定数据库当前状态的动态信息等。
可以期望从所提取的数据库结构中过滤或消除结构无关数据来提供数据库或字节码库12、14的更准确的比较,因为即使数据库结构在功能上是相等的,结构无关数据通常在数据库之间变化。例如,包含用户特定信息和动态信息的代码部分对于特定数据库结构通常是特定的,并且如果应用于另一个功能相等的数据库结构,会产生不同。因此,从所提取的数据库结构中过滤结构无关数据允许准确确定所提取的数据库结构的功能等效性。
根据过滤器参数18过滤数据库结构。在各种实施例中,过滤器参数18为正则表达式,利用其来分析数据库模式的重要部分,或在API比较的情况下,用于利用反编译器从字节码档案中仅提取相关对象。过滤器参数18被用来识别出现在每个数据库结构中的相关部分。相关部分的识别利于进行比较,例如,正则表达式使得发明的比较工具更加灵活。因此,本发明可用于多个信息库和数据库结构,而不用花费必需的时间和精力来为每个特定数据库结构生成定制的过滤器。
过滤器参数18可由比较模块10自动提供,或可由模块10的用户提供及定制。优选地,过滤器参数18基于包含在数据库12、14内的数据的性质,并且在完成比较以使过滤器参数18最优化之后,可由比较模块10或用户动态地定制,使得最大量的结构无关数据被从每个数据库结构中消除。例如,如果比较的结果不是期望的,例如,如果比较表明不相容性的量超出合理的程度,那么过滤器参数可被动态地定制以过滤每个数据库结构中的附加信息,从而将不相容性的量减少到一个合理量。
在涉及与关系数据库相关的数据库结构的各种实施例中,优选地,过滤器参数18指示过滤器16识别具有每个DDL的相关的数据定义部分,从而忽略例如无关数据定义部分。相关数据定义部分可包含DDL模式,其特定于具体的应用,而不是特定于例如用户定制。因此,相关数据定义部分可包含所利用的包括函数、索引、表、触发器、唯一索引、以及视图元素的DDL模式。基于在DDL中所利用的具体代码部分,相关部分可包含其他的或附加的数据定义部分。
在涉及与字节码库相关的数据库结构的各种实施例中,优选地,过滤器参数18指示可被实现为选择性的、基于正则表达式的字节码反编译器的过滤器16识别并提取每个API内的相关部分。在各种实施例中,基于正则表达式的字节码反编译器接收至少一个正则表达式,其中基于该表达式从字节码库反编译出匹配对象。在各种实施例中,使用正则表达式以避免字节码库的不相关部分的不必要的反编译。在各种实施例中,不相关部分包括例如,(i)反编译的方法及/或函数中的实际语义;(ii)私有方法的API特征(例如,参数的数量、顺序、以及类型);(iii)嵌入的实用类;(iv)以及私有数据成员。
在各种实施例中,相关部分通常包括涉及API公共方面的功能的Java元素。在各种实施例中,相关代码部分一般包括Java方法、构造函数、参数、参数顺序、参数类型、由方法处理的异常、返回值,以及方法的可访问性限定符。基于每个API内所利用的具体代码部分,相关部分可另外包括其他的或附加的Java特征。在各种实施例中,之后相关部分被提取成对象表征符。在各种实施例中,对象表征符对应于与方法相应的单行ASCII表示,包括参数数量、参数顺序、参数类型、异常转移、返回值类型,以及方法的可访问性的方法特征。
过滤器模块16识别并过滤出已被识别为相关的数据库结构的部分。未识别的部分与数据库12、14的向前和向后相容性不相关。
在涉及数据库模式的各种实施例中,不相关的部分可包含嵌入的空白、动态数据库信息、SQL序列号、用户定义的表引用,以及用户定义的索引引用。在涉及字节码库的比较的其他各种实施例中,不相关部分可包含私有函数,或被用来当做私有函数操作的公共函数,其在API中通常不被一般公共函数利用或访问。然而,可以理解,不相关部分可包含决定于过滤器参数18和相关代码部分的任何特征或特征的组合。
所识别的结构无关数据可或者从提取的数据库结构中消除或者被屏蔽,使得如下面所述所识别的结构无关数据在比较中不被利用。因此,过滤器模块16从每个数据结构中可过滤结构无关数据以满足具体用户或数据库的需要,例如,屏蔽结构无关数据以保存数据库或结构的原始结构,或者当数据库原始结构不重要时删除结构无关数据。
在步骤106中,利用不对称比较器20比较过滤出的数据来识别数据库结构之间的功能差异。特别地,比较过滤数据的每个部分来识别出现在一个所过滤的数据库结构中但不在另一个中的代码部分。不包含相同部分的所过滤的数据库结构是不相容的。另外,如果数据库12、14包含多于两个的数据库结构,附加的数据库结构可用如下所描述的相同的方式来比较。因此,本发明可比较涉及两个或更多的数据库的两个或更多的数据库结构,并确定每个数据库结构的不相容性以及每个数据库的向前和向后相容性。
不对称比较器20不同于常规的计算机辅助比较方法,例如,Unix工具diff和comp,以及Windows工具fc和WINDIFF的地方在于,每个数据库结构内的代码部分的特定位置不影响不对称比较,但是会影响常规的比较。例如,利用常规的比较方法,如果第一数据库结构在行1包含代码部分A,而第二数据库结构在行2包含代码部分A,代码部分A将被常规的比较方法识别为第一和第二数据库结构之间的结构差异,即使代码部分A为两个结构所共用并且两个结构在功能上是相等的。与此相反,不对称比较,例如比较器20所利用的比较,不会将代码部分A识别为数据库结构之间的差异,并且会将两个数据库识别为功能上相等。
不对称比较利用元素,例如一个数据库结构内的元素之间的关系,来确定两个元素是否相等。与此相反,常规比较方法仅仅逐行或逐字节地比较两个数据库结构来确定结构的不同之处。例如,在不对称比较中,如果第一数据库结构包含部分X,而第二数据库结构包含代码部分Y,不考虑X和Y在数据库结构中的位置,如果X(R)Y并且Y(R)X,其中(R)是一种诸如大于、小于等的关系,则X等于Y。因此,诸如数据库结构中代码部分X和Y的行号或字符位置的特定位置不影响比较。可以了解,示例性代码部分X和Y可为单一元素,或诸如多个数据定义部分、函数块,或类结构的多个元素。在各种实施例中,利用与Java编程语言结合提供的集合操作方法来执行不对称比较。但是可以理解,在不背离本发明的原则或范围的前提下,可使用任何不对称比较操作。
优选地,比较器20将第一数据库结构中的每个代码部分与第二数据库结构中的每个代码部分比较以确定各元素是否相同。因此,数据库结构内每个元素的特定顺序或位置不影响比较的结果,因为元素的顺序在数据库结构的不对称比较中没有被用到。
在步骤108中,基于出现在一个数据库结构中但不在另一个中的代码部分识别出数据库12、14之间的不相容性。出现在一个数据库结构但不在另一个中的部分作为不相容性被存储在比较文件22中。除了存储所识别的不相容性之外,通过指明每个数据库结构所缺少的各个元素或代码部分,比较文件22还提供每个数据库结构的特定不相容性。例如,如果第一数据库包含代码部分A而第二数据库缺少代码部分A,则比较文件22会指明代码部分A为第二数据库的不相容性。类似地,如果比较多于两个的数据库结构或多于两个的数据库,每个数据库结构的特定的不相容性也被提供。
步骤110中,基于所识别的不相容性确定每个数据库12、14的相容性。当数据库12包含具有代码部分的数据库结构并且该代码部分同样包含在数据库14中时,数据库12与数据库14相容,反之亦然。每个数据库12、14的向前和向后相容性取决于数据库12、14的序列。例如,如果数据库12包含出现在数据库14中的每个代码部分,则数据库12向后相容数据库14,而数据库14向前相容数据库12。在多个数据库比较的情况下,可基于每个数据库的各种不相容性建立向前和向后相容性的类似层次结构。
存储在比较文件22内的所识别的不相容性可被排序或分类,使得用户或其它计算机程序可容易地确定所比较的数据库结构的向前和向后相容性。例如,通过指明每个数据库结构的公共和独特的数据库结构或代码部分,表或网格可按计算机可读格式被安装并存储以说明每个比较的数据库的向前和向后相容性。
比较文件22也可被用来修改不相容数据库结构,使得不相容的数据库结构与期望的数据库正常运行。例如,如果升级的数据库版本要取代先前的数据库版本,但是升级的数据库版本在其结构内缺少代码部分A,则比较文件22会这样指明并且代码部分A可被容易地添加到升级的数据库版本中,使得在先前的数据库版本下运行的数据库或应用可以在升级的数据库版本下运行。
虽然本发明是结合各种实施例描述的,但是不意味本发明局限于这样的实施例。相反,本发明包含可被本领域技术人员理解的各种可选方式、修改和等同。
权利要求
1.一种用于比较数据库结构的方法,该方法包括从第一信息库提取第一数据库结构;从第二信息库提取第二数据库结构;过滤第一数据库结构和第二数据库结构;不对称地比较第一数据库结构与第二数据库结构,从而导致不对称比较;以及基于该不对称比较,识别在第一信息库和第二信息库之间的相关不同。
2.根据权利要求1的方法,其中过滤第一数据库结构和第二数据库结构进一步包括基于至少一个正则表达式反编译与第一信息库和第二信息库相关的字节码。
3.根据权利要求1的方法,其中过滤第一数据库结构和第二数据库结构进一步包含提取对应于第一信息库的第一数据库模式和对应于第二信息库的第二数据库模式,以及基于至少一个正则表达式分析第一数据库模式和第二数据库模式。
4.根据权利要求1的方法,其中第一信息库和第二信息库为关系数据库系统,并且第一数据库结构和第二数据库结构包含对应于关系数据库系统内数据库结构的数据定义。
5.根据权利要求1的方法,其中第一信息库和第二信息库为JAR,并且第一数据库结构和第二数据库结构包含API。
6.根据权利要求1的方法,其中过滤步骤进一步包含从第一数据库结构和第二数据库结构中消除结构无关数据。
7.根据权利要求6的方法,其中结构无关数据包括不相关部分。
8.根据权利要求1的方法,其中过滤步骤进一步包括从第一数据库结构和第二数据库结构中过滤出相关数据。
9.根据权利要求6的方法,其中结构无关数据包括嵌入的空白,动态数据库信息,SQL序列号,用户定义的表引用,以及用户定义的索引引用。
10.根据权利要求6的方法,其中通过识别第一数据库结构和第二数据库结构中的相关数据部分并且从第一数据库结构和第二数据库结构中消除剩余的不相关数据,从而消除结构无关数据。
11.根据权利要求6的方法,其中结构无关数据包含SQL语句,其包括函数、索引、表、触发器、唯一索引,以及视图元素。
12.根据权利要求6的方法,其中结构无关数据包含Java方法、类构造函数、参数、参数的顺序、参数类型、利用Java方法处理的异常、返回值,以及Java方法的可访问性限定符。
13.根据权利要求6的方法,其中结构无关数据的定义是可定制的,以便用户可指定正则表达式以在过滤步骤中使用。
14.根据权利要求1的方法,其中第一和第二数据库结构包含至少一个相关数据部分。
15.根据权利要求14的方法,其中不对称比较包含比较第一数据库结构和第二数据库结构的相关数据部分。
16.根据权利要求15的方法,其中在第一数据库结构和第二数据库结构内的相关数据部分的位置不导致不对称比较中相关差异的识别。
17.根据权利要求15的方法,进一步包括基于比较的相关数据部分确定第一信息库和第二信息库的向前和向后相容性。
18.一种用于比较数据库结构的方法,该方法包括从第一关系数据库中提取第一模式,第一模式包括第一多个相关部分;从第二关系数据库中提取第二模式,第二模式包括第二多个相关部分;通过识别第一模式和第二模式中的相关部分并且抛弃任何不相关部分,从第一模式和从第二模式中过滤相关数据;不对称地比较第一模式和第二模式的所识别的相关部分,以识别包含在第一模式和第二模式的一个中但不在另一个中的相关差异,其中,在第一模式和在第二模式中相关部分的位置不影响不对称比较的结果;基于不对称比较,识别第一关系数据库和第二关系数据库之间的任何不相容性;以及基于任何所识别的不相容性,确定第一关系数据库和第二关系数据库的向前和向后相容性。
19.根据权利要求18的方法,其中相关部分包含与存储过程、索引、表、触发器、唯一索引和视图相对应的SQL语句。
20.根据权利要求18的方法,其中不相关部分包括嵌入的空白,动态数据库信息,SQL序列号,用户定义的表引用,以及用户定义的索引引用。
21.根据权利要求18的方法,其中可利用至少一个正则表达式来定制相关部分的描述。
22.根据权利要求18的方法,进一步包括以计算机可读格式存储所识别的不相容性。
23.根据权利要求18的方法,进一步包括以计算机可读格式呈现第一和第二关系数据库的所确定的向前和向后相容性。
24.一种用于比较字节码库的方法,该方法包括基于要提取对象的描述,从第一字节码库中反编译并过滤第一对象集;基于要提取对象的描述,从第二字节码库中反编译并过滤第二对象集;基于第一对象集,形成第一对象表征符集;基于第二对象集,形成第二对象表征符集;不对称地比较第一对象表征符集和第二对象表征符集,以识别第一对象集和第二对象集之间的相关差异;以及基于不对称比较,识别第一字节码库和第二字节码库之间的任何不相容性。
25.根据权利要求24的方法,其中要提取对象的描述包含正则表达式。
26.根据权利要求24的方法,进一步包括基于任何所识别的不相容性,确定第一字节码库和第二字节码库的向前和向后相容性。
27.根据权利要求24的方法,其中第一对象表征符集和第二对象表征符集分别反映关于第一对象集和第二对象集的表征信息,表征信息包括方法名、类构造函数名、参数编号、参数的顺序、参数类型、用具体方法处理的异常、返回值,以及方法的可访问性限定符。
28.根据权利要求24的方法,进一步包含按计算机可读格式存储所识别的不相容性。
29.根据权利要求24的方法,进一步包括按计算机可读格式提供所确定的向前和向后相容性。
30.一种计算机可读存储介质,其包含用于具有用户接口的通用计算机的指令集,该指令集包含在操作时与用户接口相关联的控制例程,该控制例程提供用于比较信息库的控制操作;在操作时与控制例程相关联的第一提取例程,该第一提取例程提供从第一信息库中第一数据库结构的提取;在操作时与控制例程相关联的第二提取例程,该第二提取例程提供从第二信息库中第二数据库结构的提取;在操作时与用户接口相关联的过滤例程,第一提取例程和第二提取例程提供第一数据库结构和第二数据库结构的过滤;在操作时与过滤例程相关联的不对称比较例程,其提供第一数据库结构与第二数据库结构的不对称比较;以及在操作时与不对称比较例程相关联的识别例程,其提供基于不对称比较、在第一信息库和第二信息库之间的相关差异的识别。
31.根据权利要求30的计算机可读存储介质,其中过滤例程进一步包括反编译例程,其提供基于至少一个正则表达式、与第一信息库和第二信息库相关的字节码的反编译。
32.根据权利要求30的计算机可读存储介质,其中过滤例程进一步包含提取和分析例程,其提供对应于第一信息库的第一数据库模式的提取,及对应于第二信息库的第二数据库模式的提取,并且基于至少一个正则表达式分析第一数据库模式和第二数据库模式。
33.根据权利要求30的计算机可读存储介质,其中第一信息库和第二信息库为关系数据库系统,并且第一数据库结构和第二数据库结构包含对应于关系数据库系统内数据库结构的数据定义。
34.根据权利要求30的计算机可读存储介质,其中第一信息库和第二信息库为JAR,并且第一数据库结构和第二数据库结构包含API。
35.一种计算机可读存储介质,其包含用于使通用计算机执行数据库比较的指令集,该通用计算机具有用户接口,并且该指令集包括在操作中与用户接口关联的数据库比较控制例程;在操作中与数据库比较控制例程关联的第一提取例程,其提供从第一关系数据库中第一模式的提取,该第一模式包含第一多个相关部分;在操作中与数据库比较控制例程关联的第二提取例程,其提供从第二关系数据库中第二模式的提取,该第二模式包含第二多个相关部分;在操作中与数据库比较控制例程、第一提取例程及第二提取例程关联的过滤例程,其通过识别第一模式和第二模式内的相关部分并且忽略不相关部分来提供从第一模式和从第二模式中相关数据的过滤;在操作中与过滤例程关联的不对称比较例程,其提供第一模式和第二模式的所识别相关部分的不对称比较,以识别仅包含在第一模式和第二模式中的一个内的相关差异,其中,第一模式内和第二模式内相关部分的位置不影响不对称比较的结果;以及在操作中与不对称比较例程关联的识别例程,其提供基于不对称比较、在第一关系数据库和第二关系数据库之间的任何不相容性的识别。
36.根据权利要求35的计算机可读存储介质,进一步包括在操作中与识别例程关联的相容性确定例程,其提供基于来自识别例程的输出、第一关系数据库和第二关系数据库的向前和向后相关性的确定。
37.一种计算机可读存储介质,其包含用于使通用计算机执行字节码库比较的指令集,该通用计算机具有用户接口,并且该指令集包括在操作中与用户接口关联的字节码库比较控制例程,用于控制字节码库比较;在操作中与字节码库比较控制例程关联的第一反编译和过滤例程,其提供基于要提取自第一字节码库的对象的描述、对来自第一字节码库的第一对象集的反编译和过滤;在操作中与字节码库比较控制例程关联的第二反编译和过滤例程,其提供基于要提取自第二字节码库的对象的描述,对来自第二字节码库的第二对象集的反编译和过滤;表征例程,其提供基于第一对象集的第一对象表征符集的形成,并提供基于第二对象集的第二对象表征符集的形成;不对称比较例程,其提供第一对象表征符集和第二对象表征符集的不对称比较,以识别第一对象集和第二对象集之间的相关差异;以及识别例程,其提供基于不对称比较、在第一字节码库和第二字节码库之间的任何不相容性的识别。
38.一种用于比较数据库结构的装置,包括针对来自第一信息库的第一数据库结构和来自第二信息库的第二数据库结构的提取装置;用于过滤第一数据库结构和第二数据库结构的过滤器;和用于不对称比较第一数据库结构和第二数据库结构以识别第一信息库和第二信息库之间相关差异的不对称比较器。
39.根据权利要求38的装置,其中过滤器进一步包括用于基于至少一个正则表达式反编译与第一信息库和第二信息库相关联的字节码的字节码反编译器。
40.根据权利要求38的装置,其中过滤器进一步包括用于提取与第一信息库相对应的第一数据库模式和与第二信息库相对应的第二数据库模式的模式提取器,以及用于基于至少一个正则表达式分析第一数据库模式和第二数据库模式的正则表达式分析器。
41.根据权利要求38的装置,其中第一信息库和第二信息库为关系数据库系统,并且第一数据库结构和第二数据库结构包含对应于关系数据库系统内数据库结构的数据定义。
42.根据权利要求38的装置,其中第一信息库和第二信息库为JAR,并且第一数据库结构和第二数据库结构包含API。
43.根据权利要求38的装置,其中过滤器进一步配置成从第一数据库结构和第二数据库结构中消除结构无关数据。
44.根据权利要求43的装置,其中结构无关数据包含不相关部分。
45.根据权利要求43的装置,其中过滤步骤进一步包含从第一数据库结构和第二数据库结构中过滤出相关数据。
46.根据权利要求43的装置,其中结构无关数据包括嵌入的空白,动态数据库信息,SQL序列号,用户定义的表引用,以及用户定义的索引引用。
47.根据权利要求38的装置,其中过滤器进一步被配置成通过识别第一数据库结构和第二数据库结构内的相关数据部分,并且从第一数据库结构和第二数据库结构中消除剩余的不相关数据部分,以消除结构无关数据。
48.根据权利要求38的装置,其中结构无关数据包含SQL语句,其包括函数、索引、表、触发器、唯一索引和视图元素。
49.根据权利要求38的装置,其中结构无关数据包括Java方法、类构造函数、参数、参数顺序、参数类型、由Java方法处理的异常、返回值,以及Java方法的可访问性限定符。
50.根据权利要求38的装置,其中结构无关数据的定义是可定制的,以便用户可指定正则表达式以在过滤步骤中使用。
51.根据权利要求38的装置,其中第一和第二数据库结构包含至少一个相关数据部分。
52.根据权利要求51的装置,其中不对称比较器被进一步配置成比较第一数据库结构和第二数据库结构的相关数据部分。
53.根据权利要求52的装置,其中第一数据库结构和第二数据库结构内的相关数据部分的位置不导致在不对称比较中相关差异的识别。
54.根据权利要求52的装置,其中基于所比较的相关数据部分,不对称确定第一信息库和第二信息库的向前和向后相容性。
全文摘要
揭示了用于比较诸如数据库模式的数据库结构的方法、装置和计算机例程以及应用程序接口的描述。该方法涉及通过从第一信息库提取第一数据库结构,从第二信息库中提取第二数据库结构,从每个数据库结构中过滤相关部分,不对称地比较相关部分,以及识别数据库模式或字节码库之间的任何不相关性,从而识别诸如关系数据库和字节码库的信息库之间的不相容性。
文档编号G06F17/30GK1749996SQ200510099940
公开日2006年3月22日 申请日期2005年9月13日 优先权日2004年9月16日
发明者拉维·希卡尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1