多数据库环境中存取数据的方法和计算机转让专利

申请号 : CN03808943.2

文献号 : CN1647080B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 理查德·迪安·戴廷格理查德·约瑟夫·史蒂文斯

申请人 : 国际商业机器公司

摘要 :

本发明通常涉及以独立于数据被物理表示的特定方式的方式存取数据的系统、方法以及产品。在一个实施例中,数据库抽象层提供了独立于数据表示的特定方式的底层数据库的逻辑视图。在一个实施例中,数据库抽象层指定了数据库中数据的位置,以及用于存取数据的方法。还提供了基于数据仓库抽象层的查询抽象层。运行时部件将抽象查询转变为对于特定物理数据表示可以使用的形式。

权利要求 :

1.一种从多个分布式数据库中存取数据的方法,数据库中的至少一个使用与任何其他分布式数据库不同的物理数据表示,该方法包括:从请求方实体接收根据请求方实体的查询规格的抽象查询;其中,查询规格定义了抽象查询的多个逻辑域,使得以独立于要存取的任何数据库的底层物理数据表示的方式定义抽象查询;

将抽象查询划分成多个子查询,子查询根据存取方法类型进行分组;以及根据与特定子查询相关的存取方法,将每个子查询转换成与数据的特定物理数据表示一致的查询,其中每个存取方法能够通过定义每个物理实体的存取方法以及每个物理实体的位置规格,将逻辑域映射到数据的物理实体,所述位置规格标识数据库和所标识数据库中数据的位置。

2.如权利要求1所述的方法,其中,从包括SQL查询类型,XML查询类型和过程请求类型的组中选出存取方法类型。

3.如任一在前权利要求所述的方法,其中,抽象查询包括至少一个选择标准和结果规格。

4.如权利要求1或2所述的方法,还包括:

针对多个逻辑域的特定逻辑域的数据的物理实体,确定数据的物理实体是否位于本地高速缓存内;以及如果数据的物理实体不在本地高速缓存内,存取由数据的物理实体的存取方法中的位置所指定的数据库。

5.一种用于从多个分布式数据库存取数据的计算机,数据库中的至少一个使用与任何其他分布式数据库不同的物理数据表示,该计算机包括:查询规格;

用于从请求方实体接收根据请求方实体的查询规格的抽象查询的装置,其中,查询规格定义抽象查询的多个逻辑域,使得以独立于要存取的任何数据库的底层物理数据表示的方式定义抽象查询;

用于将抽象查询划分成多个子查询的装置,其中子查询根据存取方法类型进行分组;

包括存取方法的数据库抽象部件,该存取方法通过定义每个物理实体的存取方法将逻辑域映射到数据的物理实体,数据库抽象部件还包括每个物理实体的位置规格,该位置规格标识数据库和数据在所标识数据库中的位置;以及用于根据与特定子查询相关的存取方法,将每个子查询转换成与数据的特定物理数据表示一致的查询的运行时部件。

说明书 :

技术领域

本发明涉及用于在多数据库环境中存取数据的方法、计算机程序和计算机。

背景技术

数据库是计算机化的信息存储和检索系统。关系数据库管理系统是使用关系技术存储和检索数据的计算机数据库管理系统(DBMS)。最流行的数据库类型是关系型数据库,即表格数据库,其中数据被定义为能以各种不同的方式重组和存取。
不考虑特定的数据结构,在DBMS中,请求方实体(例如,应用,操作系统或者用户)通过发出数据库存取请求要求存取指定的数据库。这种请求可能包括,例如,简单目录查找请求或者事务和事务组合,其在数据库中读取、改变和增加指定的记录。通过使用高级查询语言生成这些请求,例如结构化查询语言(SQL)。说明性地,使用SQL生成交互式查询,用于从数据库中获得信息以及更新数据库,例如国际商用机器公司(IBM)的DB2,微软的SQL Server,以及来自Oracle,Sybase和Computer Associates的数据库产品。术语“查询”是指一组用于从所存储的数据库中检索数据的命令。查询采用命令语言的形式,其允许编程者和程序选择,插入,更新,找出数据的位置,等等。
通常,数据挖掘和数据库查询应用面临的一个难题是其与所给数据库模式(例如,关系型数据库模式)的紧密关联。此关联使得当相应的底层数据库模式发生改变时很难支持应用。另外,限制了应用向可选底层数据表示的迁移。在当前环境下,上述缺点大多是由于应用对SQL的依赖引起的,SQL假定所查询的信息是使用关系模型表示的。此外,因为在SQL查询表示内引用了特定的数据库表,列和关系,因此,所给定的SQL查询依赖于特定的关系模式。结果,这些限制引发了许多难题。
一个难题在于,在底层关系数据模型中的改变需要对SQL基础进行改变,而应用是基于SQL基础构建的。因此,应用设计者必须或者放弃改变底层数据模型以避免应用维护,或者必须改变应用以反映底层关系模型的改变。另一个难题在于,扩展应用以便与多个关系数据模型协同工作需要分别的应用版本,以反映通过每个独特关系模式驱动的独特SQL需求。然而,因为SQL是被设计为用于关系系统,另一个难题是如何使应用演变以便与可选数据表示协同工作。扩展应用以支持可选数据表示,例如XML,需要重写应用的数据管理层,以便使用非SQL数据存取方法。
针对上述问题通常所使用的解决方法是软件封装。软件封装涉及使用软件接口或者部件来封装针对特定底层数据表示的存取方法。企业JavaBeanTM(EJB)规范是一个示例,企业JavaBeanTM(EJB)规范是JavaTM 2企业版(J2EE)套件技术的部件。在EJB实例中,实体豆(entity bean)封装所给的数据集,公开一组应用程序接口(API),所述API可以用于存取此信息。这是高度专业化的解决方法,每当要存取一组新的数据,或者当希望获得新的数据存取模式时,就需要编写软件(以新实体EJB的形式)。EJB模型还需要代码更新,应用构建和部署周期,以便对底层物理数据模型的重组作出反应,或者支持可选的数据表示。因为涉及更高级的Java编程技术,EJB编程还需要专业化的技能。因此,EJB解决方案以及其他的相似解决方案很不灵活,并且对于维护用于存取演进的物理数据模型的通用查询应用而言费用昂贵。(Java和所有基于Jave的商标是Sun微系统公司在美国、其他国家或二者的商标)。
除了存取不同类型数据表示的难题外,现今的环境由于数据常常是高度分布式的事实而变得复杂。类似因特网的流行基础架构包含数据源主机,其必须对于用户可访问以便体现价值。处理本地化、同质化数据的传统解决方案不再有效,而开发处理分布式和不同类型数据的解决方案尚有问题,因为这样的解决方案必须知道每个数据源的位置并且必须提供独特的逻辑(软件)以处理每个不同类型的数据表示。结果,通常的解决方案(例如提供数据仓库,其包含使用数据仓库的应用所需要的所有信息)很难适应正被使用的数据的位置或表示的改变,并且很难被重新部署以便与不同数据拓扑协同工作。当需要用附加的,公开可获得的信息扩充仓库内容时,数据仓库还引发了问题。在一些实例中,外部的数据源可能很大并且易于变化。在所给数据仓库中维护这种数据的本地拷贝,费用会是非常昂贵的。
因此,需要一种改进的并且更加灵活的存取数据的方法,其不限于表示底层物理数据的特定方式。

发明内容

根据一个方面,本发明提供了在多数据库环境中存取数据的方法,包括:从请求方实体接收根据请求方实体查询规格的抽象查询;其中查询规格提供抽象查询的多个逻辑域的定义;以及根据存取方法将抽象查询转换成与数据的特定物理数据表示一致的查询,该存取方法通过定义存取每个物理实体的方法以及每个物理实体的位置,将逻辑域映射到数据的物理实体。
当然,可以使用计算机软件执行该方法。
最好是通过数据模式和查询抽象提供用于分布式数据源的远程数据存取和集成的方法、计算机程序和计算机。
本发明优选涉及以独立于物理表示数据的特定方式的方式存取数据的方法、计算机和计算机程序。优选地,提供抽象层以表示应用可使用的各种分布式数据源,并描述应用用以存取和/或者更新在这些数据源中所包含的信息的查询。优选地,运行时部件负责使用包含在数据库抽象部件(抽象层之一)中的信息,将抽象查询解析为针对一个或多个数据库的具体数据存取请求。
一个实施例提供了存取具有特定物理数据表示的数据的方法。该方法包括对请求方实体提供查询规格,该查询规格包括用于定义抽象查询的多个逻辑域;以及提供数据库抽象,其将多个逻辑域映射到数据的物理实体。在一个实施例中,对于每个逻辑域,数据库抽象包括定义了数据物理实体位置的至少一个定位符,以及定义访问数据的物理实体的机制的存取方法。
一个实施例提供了计算机,包括:处理器和存储器,该存储器至少包含(i)包括查询规格的请求方实体,该查询规格定义包括多个逻辑域的抽象查询;(ii)包括映射规则的数据库抽象部件,该映射规则将逻辑域映射到数据的物理实体,其中映射规则包括抽象查询的至少部分逻辑域的每个的位置规格,并且其中每个位置规格规定包含要存取的物理实体的数据源的位置;以及(iii)运行时部件,用于根据映射规则将抽象查询转换成与数据的物理实体一致的查询。
根据另一个方面,提供了计算机,包括:存储器,该存储器包含至少(i)提供包括多个逻辑域的抽象查询的定义的查询规格,(ii)包括映射规则的数据库抽象部件,该映射规则将逻辑域映射到数据的物理实体,其中映射规则包括抽象查询的至少部分逻辑域的每个的位置规格,并且其中每个位置规格规定包含要存取的物理实体的数据源的位置;以及(iii)运行时部件,用于根据映射规则将抽象查询转换成与数据的物理实体一致的查询;以及适合执行存储器的内容的处理器。
根据一个实施例,提供了在多个数据库环境中存取数据的方法,包括:对请求方实体提供包括用于定义抽象查询的多个逻辑域的查询规格;以及对于多个逻辑域中的每一个提供存取方法,该存取方法至少指定用于存取数据的方法以及数据的位置。
优选地,该方法还包括,由请求方实体发出根据查询规格的抽象查询;将抽象查询转换为与数据的特定物理数据表示一致的查询;以及在针对多个逻辑域的特定逻辑域的数据物理实体的存取方法中访问该位置所指定的数据库。
优选地,与特定物理数据表示一致的查询是SQL查询,XML查询以及过程请求中的一个。
优选地,将抽象查询转换成与特定数据物理表示一致的查询包括将抽象查询划分为根据存取方法类型分组的子查询。
优选地,从包括SQL查询类型,XML查询类型以及过程请求类型的组中选择存取方法类型。
根据优选实施例,提供了在多个数据库环境中存取数据的方法,包括:由请求方实体发出根据请求方实体的查询规格的抽象查询;其中查询规格提供抽象查询的多个逻辑域的定义;以及根据存取方法将抽象查询转换成与数据的特定物理数据表示一致的查询,该存取方法通过定义每个物理实体的存取方法以及每个物理实体的位置,将逻辑域映射到数据物理实体。
优选地,能够访问针对多个逻辑域的特定逻辑域的数据物理实体的位置所指定的数据库。
优选地,抽象查询包括至少一个选择标准和结果规格。
该方法最好包括针对多个逻辑域的特定逻辑域的数据物理实体,确定数据物理实体是否位于本地高速缓存中;如果不在本地高速缓存中,则通过数据物理实体的存取方法访问该位置所指定的数据库。
优选地,抽象查询到与特定数据物理表示一致的查询的转换包括将抽象查询划分为根据存取方法类型分组的子查询。
优选地,从包括SQL查询类型,XML查询类型以及过程请求类型的组中选择存取方法类型。
根据优选实施例,提供了包含程序的计算机可读介质,当处理器执行程序时,该程序执行在多个数据库环境中访问数据的操作,该程序包括:请求方实体的查询规格,该查询规格包括用于定义抽象查询的多个逻辑域;以及每个逻辑域的存取方法,每个逻辑域定义了存取数据物理实体的方法,以及被传递到用于存取物理实体的方法的多个参数,其中至少一个参数是指定包含物理实体的数据源的位置的位置参数。
例如,请求方实体可以是应用程序。
优选地,多个存取方法中的每一个定义数据的特定物理表示和相应物理实体的位置。
优选地,操作包括:请求方实体发出根据查询规格的抽象查询;将抽象查询转换成与特定物理数据表示一致的查询;并且访问由针对多个逻辑域的特定逻辑域的数据物理实体的位置所指定的数据库。
根据优选实施例,提供了包含程序的计算机可读介质,当处理器执行程序时,该程序执行存取具有特定物理数据表示的数据的操作,该操作包括:由请求方实体发出根据请求方实体的查询规格的抽象查询;其中查询规格定义了抽象查询的逻辑域;并且根据存取方法将抽象查询转换成与数据的特定物理数据表示一致的查询,该存取方法通过为每个物理实体至少定义用于存取物理实体的方法和物理实体的位置,将逻辑域映射到数据物理实体。
根据优选实施例,提供了计算机,包括:存储器,该存储器至少包含(i)包括查询规格的请求方实体,该查询规格定义抽象查询,该抽象查询包括多个逻辑域;(ii)包括映射规则的数据库抽象部件,映射规则将逻辑域映射到数据的物理实体,其中映射规则包括抽象查询的至少部分逻辑域的每个的位置规格,并且其中每个位置规格指定包含要存取的物理实体的数据源的位置;以及(iii)运行时部件,用于根据映射规则将抽象查询转换成与数据的物理实体一致的查询;以及适合于执行存储器的内容的处理器。
优选地,由相应位置规格指定的数据源的第一部分是本地的,且第二部分是远程的。

附图说明

现在将参考以下附图,通过示例的方式说明本发明的优选实施例;
图1是根据本发明的优选实施例图解使用的计算机系统;
图2A图解了软件部件的关系视图;
图2B是用于关系数据存取的数据库抽象和抽象查询的一个实施例;
图3根据本发明的一个实施例,图解了运行时部件操作的流程图;
图4根据本发明的一个实施例,图解了运行时部件操作的流程图;
图4图解了软件部件的关系视图,在其中可存取多个数据源;
图6图解示出了包括多个逻辑域的抽象查询602;
图7图解了以关系存取方法配置的数据库抽象部件的域规格;以及
图8图解了以过程存取方法配置的数据库抽象部件的域规格。

具体实施方式

介绍
本发明通常涉及一种系统、方法以及产品,用于以独立于物理表示数据的特定方式的方式存取数据。数据可以包括多个不同数据源。
在一个实施例中,数据库抽象层提供独立于数据表示的特定方式的一个或多个底层数据库的逻辑视图。当有多个数据源时,用标识要存取的数据的位置的位置规格配置数据库抽象层的实例。还提供了基于数据库抽象层的查询抽象层。运行时部件将抽象查询(根据查询抽象层构造)转换为能够针对特定数据物理实体使用的形式。
本发明的一个实施例被实现为用于例如下述图1中所示的计算机系统100的计算机系统的程序产品。程序产品的程序定义了实施例的功能(包括这里所述的方法),并且能包含在各种信号承载介质上。图解的信号承载介质包括但不限于:(i)在不可写存储介质上永久存储的信息(例如,计算机中的只读存储器设备,例如CD-ROM驱动器可读取的CD-ROM盘);(ii)在可写存储介质上存储的可改写信息(例如,磁盘驱动器中的软盘或者硬盘驱动器);或者(iii)通过通信介质传给计算机的信息,例如,通过计算机或者电话网络,包括无线通信。后者实施例包括从因特网和其他网络下载的信息。
通常,被执行以实现本发明实施例的程序可以是部分操作系统或特定应用程序,部件,程序,模块,对象或者指令序列。优选实施例的软件通常包括大量指令,该指令被本地计算机转换成机器可读格式、因此可执行的指令。此外,程序由变量和数据结构组成,其或者本地驻留到程序中,或者可在存储器或存储设备中可找到。然而,应当知道,下面任何特殊的术语仅仅是为了方便,因此本发明不应限于仅仅使用于这样的术语所标识和/或所暗示的任何特定的应用中。
环境的物理视图
图1示出了可在其中实施本发明实施例的网络系统100的模块图。通常,网络系统100包括客户(例如,用户的)计算机102(示出了三个这样的客户计算机)和至少一个服务器104(示出了一个这样的服务器)。客户计算机102和服务器计算机104经由网络126相连。通常,网络126可以是本地局域网(LAN)和/或广域网(WAN)。在特定实施例中,网络126是因特网。
客户计算机102包括经由总线126连接到存储器112的中央处理单元(CPU)110,存储设备114,输入设备116,输出设备119,和网络接口设备118。输入设备116可以是为客户计算机102提供输入的任何设备。例如,键盘,袖珍键盘,光笔,触摸屏,轨迹球,或者语音识别单元,音频/视频播放器等等可被使用。输出设备119可以是为用户提供输出的任何设备。例如,任何传统的显示屏。尽管所示与输入设备116分开,然而输出设备119可以与输入设备116结合。例如,可以使用具有集成触摸屏的显示屏,具有集成键盘的显示器,或者结合有文本语音转换器的语音识别单元。
网络接口设备118可以是任何入口/出口设备,其被配置为容许客户计算机102和服务器计算机104之间经由网络126进行网络通信。例如,网络接口设备118可以是网络适配器或者是其他的网络接口卡(NIC)。
存储设备114最好是直接存取存储设备(DASD)。尽管以单一单元示出,然而其可以是固定的和/或可移动的存储设备的结合,例如固定磁盘驱动器,软盘驱动器,磁带驱动器,可移动存储卡,或者光存储设备。存储器112和存储设备114可以是横越多个主要和辅助存储设备的一个虚拟位置空间的一部分。
存储器112最好是足够大的随机存取存储器,以保存本发明优选实施例的编程和数据结构。虽然以单一实体示出存储器112,然而应当理解,存储器112实际上可以包括多个模块,并且存储器112可以在多个级别上存在,从高速寄存器和高速缓存到较低速然而较大的动态随机存取存储器芯片。
图解性地,存储器112包含操作系统124。说明性地,可以使用以产生良好效果的操作系统包括Linux和微软的更普遍地,可以使用支持在这里所公开功能的任何操作系统。
还示出了包含浏览器程序122的存储器112,当在CPU 110上执行时,浏览器程序支持在各种服务器104之间的导向和将网络地址定位于一个或多个服务器104。在一个实施例中,浏览器程序122包括基于Web的图形用户接口(GUI),GUI容许用户显示超文本标记语言(HTML)信息。然而,更普遍地,浏览器程序122可以是能呈现从服务器104传送的信息的任何基于GUI的程序。
可以以与客户计算机102相似的方式物理地安排服务器计算机104。因此,所示服务器计算机104通常包括通过总线136彼此相连的CPU 130,存储器132和存储设备134。存储器132可以容量足够大以保存本发明优选实施例的编程和数据结构的随机存取存储器,其位于服务器计算机104上。
服务器计算机104通常受存储器132中所示操作系统138的控制。示例操作系统138包括等等。更普遍地,可以使用能支持在这里所说明功能的任何操作系统(IBM和OS/400是国际商用机器公司在美国的商标;UNIX是开放组织在美国和其他国家的注册商标;Microsoft和Windows是微软公司在美国,其他国家或者双方的商标)。
存储器132还包括一个或多个应用140和抽象查询接口146。应用140和抽象查询接口146是包含多个指令的软件产品,所述指令在不同时期居于计算机系统100的不同存储器和存储设备中。当被服务器104中的一个或多个处理器读取并执行时,应用140和抽象查询接口146导致计算机系统100执行必需的步骤,以便执行体现本发明优选实施例各方面的步骤或者要素。应用140(更普遍地,任何请求方实体,包括操作系统138和,最高级而言,用户)针对数据库发送查询。所发送的查询可以包括,例如,本地数据库1561....156N和远程数据库1571....157N,全体被称为数据库156-157。图解性地,所示数据库156是存储设备134中数据库管理系统(DBMS)154的一部分。更普遍地,在这里所使用的术语“数据库”是指不考虑特定物理表示的任何数据的集合。通过图解的方式,可以根据关系模式(可通过SQL查询存取)或XML模式(可通过XML查询存取)组织数据库156-157。然而,本发明不限于特定的模式,并预期扩展到当前未知的模式。如在这里所使用的,术语“模式”通常指数据的特定排列。
在一个实施例中,根据每个应用140所包括的应用查询规格142,定义应用140发出的查询。应用140发送的查询可以是预先定义的(即,作为应用140一部分的硬件编码),或者是响应输入(例如,用户输入)生成的。在两者中的任何一种情况,使用抽象查询接口146定义的逻辑域构造查询(在这里称之为“抽象查询”)。尤其是,通过抽象查询接口146的数据库抽象部件148定义在抽象查询中所使用的逻辑域。运行时部件150执行抽象查询,其将抽象查询转换成与一个或多个数据库156-157中所包含的数据的物理表示一致的形式。参照图2A-B进一步说明应用查询规格142和抽象查询接口146。
在一个实施例中,用户通过图形用户接口(GUI)规定查询要素。应用140生成GUI的内容。在特定实施例中,GUI的内容是超文本标记语言(HTML)内容,其可以在具有浏览器程序122的客户计算机系统102上呈现。因此,存储器132包括适合服务来自客户计算机102和请求的超文本传输协议(http)服务器进程138(例如,web服务器)。例如,进程138会响应存取数据库156的请求,数据库156图解性地位于服务器104上。针对来自数据库156-157的数据的传入客户机请求启动应用140。当由处理器130执行时,应用140使服务器计算机104执行体现本发明优选实施例各个方面的步骤或者要素,包括存取数据库156-157。在一个实施例中,应用140包括多个被设置为构造GUI单元的servlet,之后由浏览器程序122呈现servlet。在经由应用140存取远程数据库157的情况下,用位置规格配置数据库抽象部件148,该位置规格标识包含要检索的数据的数据库。以下将更具体描述此后一实施例。
图1只是网络相连的客户计算机102和服务器计算机104的一个硬件/软件配置。本发明的实施例能应用到任何类似的硬件配置,而不必考虑计算机系统是否复杂,是否多用户计算设备,单用户工作站,或者没有自身的非易失存储设备的网络设备。另外,可以理解,虽然提及特定标记语言(包括HTML),然而本发明不限于特定语言,标准或者版本。因此,本领域的技术人员会认识到,本发明既适合于其他标记语言,也适合于非标记语言,并且,本发明还适合于特定标记语言将来的改变,以及当前未知的其他语言。同样地,图1中所示的http服务器进程138只是示意性的,本发明也考虑到适合支持任何已知和未知协议的其他实施例。
环境的逻辑/实时视图
根据本优选实施例,图2A-B示出了发明的多个相关部件。请求方实体(例如,一个应用140)发出由请求方实体的相应应用查询规格142定义的请求202。结果查询202在这里通常被称为“抽象查询”,因为查询是根据抽象(例如,逻辑)域,而不是通过直接引用数据库156-157中的底层物理数据实体来构造的。结果,可以定义独立于所使用的特定底层数据表示的查询。在一个实施例中,应用查询规格142包括用于数据选择的标准(选择标准204),以及根据选择标准204要返回的域的显式规格(返回数据规格206)。
由数据库抽象部件148定义由应用查询规格142指定并用于构造抽象查询202的逻辑域。通常,数据库抽象部件148将信息公开为可用于由应用140发出的查询(例如,抽象查询202)的一组逻辑域,以规定数据选择标准,以及规定查询操作回送的结果数据的形式。以独立于数据库156-157中正使用的底层数据表示的方式定义逻辑域,由此,容许要形成的被松耦合到底层数据表示的查询。
通常,数据库抽象部件148包括多个域规格2081,2082,2083,2084和2085,(作为示例,示出了五个),合称为域规格208。特别地,为每个可用于构造抽象查询的逻辑域提供域规格。每个域规格包括逻辑域名2101,2102,2103,2104和2105(合称为域名210)和相关的存取方法2121,2122,2123,2124和2125(合称为存取方法212)。存取方法将逻辑域名关联(即,映射)到数据库中(例如,数据库156之一)的特定物理数据表示2141,2142,....214N。通过图解的方式,示出了两个数据表示,即XML数据表示2141和关系数据表示2142。然而,物理数据表示214N指明考虑到了任何已知或未知的其他数据表示。
根据要支持的逻辑域的不同类型的数量,考虑任意数量的存取方法。在一个实施例中,提供了存取简单域,过滤域和合成域的方法。域规格2081,2082和2085分别示例了简单域存取方法2121,2122和2125。简单域被直接映射到底层物理数据表示的特定实体(例如,映射到所给数据库表和列的域)。通过图解的方式,在图2B中所示的简单域存取方法2121将逻辑域名2101(“FirstName”)映射到名为“contact”的表中名称为“f_name”的列。域规格2083例示了过滤域存取方法2123。过滤域标识相关物理实体并提供用于在物理数据表示内定义特定项子集的规则。在图2B所提供的示例中,过滤域存取方法2123将逻辑域名2103(“AnyTownLastName”)映射到名为“contact”的表中名称为“l_name”的列中的物理实体,并为城市Anytown中的个人定义了过滤器。过滤域的另一个示例是New York ZIP码域,其映射到ZIP码的物理表示,并将数据唯一限定到针对纽约州定义的那些ZIP码。域规格2084示例了合成域存取方法2124。合成存取方法使用作为存取方法定义的一部分提供的表达式由一个或多个物理域计算逻辑域。这样,可以计算出底层物理数据表示中不存在的信息。在图2B所图解的示例中,合成域存取方法2123将逻辑域名2103“AgeIndecades”映射到“AgeInYears/10”。另一个示例是销售税域,其通过将销售价格域乘以销售税率而合成。
本发明考虑到底层数据的任意给定数据类型的格式(例如,日期,十进制数等等)也许各不相同的情况。因此,在一个实施例中,域规格208包括类型属性,其反映了底层数据的格式。然而,在另一个实施例中,域规格208的数据格式与相关底层物理数据不同,在此情况下,存取方法负责以请求方实体所假定的适当格式返回数据。于是,存取方法最好应知道假定的数据格式(即,根据逻辑域),以及底层物理数据的实际格式。然后,存取方法能将底层物理数据转换为逻辑域的格式。
通过示例,图2中所示的数据库抽象部件148的域规格208代表被映射到关系数据表示2122中表示的数据的逻辑域。然而,数据库抽象部件148的其他实例将逻辑域映射到其他的物理数据,例如XML。另外,在一个实施例中,以针对过程数据表示的存取方法配置数据库抽象部件148。下面参照图8说明这种数据库抽象部件148的一个实施例。
以下,在表I中图解示出了对应于图2中所示的抽象查询202的抽象查询。通过图解方式,使用XML定义数据库抽象148。然而,可以使用其他任何有效的语言。
表I查询示例
001<?xml version=″1.0″?>
002<!--Query string representation:(FirstName=″Mary″AND LastName=
003″McGoon″)OR State=″NC″-->
004
005
006
007008internalID=″1″/>
009010internalID=″3″relOperator=″AND″>
011
012013relOperator=″OR″>
014

015
016
017
018
019

020

图解性地,表I中所示的抽象查询包括选择规格(行005-014),选择规格包含选择标准和结果规格(行015-019)。在一个实施例中,选择标准由域名(对于逻辑域),比较操作符(=,>,<,等等)和值表达式(正进行比较的域)组成。在一个实施例中,结果规格是要作为查询执行结果回送的抽象域的列表。抽象查询中的结果规格可以由域名和排序标准组成。
以下在表II中示出了对应于表I中抽象查询的数据库抽象部件148的图解实例。通过图解方式,使用XML定义数据库抽象148。然而,可以使用任何其他语言。
表II数据库抽象示例
001<?xml version=″1.0″?>
002
003
004
005
006/Simple>
007
008
009
010
011012
013

014
015
016
017018
019

020
021
022
023

图3示出了图解性运行时方法300,其示例了运行时部件150操作的一个实施例。当运行时部件150接收抽象查询的实例作为输入时(例如,图2中所示的抽象查询202),在步骤302进入方法300。在步骤304,运行时部件150读取并解析抽象查询的实例,并定位各选择标准和所希望的结果域。在步骤306,运行时部件150进入循环(包括步骤306,308,310和312),以处理抽象查询中出现的每个查询选择标准声明,从而构建具体查询的数据选择部分。在一个实施例中,选择标准由域名(对于逻辑域),比较操作符(=,>,<,等等)和值表达式(正进行比较的域)组成。在步骤308,运行时部件150使用来自抽象查询的选择标准的域名在数据库抽象部件148中查找域的定义。如上所述,域定义包括用于存取与域相关的物理数据的存取方法的定义。之后,运行时部件150构造(步骤310)正被处理的逻辑域的具体查询成分(querycontribution)。如在这里定义的,具体查询成分是具体查询的一部分,其被用于根据当前逻辑域执行数据选择。具体查询是用象SQL和XML语言表示的查询,并且与所给物理数据库(例如,关系数据库和XML数据库)的数据一致。因此,具体查询被用于定位和检索物理数据库(如图1中数据库156-157所示)的数据。然后,将针对当前域生成的具体查询成分添加到具体查询声明中。然后,方法300返回到步骤306,以便开始处理抽象查询的下一个域。因此,对于抽象查询中的每个数据选择域,重复在步骤306进入的过程,从而将附加内容加到最终要执行的查询中。
构造完具体查询的数据选择部分后,运行时部件150识别要作为查询执行结果返回的信息。如上述,在一个实施例中,抽象查询定义要作为查询执行结果返回的抽象域的列表,在这里被称为结果规格。抽象查询中的结果规格可以由域名和排序标准组成。因此,方法300在步骤314进入循环(由步骤314,316,318和320定义),以便将结果域定义加到正生成的具体查询中。在步骤316,运行时部件150在数据库抽象部件148中查找结果域名(来自抽象查询的结果规格),然后从数据库抽象148检索结果域定义,以便识别当前逻辑结果域要返回的数据的物理位置。然后,运行时部件150构造(如步骤318)逻辑结果域的(具体查询中标识要被返回的数据的物理位置的)具体查询成分。然后,在步骤320,将具体查询成分加到具体查询声明中。一旦处理完抽象查询中的每一个结果规格,则在步骤322执行查询。
参照图4,根据步骤310和步骤318,描述用于构造逻辑域的具体查询成分的方法400的一个实施例。在步骤402,方法400查询与当前逻辑域相关的存取方法是否简单存取方法。如果是简单存取方法,根据物理数据位置信息构造具体查询成分(步骤404),然后,根据上述方法300,继续进行处理。否则,继续处理到步骤406,以查询与当前逻辑域相关的存取方法是否过滤存取方法。如果是过滤存取方法,根据某物理数据实体的物理数据位置信息,构造具体查询成分(步骤408)。在步骤410,用附加逻辑(过滤器选择)扩展具体查询成分,该逻辑用于与物理数据实体相关的子集数据。然后,根据上述方法300,继续进行处理。
如果存取方法不是过滤存取方法,处理从步骤406进行到步骤412,在步骤412中,方法400查询存取方法是否合成存取方法。如果存取方法是合成存取方法,在步骤414定位并检索合成域表达式中每个子域引用的物理数据位置。在步骤416,合成域表达式的逻辑域引用被合成域表达式的物理位置信息替换,从而生成具体查询成分。然后,根据上述方法300,继续进行处理。
如果存取方法不是合成存取方法,处理从步骤412进行到步骤418。步骤418代表如本发明实施例所预期的任何其他存取方法类型。然而,应当理解,在其中所考虑的实施例比所有可实现的存取方法少。例如,在特定实施例中仅使用了简单存取方法。在另一个实施例中,只使用了简单存取方法和过滤存取方法。
如上所述,如果逻辑域规定的数据格式不同于底层物理数据,必须执行数据转换。在一个实施例中,当根据方法400构造逻辑域的具体查询成分时,针对各自的每个存取方法执行初始转换。例如,可以作为步骤404,408和416的一部分,或者随后立即执行转换。当在步骤322执行查询之后,执行从物理数据格式到逻辑域格式的转换。当然,如果逻辑域定义的格式与底层物理数据相同,则不必进行转换。
数据库抽象部件的其他实施例
在一个实施例中,为每个单独的物理数据表示214提供不同的单数据库抽象部件148(在图2B和2C中)。在可选实施例中,单数据库抽象部件148包含用于两个或更多个物理数据表示214的域规格(具有相关存取方法)。在另一个实施例中,提供多个数据库抽象部件148,其中每个数据库抽象部件148公开相同底层物理数据(其可以包括一个或多个物理数据表示214)的不同部分。这样,多个用户可以同时使用单个应用140来存取同一底层数据,其中,由各自的数据库抽象部件148确定暴露给应用的底层数据的特定部分。在名称为“DYNAMIC ENDUSER SPECIFIC CUSTOMIZATION OF AN APPLICATION’SPHYSICAL DATA LAYER THROUGH A DATA REPOSITORYABSTRACTION LAYER”(应用的物理数据层到数据库抽象层的动态终端用户特定定制),并转让给国际商用机器公司的待审美国专利申请(代理案卷ROC920020088)中,更具体地说明了此后者实施例。
在任何实例中,数据库抽象部件148包含(或引用)至少一个存取方法,该方法将逻辑域映射到物理数据。对于这一点,如前述实施例说明的,存取方法描述了定位并操作对应于逻辑域的数据的物理表示的手段。
在一个实施例中,扩展数据库抽象部件148到包括大量数据源的描述,数据源可以是本地的和/或分布于整个网络环境。数据源可以使用大量不同数据表示和数据存取技术。在一个实施例中,除了用于存取数据的方法以外,这通过用定义与逻辑域相关的数据的位置的位置规格配置数据库抽象部件148的存取方法来实现。
现在参照图5,所示为具有多个数据源(库)502的环境500的逻辑/运行时视图,并图解了在这样的环境中数据库抽象部件148的操作的一个实施例。要经由数据库抽象部件148存取的数据源502可以是本地的,远程的或者两者都有。在一个实施例中,数据源502代表图1中所示的数据库156-157。通常,数据库抽象部件148与上述那些实施例配置相似。同样地,数据库抽象部件148有逻辑域定义和针对每个逻辑域定义的相关存取方法。然而,与其他只存取单一数据源的实施例比较,除了物理表示规格之外,现在还用位置规格配置存取方法。位置规格描述了位置(即,数据源),在位置规格中定位要存取的数据(即,与逻辑域定义相关的数据)。然而,在一个实施例中,可以预期,某些存取方法可以不用位置规格进行配置,而是默认的指向本地数据源。
通常,图5示出了应用140,抽象查询规格142(这里也被称为应用查询规格),数据库抽象部件148(用于将逻辑域映射到存取方法),和运行时部件150,运行时部件150负责将抽象查询转变成数据库502所支持的一个或多个数据存取请求,该数据库502包含正被查询的物理信息。与以上描述的一些实施例相比较,图5的数据库抽象部件148和运行时部件150被配置为支持具有相关数据的逻辑域的定义和查询,所述相关数据可以分布于多个本地和/或远程物理数据库502(在这里也被称为本地/远程数据源502)上,并且可以经由大量基于查询和基于过程的接口进行存取。
针对这一点,应用140根据抽象查询规格142定义其数据需求,抽象查询规格142包含查询选择和/或基于逻辑域,而不涉及实际数据的物理位置或表示的更新逻辑。数据库抽象部件148包括逻辑域定义504和针对每个逻辑域的存取方法506。逻辑域定义504描述应用140可用的逻辑域。在一个方面,数据库抽象部件148管理应用140可以使用的信息。从而使得应用能使用在新的本地或者远程数据源中新逻辑域的增加。每个存取方法506定义了逻辑域和本地/远程数据源502中逻辑域的物理表示之间的映射。可以参照图6理解此关系。
图6图解示出了抽象查询602,抽象查询602包括多个逻辑域6041....604N(合称为逻辑域604)。通过定义特定数据库抽象部件148,每个逻辑域604与存取方法6081,....608N(全体称为存取方法608)相关联(线606表示)。存取方法608中的物理表示信息包括要使用的存取方法的名称(这里用“F1的存取方法”,“F2的存取方法”等等表示),和要传递给所命名的存取方法、描述如何存取与逻辑域相关的物理数据的多个参数。通常,这样的参数包括定位符参数6101....610N(合称为定位符参数610;在这里还被称为位置规格)和其他存取数据所需的存取参数。所给数据库抽象部件实例可以表示由多个本地和远程物理数据库管理的信息。
在图7-8中示出了图解实施例,其中可以用位置规格和其他存取数据所需的存取参数配置数据库抽象部件实例。首先参照图7,所示为用关系存取方法配置的数据库抽象部件的域规格700。域规格700特别针对由域名称702“CreditRatingDescription”标识的特定逻辑域,并具有所关联的存取方法。所关联的存取方法名称704“simple-remote”指出存取方法是简单域存取方法,其中逻辑域被直接映射到底层物理数据表示的特定实体,并且数据是远程定位的。在此实例中,逻辑域被映射到给定数据库表“credit_t”和列“desc”。“URL”是位置规格(定位符参数),其规定了物理数据的位置。在此实例中,“URL”包括使用的JDBC驱动程序的标识符,存有数据的远程系统名称(remotesystem.abc.com)和包含数据的数据库模式(creditscheme)。“JDBC Driver”是针对此类远程数据库实施SQL存取的JAVA类的名称。
现在参照图8,所示为用过程存取方法配置的数据库抽象部件的域规格800。域规格800特别针对由域名称802“creditRating”标识的特定逻辑域,并具有所关联的存取方法。所关联的存取方法名称804“procedural”指出存取方法是过程存取方法。“Service Spec”标识要存取的web服务的web服务描述语言(WSDL)定义。WSDL是web服务的标准接口定义语言。web服务是用于启动软件应用的标准方法,该软件应用使用已建立的web通信基础设施和标准的数据表示技术,例如XML来表示调用方应用和所启动的web服务之间传递的信息。“Service Name”标识“Service Spec”内定义的可能服务组中要被访问的web服务的名称。“Port Name”标识“Service Spec”内定义的可能端口名称组中要访问的服务的端口名称。所命名的端口定义服务的网络位置。“Operation”是要启动的操作的名称。web服务能支持多于一个的被称为“操作”的函数。当启动web服务时,“Input”标识所需的输入。在此实例中,提供了last name值作为对服务的输入。“Output”标识与此逻辑域相关的输出数据项。当服务被调用时,服务可返回几部分输出。因此,“Output”标识定义与当前逻辑域相关的该部分输出数据。
注意,在过程存取方法实例中,本地数据的数据库抽象部件的域规格看起来与图8中所示的用于存取远程数据的域规格800基本相似。唯一的区别在于,在本地实例中,引用的WSDL文档会有回指向服务正在运行的本地服务器的URL。
再次参照图5,现在描述运行时部件150操作的一个实施例。通常,运行时部件负责根据抽象查询构造并执行可执行的查询。针对此点,在模块510,运行时部件150解析抽象查询,并使用数据库抽象部件148将针对一个或多个逻辑域的引用映射到其相应的物理位置和存取方法(在这里,全体被合称为存取方法506)。在一个实施例中,运行时部件150划分(块512)全部物理数据查询需求为组(被称为“子查询”514),组表示使用相同存取方法存取同一物理源。然后执行“子查询”(块516)。在全部查询结果520被回送给应用140之前,合并并规格化每一个子查询514的结果(块518)。在一方面,此查询划分实现方案容许运行时部件150利用多处理器硬件架构并行地运行多个子查询。
在一个实施例中,运行时部件150还管理本地数据高速缓存522。本地数据高速缓存522包含针对某些逻辑域检索的数据,并且在随后查询期间被用作查找允许高速缓存的数据库抽象部件中所标识的逻辑域的第一选择。以被高速缓存的形式进行有利地管理的逻辑域是那些取值相对静态并且/或者导致显著存取开销的逻辑域(在这里,按照获取数据所需的时间,或存取数据的费用开支来测量开销,假定在每次使用付费(pay-per-use)模型中管理某些信息)。
在各种实施例中,优选提供了超出现有技术的许多优点。在一个方面,优选通过在应用查询规格和底层数据表示之间定义松耦合来获得优势。不是用特定的表,列和关系信息对应用编码,如使用SQL的实例,应用以更抽象的形式定义数据查询需求,之后在运行时,将该需求绑定到特定物理数据表示。即使修改了底层数据表示,或者请求方实体将被用于的物理数据表示比开发请求方实体时使用的物理数据表示更新,松查询数据耦合仍然优选地允许请求方实体(例如,应用)正常工作。在修改或重新构造所给物理数据表示的实例中,优选地更新相应数据库抽象以反映对底层物理数据模型的改变。查询可使用相同的逻辑域组,并且该域组仅仅被绑定到物理数据模型中的不同实体或位置。结果,即使相应的物理数据模型已经经过重大的改变,写到抽象查询接口的请求方实体仍然继续工作,并且没有改变。在请求方实体将用于比开发请求方实体时所使用的更新的物理数据表示的情况下,可以使用相同的技术(例如,关系数据库),但遵循不同的命名和组织信息策略(例如,不同的模式),以实现新的物理数据模型。新模式将包含可以通过使用简单,过滤以及合成域存取方法技术被映射到应用所需的逻辑域组的信息。可选地,新的物理表示可以使用可选的技术来表示相似的信息(例如,相对关系数据库系统,使用基于XML的数据库)。在任一情况下,通过提供可选数据库抽象(其将查询中引用的域与新物理数据模型中的位置和物理表示相映射),被编写为使用抽象查询接口的请求方实体能轻易地移植为使用新物理数据表示。
在另一个方面,易于使用应用构造器,并且便利终端用户。在底层物理数据库中使用抽象层表示逻辑域,使应用开发者能关注于关键应用数据需求,而不必关心底层数据表示的细节。结果,在应用开发过程中获得更高的产出,并减少了错误率。针对终端用户,数据库抽象优选提供数据过滤机制,公开相关数据并隐藏开发指定查询的特定类别终端用户不需要的无关内容。
此外,能够有利地利用存在多个数据源的情况。通过用位置规格配置数据库抽象部件,能更适宜地存取多个数据源,不管数据源是本地的或是远程的。以此方式,提供了能够利用当今流行的分布式环境的基础结构。
实现此模型的解决方案使用所提供的抽象查询规格来描述其信息需求,而不用考虑所涉及数据的位置或者表示。查询被提交给运行时部件,运行时部件使用数据库抽象部件确定用于存取查询中表示的每个信息逻辑片的位置和方法。在一个实施例中,运行时部件还包括上述数据高速缓存功能,以便访问数据高速缓存。
优选地,此模型容许以独立于解决方案所使用的数据的物理位置或表示的方式开发解决方案,使得能将解决方案容易地部署到许多不同数据拓扑上,并且在随时间推移而重新定位或重新组织数据的情况下,允许解决方案仍然有效。优选地,此解决方案还简化了扩展方案以利用附加信息的任务。在抽象查询级实现扩展,并且不需要增加特定于所存取的新数据的位置或表示的软件。此方法优选地为软件应用提供独立于用于存取数据的特定方法和所引用的每个数据项的位置的通用数据存取方法。可以通过关系模型(在现有的关系数据库系统中),层次模型(如XML)或者某些其他物理数据表示模型表示经由抽象查询所存取的物理数据。还支持大量数据存取方法,包括那些基于现有的数据查询方法,例如SQL和XQuery的方法,以及涉及编程访问信息的方法,例如通过web服务调用(例如使用SOAP)或通过HTTP请求检索数据。
应当注意到,在这里涉及的任何特定值,定义,程序语言和示例,仅用于说明目的。因此,本发明不限于任何特定的说明和示例。另外,虽然参参考选择操作说明了本发明的各个方面,然而其他输入/输出操作也优选得到考虑,包括熟知的操作,例如,增加,修改,插入,删除,等等。当然,某些存取方法会约束抽象查询函数的类型,其可以使用利用了特定存取方法的域进行定义。例如,涉及合成存取方法的域不是修改,插入和删除的可行目标。