CN100465953C - 用逻辑模型查询物理字段或处理抽象查询的方法及系统 - Google Patents
用逻辑模型查询物理字段或处理抽象查询的方法及系统 Download PDFInfo
- Publication number
- CN100465953C CN100465953C CNB2004800231937A CN200480023193A CN100465953C CN 100465953 C CN100465953 C CN 100465953C CN B2004800231937 A CNB2004800231937 A CN B2004800231937A CN 200480023193 A CN200480023193 A CN 200480023193A CN 100465953 C CN100465953 C CN 100465953C
- Authority
- CN
- China
- Prior art keywords
- field
- logical
- definition
- data
- model
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2425—Iterative querying; Query formulation based on the results of a preceding query
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
Abstract
本发明总的来说涉及访问通过抽象模型(512)抽象表示的数据的系统、方法和制品。在一个实施例中,数据抽象模型(512)提供了与数据表示的具体方式无关的底层数据储存库(518)的逻辑视图。对于给定抽象查询(506),用附加计算机选择结果字段(520)扩充抽象查询(506)。另外,还用与已执行抽象查询的结果字段(514)相对应的字段(528)扩充数据抽象模型(512)。
Description
交叉参考相关申请
授权给美国国际商用机器公司(IBM)、发明名称为“通过数据模式和查询抽象概念对分布式数据源的远程数据访问和整合(REMOTE DATAACCESS AND INTEGRATION OF DISTRIBUTED DATA SOURCESTHROUGH DATA SCHEMA AND QUERY ABSTRACTION)”的美国专利申请第一0/131,984号更详细地描述了一种访问多个数据源的途径。
技术领域
本发明总的来说涉及数据处理,尤其涉及通过逻辑框架的数据访问。
背景技术
数据库是计算机化信息存储和检索系统。最流行的数据库类型是关系数据库,即,将数据定义成可以以许多不同方式重新组织和访问它的表格式数据库。关系数据库管理系统(DBMS)是将关系技术用于存储和检索数据的数据库管理系统。
与具体结构无关,在DBMS中,请求实体(例如,应用程序、操作系统或用户)通过发出数据库访问请求来要求访问指定数据库。例如,这样的请求可以包括简单目录查找请求或事务处理,以及在数据库中执行读取、改变和添加指定记录的事务处理的组合。这些请求是利用诸如结构化查询语言(SQL)之类的高级查询语言作出的。举例来说,SQL用于作出从诸如美国国际商用机器公司(IBM)DB2、微软公司的SQL Server和来自Oracle公司、Sybase公司和计算机协会的数据库产品之类的数据库中获取信息和更新这样的数据库的交互式请求。术语“查询”命名一组从存储的数据库中检索数据的命令。查询采取让编程人员和程序选择、插入、更新、找出数据的位置等的命令语言的形式。
在许多情况下,尤其在面向研究的环境中,分析信息的任务通常是牵涉到一组初始查询结果的生成、该组初始查询结果的分析以及将该组初始查询结果与其它可用信息比较、以产生另一组数据结果的多步迭代过程。例如,在医学研究环境下,可能提出第一次查询来找出满足特定诊断或测试结果概况的一组研究候选者。在大型数据储存库的环境中,可能需要花费许多时间和资源来处理这种性质的查询,在指定的判据错综复杂的情况下尤其如此。一旦查询结果返回,可能希望进行将第一次查询的结果与整个数据储存库中的其它信息相关联以找出例如与被发现满足在第一次查询中指定的特定诊断或测试结果概况的那些个体住在同一地址或同在城市内的所有个体的第二次查询。于是,需要将第一次查询返回的信息与数据储存库中的其它信息相关联以产生附加信息和知识发现。
不幸的是,当前解决这种情形的方法通常是相当人工而且易出错的。尤其,要求用户经过几个步骤以对照最初查询进行后续查询的形式保存来自最初查询的结果。在关系环境中,这要求创建用于保存最初查询的结果的表格。类似地,在基于XML(可扩充标记语言)的储存库中,需要将查询结果数据存储在储存库中以便再次查询。在每一种情况中,用户都需要理解用于表示初始查询结果的物理模式和表达将这种模式考虑进来的后续查询。此外,为了将初始查询结果与数据储存库中的其它信息相关联,用户必须明白查询结果组与数据储存库中的其它实体之间的关键关系,并且必须使这种关键关系包括在最初查询和相应结果组中,以便能够与数据储存库中的其余部分相关联。
因此,人们需要的是为数据分析提供灵活性的查询框架。
发明内容
本发明提供了通过抽象模型访问物理数据的方法、系统和制品。抽象模型包括描述和定义多个逻辑字段的元数据。
一个实施例提供了利用逻辑模型查询物理数据实体的物理字段的方法。该方法包括定义用以逻辑描述物理字段的逻辑模型;和对于包括查询条件和要返回的查询结果字段的每个抽象查询,将逻辑模型扩充成除了逻辑地描述物理字段外,还逻辑地描述根据查询结果字段为每个抽象查询返回的结果。
另一个实施例提供了利用逻辑模型查询数据的方法,该方法包括定义用以逻辑描述数据的逻辑模型,其中,逻辑模型包括映射到数据的物理实体的物理字段的多个逻辑字段定义;接收用户定义抽象查询,其中,用户定义抽象查询是利用逻辑模型的逻辑字段定义创建的,并且包括至少一个条件和从逻辑字段定义中选择的至少一个用户选择结果字段;用至少一个计算机选择结果字段扩充用户定义抽象查询,以生成扩充抽象查询;和其中,扩充抽象查询为用户选择结果字段和计算机选择结果字段的每一个返回结果;和扩充逻辑模型以便除逻辑地描述数据外,还逻辑地描述根据结果字段返回的结果。
另一个实施例提供了处理由逻辑字段定义的抽象查询的方法。该方法包括提供初始抽象数据模型,初始抽象数据模型定义被映射到具有特定模式的物理数据的多个逻辑字段和进一步定义多个逻辑字段的至少一部分之间的多种关系;接收包括至少一个条件和包括多个逻辑字段的至少一个的用户选择结果字段的第一抽象查询,根据用户选择结果字段与其它多个逻辑字段之间的定义关系,用从多个逻辑字段中选择的至少一个计算机选择逻辑字段扩充第一抽象查询;参照初始抽象数据模型将第一抽象查询变换成第一可执行查询;执行第一可执行查询;返回执行第一可执行查询产生的结果;和将至少一个附加逻辑字段加入初始抽象数据模型中,以生成第一扩充抽象数据模型,至少一个附加逻辑字段被映射到至少一部分结果。
再另一个实施例提供了包含程序的计算机可读媒体,其中,当该程序被执行时,进行与抽象查询和逻辑模型有关的操作,逻辑模型包括映射到数据的物理实体的物理字段的多个逻辑字段定义。该操作包括,对于包括查询条件和要返回的查询结果字段的每个抽象查询,用至少一个附加查询结果字段扩充抽象查询,从而生成扩充抽象字段;和对于根据已执行扩充抽象查询的查询结果字段返回结果的每个已执行扩充抽象查询,将逻辑模型扩充成逻辑描述为已执行扩充抽象查询返回的结果。
再另一个实施例提供了包含程序的计算机可读媒体,其中,当该程序被执行时,进行与抽象查询和逻辑模型有关的操作,逻辑模型包括映射到数据的物理实体的物理字段的多个逻辑字段定义。该操作包括接收用户定义抽象查询,其中,用户定义抽象查询是利用逻辑模型的逻辑字段定义创建的,并且包括至少一个条件和从逻辑字段定义中选择的至少一个用户选择结果字段;用至少一个计算机选择结果字段扩充用户定义抽象查询,以生成扩充抽象查询;和其中,扩充抽象查询为用户选择结果字段和计算机选择结果字段的每一个返回结果;和扩充逻辑模型以便除逻辑地描述数据外,还逻辑地描述根据结果字段返回的结果。
再另一个实施例提供了计算机系统,该计算机系统包括存储器和至少一个处理器,并且进一步包括:逻辑模型,该逻辑模型包括映射到数据的物理实体的物理字段的多个逻辑字段定义,从而该逻辑模型提供了数据的逻辑视图;抽象查询扩充器,被配置成(i)接收抽象查询,抽象查询包括至少一个条件和从逻辑模型的逻辑字段定义中选择的至少一个用户选择结果字段;和(ii)用从逻辑模型的逻辑字段定义中选择的至少一个计算机选择结果字段扩充抽象查询,从而生成扩充抽象查询;和逻辑模型生成器,被配置成根据(i)扩充抽象查询的结果字段;和(ii)为扩充抽象查询返回的结果,用附加逻辑字段定义扩充逻辑模型。
附图说明
通过结合附图对本发明的优选实施例进行详细描述,本发明的上述特征、优点和目的将更加清楚。
但是,请注意,这些附图只例示本发明的典型实施例,不应该认为是对本发明范围的限制,对于本发明,认可其它等效的实施例。
图1是例示性计算机结构的方块图;
图2是配置成通过物理数据源的抽象表示处理针对物理数据源的查询的本发明一个实施例的软件部件的关系图;
图3是例示运行期部件的操作的流程图;
图4是例示运行期部件的操作的流程图;
图5是示出配置成将结果字段加入抽象查询中的查询扩充器和配置成生成将逻辑字段映射到扩充查询结果的抽象数据模型的数据储存库抽象生成器的方块图;
图6是例示根据用户指定结构字段和其它逻辑字段之间的定义关系扩充抽象查询的方块图;
图7是例示根据扩充抽象查询的结果生成抽象数据模型的方块图;
图8是例示扩充抽象查询的算法的流程图;
图9是例示根据扩充查询扩充抽象数据模型的算法的流程图;和
图10-12是为了根据每一个都由抽象数据模型定义的显示逻辑字段构建抽象查询而配置的用户界面的屏幕。
具体实施方式
引言
本发明的一个实施例被具体为像如下所述的供计算机系统使用的程序产品。该程序产品的程序定义实施例的功能(包括本文所述的方法)并可以包含在各种信号承载媒体中。例示性的信号承载媒体包括(但不局限于此):(i)永久存储在不可写存储媒体(例如,计算机内像可被CD-ROM驱动器读取的CD-ROM盘那样的只读存储器件)上的信息;(ii)存储在可写存储媒体(例如,磁盘驱动器内的软盘或硬盘驱动器内的硬盘)上的可变更信息;或(iii)通过包括无线通信在内的通信媒体(譬如,通过计算机或电话网络)传送到计算机的信息。后一个实施例尤其包括从因特网和其它网络下载的信息。当携带指向本发明的功能的计算机可读指令时,这样的信号承载媒体代表本发明的实施例。
一般说来,为了实现本发明的实施例而执行的例程可以是操作系统或特定应用程序的一部分、部件、程序、模块、对象或指令序列。本发明的软件通常包括将由本地计算机呈现成机器可读格式的众多指令,因此是可执行指令。此外,程序包括相对于程序来说驻留在本地或在存储器或存储设备中找到的变量和数据结构。另外,下文描述的各种程序可以根据在本发明的特定实施例中实现它们的应用来识别。但是,应该认识到,使用如下的任何具体术语仅仅是为了方便,因此,本发明不应该局限于只用在这样的术语所标识和/或暗示的任何特定应用中。
在一个实施例中,为了与物理表示数据的具体方式无关地访问(例如,查询和修改)数据,提供了本文也称为数据抽象模型(DAM)的具体数据定义框架。DAM包括描述和定义映射到物理数据的多个逻辑字段的元数据。将用户指定查询扩充成包括例如将查询结果与其它物理数据相关联所需的附加返回字段。另外,将DAM扩充成包括映射到查询的结果的字段的附加逻辑字段。还可以将DAM扩充成反映结果与整个数据库的其它数据之间的关系。然后,根据扩充DAM进行后续查询。
环境的物理看法
图1描绘了可以实现本发明实施例的联网系统100的方块图。一般说来,联网系统100包括客户(即,一般地说,是像用户或应用程序那样的任何请求实体)计算机102(示出了三个这样的客户机计算机102)和至少一个服务器计算机104(示出了一个这样的服务器计算机104)。客户计算机102和服务器计算机104通过网络126连接。一般说来,网络126可以是局域网(LAN)和/或广域网(WAN)。在具体实施例中,网络126是因特网。但是,请注意,本发明的各个方面不需要在分布式环境下实现。这样,客户计算机102和服务器计算机104更一般地分别代表发出查询的任何请求实体(譬如,用户或应用程序)和配置成管理查询的接收实体。
客户计算机102包括通过总线120与存储器112、存储设备114、输入设备116、输出设备119和网络接口设备118连接的中央处理单元(CPU)110。输入设备116可以是将输入给予客户计算机102的任何设备。例如,可以使用键盘、小键盘、光笔、触摸屏、跟踪球、语音识别单元、或音频/视频播放器等。输出设备119可以是将输出给予用户的任何设备,例如,任何传统显示屏。尽管与输入设备116分开示出,但输出设备119和输入设备116可以组合在一起。例如,可以使用集成了触摸屏的显示屏、集成了键盘的显示器、或与文本语音变换器组合在一起的语音识别单元。
网络接口设备118可以是配置成允许通过网络126在客户计算机102和服务器计算机104之间进行网络通信的任何入口/出口设备。例如,网络接口设备118可以是网络适配器或其它网络接口卡(NIC)。
存储设备114最好是直接访问存储设备(DASD)。尽管被显示成一个单元,但它可以是固定和/或可换式存储设备,譬如,固定盘驱动器、软盘驱动器、磁带驱动器、可换式存储卡、或光存储设备的组合。存储器112和存储设备114可以是覆盖多个基本和次要存储设备的一个虚拟存储空间的一部分。
存储器112最好是大到足以保存本发明的必要编程和数据结构的随机存取存储器。虽然存储器112被显示成单个实体,但应该明白,存储器112事实上可以包括多个模块,并且存储器112可以以多个层次存在,从高速寄存器和高速缓冲存储器到低速但大容量的DAMM芯片。
存储器112还被显示成包含浏览器程序122,当在CPU 110上被执行时,浏览器程序122提供在各种服务器104之间导航和在一个或多个服务器104上定位网络地址的支持。在一个实施例中,浏览器程序122包括基于万维网的图形用户界面(GUI),它允许用户显示超文本标记语言(HTML)信息。但是,更一般地说,浏览器程序122可以是能够呈现从服务器计算机104发送的信息的任何基于GUI的程序。
服务器计算机104在物理上可以以与客户计算机102相似的方式布置。于是,服务器计算机104一般被显示成包括通过总线136相互耦合的CPU130、存储器132和存储设备134。存储器132可以是大到足够保存位于服务器计算机104上的必要编程和数据结构的随机存取存储器。
服务器计算机104一般处在被显示成驻留在存储器132中的操作系统138的控制之下。操作系统138的例子包括IBM 、UNIX和Microsoft等。更一般地说,可以使用能够支持本文描述的功能的任何操作系统。
存储器132进一步包括一个或多个应用程序140和抽象查询界面146。应用程序140和抽象查询界面146是包括在各个时刻驻留在计算机系统100中的各种存储器和存储设备中的多个指令的软件产品。当由服务器104中的一个或多个处理器130读取和执行,应用程序140和抽象查询界面146时,计算机系统100完成执行体现本发明的各个方面的步骤或单元所需的步骤。应用程序140(更一般地说,任何请求实体,包括操作系统138和作为最高层次的用户)针对数据库发出查询。针对其发出查询的例示性源包括总称为数据库156-157的本地数据库1561...156N和远程数据库1571...157N。举例来说,数据库156被显示成存储设备134中的数据库管理系统(DBMS)154的一部分。更一般地说,正如本文所使用的那样,术语“数据库”指的是与具体物理表示无关的任何数据集合。举例来说,数据库156-157可以根据关系模式(可通过SQL查询访问)或根据XML模式(可通过XML模式访问)来组织。但是,本发明不局限于具体的模式和预期可推广到现在未知的模式。正如本文所使用的那样,术语“模式”一般指通过数据抽象模型148描述的具体数据布置。
在一个实施例中,应用程序140发出的请求根据与每个应用程序140一起包括的应用查询规定142来定义。应用程序140发出的请求可以预先定义(即,被硬编码成应用程序140的一部分),也可以响应输入(例如,用户输入)生成。在每一种情况下,查询(本文称为“抽象查询”)都是由利用通过抽象查询界面146所定义的逻辑字段构成的。具体地说,用在抽象查询中的逻辑字段通过抽象查询界面146的数据抽象模型(DAM)148来定义。抽象查询由运行期部件150来处理,运行期部件150将抽象查询变换成与包含在一个或多个数据库156-157中的数据的物理表示一致的形式(本文称为具体查询)。具体地说,这种处理由运行期部件150的物理查询构建器161来完成。运行期部件150还包括分析工具162,如此称呼是因为它使本文所述的数据分析特征能够得以实现。举例来说,分析工具162包括DAM生成器164、查询扩充器166和表格构建器168。请注意,运行期部件150的功能仅仅是例示性的。本领域的普通技术人员应该识别到,这些功能可以在其它地方(例如,在数据库管理系统154本身中)实现。下面进一步描述抽象查询界面146的每个部件/功能。
运行期部件150处理的抽象查询可以配置成访问数据和返回结果,或修改(即,插入、删除或更新)数据。在一个实施例中,用户通过图形用户界面(GUI)指定查询的元素。GUI的内容由应用程序140生成。在具体实施例中,GUI内容是可以借助于浏览器程序122呈现在客户计算机系统102上的超文本标记语言(HTML)内容。于是,存储器132包括适合为来自客户计算机102的服务请求的超文本标记语言(http)服务进程152(例如,万维网服务器)。例如,进程152可以响应请求来访问(举例来说,驻留在服务器104上的)数据库156。对来自数据库156-157的数据的到达客户请求调用应用程序140。当处理器130执行应用程序140时,服务器计算机104执行包括访问数据库156-157、体现本发明的各个方面的步骤或单元。在一个实施例中,应用程序140包括多个小服务程序,这些小服务程序被配置成构建然后由浏览器程序122呈现的GUI元素。在通过应用程序140访问远程数据库157的情况下,用一种位置规定配置数据抽象模型148,该位置规定标识包含要检索的数据的数据库。下面将更详细的描述这后一个实施例。
图1仅仅是联网客户计算机102和服务器计算机104的硬件/软件配置。本发明的实施例可应用于任何可比硬件配置,与计算机系统是复杂、多用户计算设备、单用户工作站、还是不具有它们自己的非易失性存储设备的网络器具无关。并且,应该明白,虽然引用了包括HTML在内的特定标记语言,但本发明不局限于特定语言、标准或版本。于是,本领域的普通技术人员应该认识到,本发明可适用于其它标记语言,以及非标记语言,并且本发明还适应特定标记语言的未来变化,以及适用于现在未知的其它语言。同样,如图1所示的http服务进程152仅仅是例示性的,适合支持任何已知和未知协议的其它实施例也是值得期待的。
环境的逻辑/运行期看法
图2A-B显示了本发明的多个关联部分。请求实体(例如,应用程序140之一)发出如请求实体的各自应用查询规定142定义的查询202。产生的查询202本文一般称为“抽象查询”,因为该查询是根据抽象(即,逻辑)字段构成的,而不是直接参照数据库156-157中的底层物理数据实体构成的。结果,可以定义与使用的特定底层数据表示无关的抽象查询。在一个实施例中,应用查询规定142可以包括用于数据选择的判据(选择判据204)和要根据选择判据204返回的字段的显式规定(返回数据规定206)。
应用查询规定142规定并用于构成抽象查询202的逻辑字段通过数据抽象模型148来定义。一般说来,数据抽象模型148将信息展示成一组逻辑字段,该组逻辑字段可以用在应用程序140发出的查询(例如,抽象查询202)内,以规定用于数据选择的判据并且规定从查询操作返回的结果数据的格式。逻辑字段被定义成与用在数据库156-157中的底层数据表示无关,从而形成与底层数据表示松散耦合的查询。DAM 148的逻辑字段所映射到的数据可以位于数据的单个储存库(即,源)或多个不同数据储存库中。因此,DAM 148可以提供一个或多个底层数据储存库的逻辑视图。利用数据储存库的抽象表示,可以更容易地改变或替换底层物理表示,而不会影响作出改变的应用程序。相反,不按应用程序要求的改变来改变抽象表示。另外,针对可以具有不同默认值或所要求字段的相同底层数据库模式,可以将多个抽象数据表示定义成支持不同应用程序。
一般说来,数据抽象模型148包括总称为字段规定208的多个字段规定2081、2082、2083、2084和2085(举例示出5个)。具体地说,为可用于构成抽象查询的每个逻辑字段提供字段规定。每个字段规定包括逻辑字段名2101、2102、2103、2104和2105(总称为字段名210)和相关访问方法2121、2122、2123、2124和2125(总称为访问方法212)。这些访问方法根据本文称为物理位置参数的参数,将逻辑字段名与数据库(例如,数据库156之一)中的特定物理数据表示2141、2142、2143、2144和2145相关联(即,将前者映射到后者)。举例来说,示出了两种数据表示,即,XML数据表示2141和关系数据表示2142。但是,物理数据表示124N指示期待任何其它数据表示,无论已知的还是未知的。
依赖于得到支持的逻辑字段的不同类型的数量,可以期待任意数量的访问方法。在一个实施例中,提供用于简单字段、过滤字段和复合字段的访问方法。字段规定2081、2082和2085分别示范了简单字段访问方法2121、2122和2125。简单字段被直接映射到具有底层物理数据表示的特定实体(例如,映射到给定数据库表格和列的字段)。举例来说,如图2B所示的简单字段访问方法2121将逻辑字段名2101(“FirstName”)映射到表名“contact”中的列名“f_name”,其中,表名和列名是访问方法2121的物理位置参数。字段规定2083示范了过滤字段访问方法2123。过滤字段标识相关物理实体和提供用于定义物理数据表示内的一小组特定项目的规则。在图2B中提供了过滤字段访问方法2123将逻辑字段名2103(“AnytownLastName”)映射表名“contact”中的列名“I_name”中的物理实体和为AnyTown城市中的个体定义过滤器的例子。过滤字段的另一个例子是映射到邮政代码的物理表示和使数据仅限于为NewYork州定义的那些邮政代码的New York邮政代码字段。字段规定2084示范了复合字段访问方法2124。复合字段访问方法利用作为访问方法定义的一部分供应的表达式从一个或多个物理字段中计算逻辑字段。这样,可以计算出未存在于底层数据表示中的信息。在如图2B所示的例子中,复合字段访问方法2124将逻辑字段名2104“AgelnDecades”映射到“Ageln Years/10”。另一个例子是通过将销售价格字段乘以销售税率复合而得的销售税字段。
请注意,如图2B所示的数据抽象模型148仅仅例示了所选逻辑字段规定,并不意味着包罗一切。这样,如图2B所示的抽象查询202包括诸如“State”和“Street”之类的、在数据抽象模型148中未示出规定的一些逻辑字段。
期待底层数据的任何给定数据类型(例如,日期、十进制数等)的格式可以变化。于是,在一个实施例中,字段规定208包括反映底层数据的格式的类型属性。但是,在另一个实施例中,字段规定208的数据格式不同于相关联的底层物理数据,在这种情况下,访问方法负责以请求实体采用的适当格式返回数据。因此,访问方法必须知道采用了什么数据格式(即,根据逻辑字段),以及底层物理数据的实际格式。然后,访问方法可以将底层物理数据变换成逻辑字段的格式)。
举例来说,如图2A所示的数据抽象模型148的字段规定208是映射到用关系数据表示2142表示的数据的逻辑字段的代表。但是,数据抽象模型148的其它例子可以将逻辑字段映射到诸如XML之类的其它物理数据表示。并且,在一个实施例中,借助于过程数据表示的访问方法配置数据抽象模型148。
与如图2所示的抽象查询202对应的例示性抽象查询显示在下表I中。举例来说,用XML定义数据抽象模型148。但是,使用任何其它语言也是有利的。
表I-查询例子
001 <?xml version="1.0"?>
002 <!-Query string representation:(FirstName="Mary"AND
003 LastName="McGoon")OR State="NC"->
004 <QueryAbstraction>
005 <Selection>
006 <Condition internalID="4">
007 <Condition Field="FirstName"operator="EQ"value="Mary"
008 internalID="1"/>
009 <Condition Field="LastName"operator="EQ"value="McGoon"
010 internalID="3"relOperator="AND"></Condition>
011 </Condition>
012 <Condition Field="State"operator="EQ"value="NC"
013 internalID="2"relOperator="OR"></Condition>
014 </Selection>
015 <Results>
016 <Field name="FirstName"/>
017 <Field name="LastName"/>
018 <Field name="State"/>
019 </Results>
020 </QueryAbstraction>
举例来说,如表I所示的抽象查询包括包含选择判据的选择规定(第005-014行)和结果规定(第015-019行)。在一个实施例中,选择判据由字段名(用于逻辑字段)、比较算符(=、>和<等)和值表达式(正被比较的字段是什么)组成。在一个实施例中,结果规定是要作为查询执行的结果返回的抽象字段的列表。抽象查询中的结果规定可以由字段名和分类判据组成。
与表I中的抽象查询对应的数据抽象模型148的例示性例子显示在下表II中。举例来说,用XML定义数据抽象模型148。但是,使用任何其它语言也是有利的。
表II-数据抽象模型例子
001 <?xml version="1.0"?>
002 <DataRepository>
003 <Category name="Demographic">
004 <Field queryable="Yes"name="FirstName"displayable="Yes">
005 <AccessMethod>
006 <Simple columnName="f_name"
tableName="contact></Simple>
007 </AccessMethod>
008 <Type baseType="char"></Type>
009 </Field>
010 <Field queryable="Yes"name="LastName"displayable="Yes">
011 <AccessMethod>
012 <Simple columnName="I_name"
tableName="contact></Simple>
013 </AccessMethod>
014 <Type baseType="char"></Type>
015 </Field>
016 <Field queryable="Yes"name="State"displayable="Yes">
017 <AccessMethod>
018 <Simple columnName="state"
tableName="contact></Simple>
019 </AccessMethod>
020 <Type baseType="char"></Type>
021 </Field>
022 </Category>
023 </DataRepository>
请注意,第004-009行对应于如图2B所示的DAM 148的第一字段规定2081,而第010-015行对应于第二字段规定2082。为了简洁起见,在表I中定义的其它字段规定未显示在图2B中。还请注意,表I例示了一个类别,在这种情况下为“Demographic”。一个类别是一个或多个逻辑字段的分组。在本例中,“FirstName”、“LastName”和“State”是属于公共类别“Demographic”的逻辑字段。
在任何情况下,数据抽象模型148都包含(或涉及)至少一种将逻辑字段映射到物理数据的访问方法。但是,前面的实施例仅仅是例示性的,逻辑字段规定可以包括各种其它元数据。在一个实施例中,借助于定义与逻辑字段相关联的数据的位置的位置规定进一步配置访问方法。这样,数据抽象模型148被扩展为包括可以是局域和/或在整个网络环境下分布的多个数据源的描述。数据源可以使用众多不同数据表示和数据访问技术。如此,提供能够在当今流行的分布式环境下进行评估的基础设施。授权给美国国际商用机器公司(IBM)、发明名称为“通过数据模式和查询抽象概念对分布式数据源的远程数据访问和整合(REMOTE DATA ACCESS AND INTEGRATION OFDISTRIBUTED DATA SOURCES THROUGH DATA SCHEMA AND QUERYABSTRACTION)”的美国专利申请第一0/131,984号更详细地描述了一种访问多个数据源的途径。
图3示出了示范性运行期部件150的操作的一个实施例的例示性运行期方法300。当运行期部件150接收到抽象查询(譬如,如图2所示的抽象查询202)的事例作为输入时,在步骤302中进入方法300。在步骤304中,运行期部件150读取和分析抽象查询的事例,并定位各个选择判据和所需结果字段。在步骤306中,运行期部件150进入处理出现在抽象查询中的每个查询选择判据语句的循环(包括步骤306、308、310和312),从而构建具体查询(Concrete Query)的数据选择部分。在一个实施例中,选择判据由字段名(用于逻辑字段)、比较算符(=、>和<等)和值表达式(正被比较的字段)组成。在步骤308中,运行期部件150利用抽象查询的选择判据当中的字段名在数据储存库抽象概念148中查找字段的定义。如上所述,字段定义包括用于访问与字段相关联的物理数据的访问方法的定义。然后,运行期部件150为正被处理的逻辑字段构建具体查询分布(Concrete Query Contribution)。正如本文定义的那样,具体查询分布是具体查询用于根据当前逻辑字段进行数据选择的部分。具体查询是用像SQL和XML Query那样的语言表示的查询和与给定物理数据储存库(例如,关系数据库或XML储存库)的数据一致。于是,具体查询用于定位和检索来自如图1所示的数据库156-157所表示的物理数据储存库的数据。然后,将为当前字段生成的具体查询分布加入具体查询语句中。然后,方法300返回到步骤306,开始对抽象查询的下一个字段的处理。于是,对抽象查询中的每个数据选择字段重复在步骤306中进入的过程,从而将附加内容贡献给要进行的最后查询。
在构建了具体查询的数据选择部分之后,运行期部件150识别要作为查询执行的结果返回的信息。如上所述,在一个实施例中,抽象查询定义本文称为结果规定的、作为查询执行结果返回的抽象字段的列表。抽象查询中的结果规定由字段名和分类判据组成。于是,方法300在步骤314中进入循环(由步骤314、316、318和320定义)将结果字段定义加入刚生成的具体查询中。在步骤316中,运行期部件150在数据抽象模型148中查找结果字段名(抽象查询的结果规定当中),然后,从数据抽象模型148中检索结果字段定义(Result Field Definition),以便为当前逻辑结果字段识别要返回的数据的物理位置。然后,运行期部件150为逻辑结果字段构建(识别要返回的数据的物理位置的具体查询的)具体查询分布(像步骤318那样)。然后,在步骤320中,将具体查询分布加入具体查询语句中。一旦抽象查询中的每个结果规定都得到处理,就在步骤322中执行查询。
下面参照图4描述根据步骤310和318为逻辑字段构建具体查询分布的方法400的一个实施例。在步骤402中,方法400查询与当前逻辑字段相关联的访问方法是否为简单访问方法。如果是,根据物理数据位置信息构建具体查询分布(步骤404),然后,根据上述的方法300继续进行处理。否则,处理继续转到步骤406,查询与当前逻辑字段相关联的访问方法是否为过滤访问方法。如果是,根据一些物理数据实体的物理数据位置信息构建具体查询分布(步骤408)。在步骤410中,用用于与物理数据实体相关联的子组数据的附加逻辑关系(过滤选择)扩展具体查询分布。
如果访问方法不是过滤访问方法,处理从步骤406转到步骤412,在步骤412中,方法400查询访问方法是否为复合访问方法。如果访问方法是复合访问方法,在步骤414中定位和检索复合字段表达式中每个子字段引用部分的物理数据位置。在步骤416中,用复合字段表达式的物理字段位置信息取代复合字段表达式的逻辑字段引用部分,从而生成具体查询分布。然后,根据上述的方法300继续进行处理。
如果访问方法不是复合访问方法,处理从步骤412转到步骤418。步骤418代表设想成本发明实施例的任何其它访问方法类型。但是,应该明白,可以设想出实现比所有可用访问方法少的访问方法的实施例。例如,在特定实施例中,只使用简单访问方法。在另一个实施例中,只使用简单访问方法和过滤访问方法。
如上所述,如果逻辑字段规定与底层物理数据不同的数据格式,有必要进行数据变换。在一个实施例中,当根据方法400为逻辑字段构建具体查询分布时,为每种访问方法进行初始变换。例如,可以作为步骤404、408和416的一部分或正好在步骤404、408和416之后进行变换。在于步骤322中执行查询之后进行从物理数据的格式到逻辑字段的格式的后续变换。当然,如果逻辑字段定义的格式与底层物理数据相同,就没有必要变换了。
数据分析
在一个实施例中,用户调用分析工具162进行迭代数据分析。举例来说,分析工具162执行各种功能,包括扩充原始用户定义抽象查询(查询扩充器166执行的功能),用执行扩充查询的查询结果扩展底层数据储存库156(表格构建器168执行的功能),而用附加元数据扩展数据抽象模型148以考虑加入底层数据储存库156中的物理数据(即,执行扩充查询的查询结果)。
查询扩充是查询扩充器166执行的功能。由于当用户打算进行附加查询将初始查询结果与数据储存库中的其它信息相关联时,他们调用分析工具162,将一组指定逻辑返回字段(即,抽象查询中要返回的一组逻辑字段)扩展成包括可以用于与正被查询的数据储存库中的其它数据实体相关联的字段
(例如,关键字字段)。
扩展数据抽象模型148是DAM生成器164的功能。根据执行扩充查询的结果为每次重复查询扩充数据抽象模型。也就是说,将DAM扩充成包括执行查询的结果组中的每个物理字段(例如,关系数据库中的列)的逻辑字段。然后,根据扩充DAM执行后续查询。这可能是一个迭代过程,使得每次查询执行导致对DAM的另一次更新。另外,可以用规定最后执行查询的结果与数据库的其它可用数据之间的关系的关系元数据扩充DAM。在一个实施例中,扩充DAM只在用户会话期间保持在存储器中。例如,一旦用户从系统退出,就可以放弃更新DAM。可替代地,也可以存储和检索扩充DAM供以后使用。
用扩充查询的结果扩展底层数据储存库是表格构建器168的功能。如上所述,本发明可以有利地与任何数据模式一起使用。于是,应该强调,术语“表格构建器”仅仅例示了一个实施例,并不把本发明的范围限制在组织成表格的数据上。
现在参照图5,第一DAM 512(DAM_1)被显示在执行前环境502下。DAM 512包括映射到数据库518中的数据的多个逻辑字段514(被显示成“原逻辑字段”)和关系规定516(被显示成“原关系规定”)。用条件508和结果判据510配置请求实体(例如,用户或应用程序)针对数据库518发出的查询1506。条件508一般包括一个或多个定义在第一DAM 512中的逻辑字段和每个字段的相关值。例示性条件可以是“State=Ohio”。多个条件可以通过像AND和OR那样的布尔算符连接。举一个例子,考虑如下情况:(Gender=′Female′AND State=′Ohio′)。结果判据510包括一个或多个使结果返回的逻辑字段。在SQL配对语句(在将查询1506变换成具体查询之后)中,结果判据510是SELECT子句,而条件508是语句的WHERE子句。
在执行之前,调用查询扩充器166将附加结果字段520加入查询1 506的结果判据510中。具体地说,加入结果字段是将从查询1 506返回的数据与存在于数据库518内的其它相关实体之中的附加数据相关联所需的那些关键字字段。将这些关键字字段加入查询1 506中得出查询1’506′。
当被执行时(用箭头522表示),查询1’506′返回结果组524。表格构建器168根据数据库518的模式格式化结果组524,并且将所得新表526存储到数据库中,得出更新数据库518′。DAM生成器164创建映射到新表526的物理字段的新逻辑字段528(为了与代表物理字段与原逻辑字段514之间的映射的实线区分开,物理字段与新逻辑字段528之间的映射用虚线标识)。DAM生成器164还用新实体关系530更新原关系规定516,得出扩充DAM512′(DAM_1)。对每个后续抽象查询都可以执行这个过程。
现在参照图6,描述本发明的附加细节。举例来说,图6示出了初始DAM608。DAM 608包括每一个映射到数据储存库618中的数据的多个字段规定610。在本例中,数据储存库618是包括多个表格620A-D(示出4个)的关系数据库。于是,字段规定610通过逻辑字段名612、表名614和列名616来定义。正如上面参照图2B所述的那样,表名614和列名616的值是传递给各自逻辑字段的访问方法,以便从储存库618中检索数据的参数。举例来说,逻辑字段还包括类别元数据,从而逻辑字段1-6是属于类别(Category)1的部分,而逻辑字段7-10是属于类别2的部分。
第一抽象查询602被显示成配有条件604和结果判据606。抽象查询602的条件604和结果判据606每一个都配有用DAM 608表示的一个或多个逻辑字段。举例来说,条件604规定字段4的值为“5”,并且在满足条件604的情况下结果判据606规定为字段2和字段4返回数据。
DAM 608进一步包括关系规定622。一般说来,关系规定622规定与各自物理字段之间的定义关系相对应的逻辑字段之间的关系。举例来说,数据库618含有多个定义的基本-外来关键字关系。外来关键字用撇号(′)标识,它与基本关键字之间的关系用连接各自列的箭头表示。在一个实施例中,关系规定622包括“基本实体”列624、“基本实体字段”列626、“次要实体”列628、“次要实体字段”列630。“基本实体”列624包含与数据库618的表格相对应的实体。“基本实体字段”列626包含与DAM 608的逻辑字段相对应的实体。这样,列624和626标识数据库618的基本实体列。关系规定622的列628和630标识与基本实体列存在关系的数据库618的次要实体列。例如,关系规定622中的第一行标识表A的列AK与表B中的列AK′之间的关系。请注意,在可替代实施例中,关系规定622中的关系可以只用“基本实体字段”列626和“次要实体字段”列630来描述(即,不引用“基本实体”列624和“次要实体”列628)。
然后,用户可以提交抽象查询602,供与DAM 608有关的执行用。在执行之前,查询扩充器166扩充(用箭头632表示)抽象查询602,以生成扩充查询602′。一般说来,扩充过程将附加字段加入结果判据606中,以生成扩充结果判据606′。加入抽象查询602的结果判据606中的附加字段634根据与结果判据606中的每个用户指定逻辑字段相关联的相应表格的物理字段之间的定义关系(即,在关系规定622中定义的)来选择。后面将参照图8更详细地描述查询扩充过程。
现在参照图7描述扩充抽象查询602′被执行之后的环境。在扩充抽象查询602′被执行之后,将数据库618更新成包括与为扩充抽象查询602′返回的结果相对应的表格702(表R)。表格702由表格构建器168创建和被布置成与数据库618(在本例中,数据库618是关系数据库)的特定模式一致。因此,所得数据618′包括原数据库618的所有原数据,以及扩充查询602′的结果。请注意,在本例中,结果表格702的前两列(R1和R2)对应于列A1和B1(根据扩充前查询602的原结果字段606)。例示性结果表格702中的后三列是与扩充查询606′的附加字段相对应的列。每个结果列可以只包括它们相应原列的一小组项目。因为只有那些满足条件604的结果才返回。于是,像R1和R2那样,与用户指定结果字段相对应的那些列用“R”指示,而像与原列AK对应的AKsub以及分别与原列CK′和DK′对应的CK′sub和DK′sub那样,与扩充结果字段相对应的那些列用下标“sub”指示。
并且,DAM生成器164根据为扩充抽象查询602′返回的结果生成扩充DAM 608′。具体地说,DAM生成器164将原DAM 608更新成包括映射到生成表格702的每个字段(即,每列)的附加逻辑字段704。
在一个方面中,扩充DAM 608′还反映了原数据库618的生成表格702和原表620A-D的列之间的关系。在物理数据中,这些关系用连接表格702的所选列和原表620A-D的列的箭头表示。在扩充DAM 608′中,这些关系用更新的实体关系规定622′的附加字段表示。
现在参照图8,图8中的流程图例示了从初始查询802中创建扩充查询的查询扩充器166实现的方法800的一个实施例。在步骤804中,用来自初始查询802的条件和结果字段初始化扩充查询806。然后,对于每个初始查询结果字段,进入循环(在步骤808中)。对于初始查询802的给定结果字段,访问DAM 812以检索相应物理实体信息(步骤814),然后,将该信息存储在物理实体列表816中(步骤814)。
在参照初始查询808的每个结果字段的相应物理实体填充了物理实体列表816之后,对于在物理实体列表816中引用的每个物理实体,进入循环(步骤818)。对于给定物理实体,该循环包括识别DAM 812中涉及给定物理实体的所有关系(步骤820)。也就是说,访问DAM 812的实体关系规定(例如,图6的实体关系规定622)以确定涉及给定物理实体的每种关系。然后,对于每种关系(步骤821),查询扩充器166确定每个识别的相关实体是否已经包括在物理实体列表816中(步骤822)。如果不是,将给定物理实体的指定逻辑字段(即,关键字字段)加入扩充查询806中(步骤824)。如果是,将与给定关系(如在实体关系规定中规定的那样)的基本实体相关联的基本实体字段(即,基本关键字字段)加入扩充查询806中。当物理实体列表816中的每个物理实体的每种关系都以这种方式得到处理时,方法800就完成了。
前面的方法可以参照图6来举例说明。对于初始查询602的两个返回字段的第一个(即,字段2)相应物理实体是表A(在步骤810中确定)。参照实体关系规定622,查询扩充器166确定规定622的第一和第二关系包括表A(步骤820)。然后,查询扩充器166确定每种关系的其它物理实体是否已经在物理实体列表816中(步骤822)。在这个例示中,第一关系联系表A和表B,而第二关系联系表C和表A。关于第一关系,作为初始返回字段字段4的结果,表B已经包括在物理实体列表816中,因此,将基本实体字段(在关系规定622的基本实体字段列626中规定)字段1加入扩充查询602′中。关于第二关系,表C未包括在物理实体列表816中。因此,将与表A对应的指定关键字字段(即,字段3)加入扩充查询602′中。对于表B(即,与初始返回字段字段4对应的物理实体)重复相同的处理,得出加入扩充查询602′中的字段6的附加量。
现在参照图9,图9中的流程图例示了创建更新DAM的DAM生成器164实现的方法900的一个实施例。在执行了扩充抽象查询806(如参照图8所述的方法800进行的那样)之后进入方法900。在步骤902中,DAM生成器164用初始DAM 904初始化扩充DAM 906(步骤902)。在步骤908中,对于扩充查询906的查询结果,将新类别加入扩充DAM 906中。然后,对于扩充抽象查询806的结果判据中的每个结果字段,进入循环(在步骤910中)。对于给定结果字段,在循环中进行的处理包括从初始DAM 904中检索与给定结果字段相对应的字段定义(步骤912)。然后,更新相应字段定义(步骤914),以便访问方法涉及相应查询结果实体(例如,如图7所示的表R的适当列)。然后,将更新字段定义加入扩充DAM 906中(步骤916)。然后,DAM生成器164确定扩充查询的给定结果字段是否卷入如在初始DAM 904的实体规定中定义的那样与另一个实体(例如,“E1”)的关系之中(步骤918)。如果是,则在扩充DAM 906的实体关系规定中创建查询结果实体(即,与扩充查询的给定结果字段相对应的实体)与其它实体E1之间的关系(步骤920)。并且,如果像在步骤922中确定的那样,扩充查询的给定结果字段是又一个实体(例如,“E2”)的基本关键字,那么,在扩充DAM 906的实体关系规定中创建查询结果实体与其它实体E2之间的关系(步骤924)。对于扩充查询的每个结果字段都执行前面的过程。
方法900可以参照图6和图7来举例说明。例如,考虑用户指定查询结果字段的第一个,即,“类别1/字段2”。在这种情况下,将新逻辑字段“类别R/字段11”加入扩充DAM 608′中。新逻辑字段映射到表R的列R1。由于相应查询结果字段“类别1/字段2”与初始DAM 608中的任何其它实体无关,因此不创建新的关系。新逻辑字段“类别R/字段12”的情况也如此。现在考虑扩充查询602′中的附加查询结果字段,即,“类别1/字段1”。在这种情况下,将新逻辑字段“类别R/字段13”加入扩充DAM 608′中。新逻辑字段映射到表R的列AKsub。由于“类别1/字段1”卷入如在初始DAM 608的实体关系规定622中定义的那样与另一个实体的关系之中,即,“类别1/字段1”与“类别1/字段5”有关,因此像图7中附加逻辑字段706的第二行所表示的那样,在扩充实体关系规定622′中定义新逻辑字段“类别R/字段13”和“类别1/字段5”之间的新关系。另外,由于抽象查询结果字段“类别1/字段1”是基本关键字字段,因此像图7中附加逻辑字段706的第一行所表示的那样,在扩充实体关系规定622′中定义新逻辑字段“类别R/字段13”和“类别1/字段1”之间的新关系。
在一个方面中,提供了用户针对数据储存库抽象模型构建查询的优点。由于对底层数据的看法受DAM支配,所以给予用户数据随每个后续查询逐渐扩充的看法。然后,用户可以创建包括涉及初始DAM中的信息、来自前查询结果的信息(即,来自扩充DAM的信息)或两者的数据选择条件的查询。本发明的这个方面可以参照图10-12来举例说明。
首先参照图10,屏幕1000被显示成可以通过浏览器程序122(图1)来观看。屏幕1000包括选择面板1002、查询条件面板1004、查询结果字段面板1006和查询结果名字段1008。选择面板1002显示DAM定义的每个逻辑字段。如果已定义,还显示类别。如图11中的屏幕1000所示,利用显示的逻辑字段,用户通过在查询条件面板1004中指定条件和在查询结果字段面板1006中指定结果字段,可以构建查询。在这个特定例示中,用户为逻辑字段Gender(性别)和State(州)指定了查询条件,并且查询结果字段面板1006包括六个用户选择逻辑字段(结果字段):Gender、State、Glucose Test(葡萄糖检验)、Test Date(检验日期)、First Name(名字)和Last Name(姓氏)。用户选择了Ohio Females(俄亥俄女性)(如查询结果名字段1008所示)作为分类查询结果的名称。然后,调用查询扩充器166(例如,响应用户在扩充查询按钮1010上的点击),导致在查询结果字段面板1006中附加了作为结果字段的“Patient(患者)ID”。然后,可以通过点击提交1012执行查询。在查询得到执行之后,可以在另一个屏幕(未示出)中向用户显示查询的结果。
对于下一个查询,选择面板1002示出DAM生成器164根据执行扩充查询的查询结果字段生成的扩充DAM的逻辑字段。对于图11的例示性查询,在图12的选择面板1002中,在用户指定类别名(Ohio Females)的下面显示扩充DAM的逻辑字段。于是,显示的逻辑字段包括Gender、State、GlucoseTest、Test Date、First Name、Last Name和Patient ID。根据显示的逻辑字段,用户可以构建另一个查询。可以重复地执行这个过程,从而逐步提高显示/可用逻辑字段的数量。
在各种实施例中,可以提供许多优点。在一些情况下,这些优点相对于现有技术有实质性提高。现在描述这些优点中的一些。但是,无论一个实施例是否取得优点,并且无论这样的优点是否被认为取得实质性提高,都不造成对本发明的限制。因此,如下所述的优点并不限定或限制本发明,本发明只受所附权利要求书限制。
在一个方面中,通过在应用查询规定和底层数据表示之间定义松散耦合来取得这些优点。不是像使用SQL的情况那样,用特定表格、列和关系信息编码应用程序,该应用程序以更抽象的方式定义然后在运行时与特定物理数据表示结合在一起的数据查询要求。即使底层数据表示被修改,或即使请求实体要与相对于开发请求实体时使用的那个而言全新的物理数据表示一起使用,本发明的松散查询数据耦合也能够使请求实体(例如,应用程序)有效。在给定物理数据表示被修改或被重构的情况下,将相应数据储存库抽象概念更新成反映对底层物理数据模型所作的改变。同一组的逻辑字段适合供查询用,并且仅与物理数据模型中的不同实体或位置结合在一起。其结果是,尽管相应物理数据模型经历了显著的变化,但写入抽象查询界面中的请求实体仍然不变地有效。在请求实体要与相对于开发请求实体时使用的那个而言全新的物理数据表示一起使用的情况下,除了遵循用于命名和组织信息的不同策略(例如,不同模式)之外,可以使用相同的技术(例如,关系数据库)实现新物理数据模型。新模式将包含可以映射到应用程序利用简单、过滤和复合字段访问方法技术要求的一组逻辑字段的信息。可替代地,新物理数据表示可以将替代技术用于表示相似信息(例如,基于XML数据储存库与关系数据库系统的使用)。在每一种情况下,为使用抽象查询界面而写的现有请求实体可以容易地过渡到使用考虑到用新物理数据模型中的位置和物理表示映射在查询中引用的字段的替代数据储存库抽象概念的规定的新物理数据表示。
在另一个方面中,促进了应用程序构建器和最终用户的易用性。用抽象层来表示底层数据储存库中的逻辑字段使应用程序开发者能够将注意力集中在关键应用数据要求上,而不用关心底层数据表示的细节。其结果是,在应用程序开发期间可以取得较高的生产率和较低的出错率。关于最终用户,数据储存库抽象概念提供了数据过滤机制,暴露相关数据并隐藏开展给定查询的特定类最终用户不需要的非本质内容。
在一个方面中,这种模型使解决方案发展成与解决方案使用的数据的物理位置或表示无关,使人们可以容易地对许多不同数据拓扑结构部署解决方案,并且使解决方案在数据随时间被重新定位或重新组织的情况下也有效。在另一个方面中,这种途径还简化了将解决方案扩展到利用附加信息的任务。扩展是在抽象查询层次上作出的,不要求附加对于被访问的新数据的位置或表示来说是唯一的软件。这种方法提供了与用于访问数据的特定方法无关和与引用的数据的每个项目的位置无关的软件应用程序的公用数据访问方法。通过抽象查询访问的物理数据可以相关地(在现有关系数据库系统中)、分层地(像XML那样)、或用一些其它物理数据表示模型表示。还支持多种数据访问方法,包括基于诸如SQL和XQuery之类的现有数据查询方法和诸如通过万维网服务调用(例如,利用SOAP)或HTTP请求的数据检索之类涉及有计划访问信息的方法的那些数据访问方法。
虽然上文针对本发明的实施例,但也可以设计出本发明其它和进一步的实施例,而不偏离本发明的基本范围,本发明的范围由所附权利要求书限定。
Claims (32)
1.一种利用逻辑模型查询物理数据实体的物理字段的方法,包括:
定义用以逻辑描述物理字段的逻辑模型;和
对于包括查询条件和要返回的查询结果字段的每个抽象查询,将逻辑模型扩充成除了逻辑地描述物理字段外,还逻辑地描述根据查询结果字段为每个抽象查询返回的结果。
2.根据权利要求1所述的方法,其中,物理数据实体包括数据库中的多个表格。
3.根据权利要求1所述的方法,进一步包括在定义用以逻辑描述物理字段的逻辑模型之后,参照逻辑模型生成每个抽象查询。
4.根据权利要求1所述的方法,进一步包括在定义用以逻辑描述物理字段的逻辑模型之后,参照逻辑模型,将每个抽象查询变换成与物理数据实体一致的形式。
5.根据权利要求1所述的方法,其中,查询结果字段的一部分是用户选择的,而查询结果字段的其余部分是计算机生成的。
6.根据权利要求5所述的方法,其中,定义逻辑模型进一步包括逻辑定义物理字段之间的关键关系,并且计算机选择查询结果字段是根据关键关系选择的。
7.根据权利要求1所述的方法,其中,逻辑模型用用户界面中的多个逻辑字段表示,并且在执行了给定抽象查询之后,当在用户界面中显示附加逻辑字段时扩充逻辑模型结果。
8.根据权利要求7所述的方法,其中,用户界面中的附加逻辑字段对应于查询结果字段。
9.根据权利要求1所述的方法,其中,定义用以逻辑描述物理字段的逻辑模型包括为物理字段的不同部分定义多个逻辑字段定义,并且为给定抽象查询扩充逻辑模型包括加入给定抽象查询的每个查询结果字段的附加逻辑字段定义。
10.根据权利要求9所述的方法,其中,每个逻辑字段定义映射到物理数据实体的不同物理字段。
11.根据权利要求1所述的方法,其中,定义用以逻辑描述物理字段的逻辑模型包括为物理数据实体的不同字段定义多个逻辑字段定义,并且对于给定抽象查询中的每个给定查询结果字段,扩充逻辑模型包括:
从逻辑模型中识别相应逻辑字段定义;和
根据相应逻辑字段定义,生成涉及给定结果字段返回的结果实体的物理字段的新逻辑字段定义。
12.根据权利要求11所述的方法,其中,定义用以逻辑描述物理字段的逻辑模型包括定义逻辑字段定义之间的多种关系,并且扩充逻辑模型进一步包括生成新逻辑字段定义的至少一个与现有多个逻辑字段定义的至少一个之间的附加关系。
13.根据权利要求12所述的方法,其中,生成附加关系包括:
确定与新逻辑字段定义相对应的物理数据实体与在逻辑模型中具有相应逻辑字段定义的另一个物理数据实体是否具有关键关系;和
如果有,则:
定义新逻辑字段定义与物理数据实体的相应逻辑字段定义之间的关系;
确定与新逻辑字段定义相对应的物理数据实体相对于又一个物理数据实体是否为基本关键字;和
如果是,则定义新逻辑关系定义与又一个物理数据实体之间的关系。
14.一种利用逻辑模型查询数据的方法,包括:
定义用以逻辑描述数据的逻辑模型,其中,逻辑模型包括映射到数据的物理实体的物理字段的多个逻辑字段定义;
接收用户定义抽象查询,其中,用户定义抽象查询是利用逻辑模型的逻辑字段定义创建的,并且包括至少一个条件和从逻辑字段定义中选择的至少一个用户选择结果字段;
用至少一个计算机选择结果字段扩充用户定义抽象查询,以生成扩充抽象查询;和其中,扩充抽象查询为用户选择结果字段和计算机选择结果字段的每一个返回结果;和
扩充逻辑模型以便除逻辑地描述数据外,还逻辑地描述根据结果字段返回的结果。
15.根据权利要求14所述的方法,其中,扩充用户定义抽象查询包括:
对于扩充抽象查询的每个结果字段,确定相应物理实体;
对于每个相应物理实体,确定涉及相应物理实体的所有关键关系,其中,针对相关物理实体的字段,每种关键关系将相应物理实体的字段与作为基本实体或次要实体的相关物理实体的字段相关联;
对于涉及相应物理实体的每种关键关系,确定与相关物理实体相对应的至少一个逻辑字段定义是否包括在扩充抽象查询中;和
如果对于涉及相应物理实体的给定关键关系,与相关物理实体相对应的至少一个逻辑字段定义包括在扩充抽象查询中,则:加入与给定关键关系中的基本关键字字段相对应的逻辑字段定义,作为至少一个计算机选择结果字段。
16.根据权利要求14所述的方法,其中,参照逻辑模型创建每个用户定义抽象查询和每个扩充抽象查询。
17.根据权利要求15所述的方法,进一步包括,如果对于涉及相应物理实体的给定关键关系,与相关物理实体相对应的逻辑字段定义未包括在扩充抽象查询中,则:
加入与如给定关键关系所定义的相应物理字段的关键字字段相对应的逻辑字段定义,作为计算机选择结果字段。
18.根据权利要求15所述的方法,其中,关键关系是定义在逻辑模型中的。
19.根据权利要求14所述的方法,进一步包括在定义用以逻辑描述数据的逻辑模型之后,参照逻辑模型,将每个抽象查询变换成与数据一致的形式。
20.根据权利要求14所述的方法,其中,对于给定抽象查询中的每个给定结果字段,扩充逻辑模型包括:
从逻辑模型中识别相应逻辑字段定义;和
根据相应逻辑字段定义,生成涉及给定结果字段返回的结果实体的物理字段的新逻辑字段定义。
21.根据权利要求20所述的方法,其中,定义用以逻辑描述数据的逻辑模型包括定义逻辑字段定义之间的多种关系,并且扩充逻辑模型进一步包括生成新逻辑字段定义的至少一个与现有多个逻辑字段定义的至少一个之间的附加关系。
22.根据权利要求21所述的方法,其中,生成附加关系包括:
确定与新逻辑字段定义相对应的物理实体与在逻辑模型中具有相应逻辑字段定义的另一个物理实体是否具有关键关系;和
如果有,则:
定义新逻辑字段定义与物理实体的相应逻辑字段定义之间的关系;
确定与新逻辑字段定义相对应的物理实体相对于又一个物理实体是否为基本关键字;和
如果是,定义新逻辑关系定义与又一个物理实体之间的关系。
23.一种处理由逻辑字段定义的抽象查询的方法,包括:
提供初始抽象数据模型,初始抽象数据模型定义被映射到具有特定模式的物理数据的多个逻辑字段和进一步定义多个逻辑字段之间的多种关系;
接收包括至少一个条件和包括多个逻辑字段中的至少一个的用户选择结果字段的第一抽象查询;
根据用户选择结果字段与其它多个逻辑字段之间的定义关系,用从多个逻辑字段中选择的至少一个计算机选择逻辑字段扩充第一抽象查询;
参照初始抽象数据模型将第一抽象查询变换成第一可执行查询;
执行第一可执行查询;
返回执行第一可执行查询产生的结果;和
将至少一个附加逻辑字段加入初始抽象数据模型中,以生成第一扩充抽象数据模型,至少一个附加逻辑字段被映射到至少一个结果。
24.根据权利要求23所述的方法,其中,变换包括将第一抽象查询变换成SQL语句。
25.根据权利要求23所述的方法,进一步包括在生成第一扩充抽象数据模型之后:
接收包括至少一个条件和包括该第一扩充抽象数据模型的逻辑字段的至少一个的用户选择结果字段的第二抽象查询;
根据用户选择结果字段与第一扩充抽象数据模型的多个逻辑字段的至少一个其它逻辑字段之间的定义关系,用从第一扩充抽象数据模型的多个逻辑字段中选择的至少一个计算机选择逻辑字段扩充第二抽象查询;
参照初始抽象数据模型将第二抽象查询变换成第二可执行查询;
执行第二可执行查询;
返回执行第二可执行查询产生的结果;和
将至少一个另外的附加逻辑字段加入第一扩充抽象数据模型中,以生成第二扩充抽象数据模型,至少一个另外的附加逻辑字段被映射到通过第二可执行查询返回的至少一个结果。
26.根据权利要求23所述的方法,扩充第一抽象查询的步骤进一步包括用计算机选择结果字段迭代扩充每个抽象查询,并且生成第一扩充抽象数据模型的步骤进一步包括用映射到前一个扩充抽象查询的结果的逻辑字段迭代扩充每个抽象数据模型。
27.根据权利要求26所述的方法,生成第一扩充抽象数据模型的步骤进一步包括用将前一个扩充抽象查询返回的结果与前一个抽象数据模型的其它逻辑字段相关联的关系规定扩充每个抽象数据模型。
28.一种计算机系统,包括存储器和至少一个处理器,并且进一步包括:
逻辑模型,逻辑模型包括映射到数据的物理实体的物理字段的多个逻辑字段定义,从而逻辑模型提供数据的逻辑视图;
抽象查询扩充器,用于(i)接收抽象查询,抽象查询包括至少一个条件和从逻辑模型的逻辑字段定义中选择的至少一个用户选择结果字段;和(ii)用从逻辑模型的逻辑字段定义中选择的至少一个计算机选择结果字段扩充抽象查询,从而生成扩充抽象查询;和
逻辑模型生成器,用于根据扩充抽象查询的结果字段和为扩充抽象查询返回的结果用附加逻辑字段定义扩充逻辑模型。
29.根据权利要求28所述的系统,其中,逻辑模型进一步包括在多个逻辑字段定义之间和根据在数据的物理字段之间定义的关键关系定义的多种关系。
30.根据权利要求28所述的系统,其中,逻辑模型生成器被进一步配置成用在附加逻辑字段定义的至少一个与现有多个逻辑字段定义之间定义的附加关系扩充逻辑模型。
31.根据权利要求28所述的系统,其中,逻辑模型随每个后续抽象查询而改变,并且所述系统进一步包括根据当前逻辑模型将抽象查询变换成与数据一致的物理查询的运行期部件。
32.根据权利要求28所述的系统,其中,逻辑模型随每个后续抽象查询而改变,并且所述系统进一步包括在生成访问数据的抽象查询时从中只可选择当前逻辑模型定义的那些逻辑字段定义的界面。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/459,734 US7158969B2 (en) | 2003-06-12 | 2003-06-12 | Iterative data analysis process via query result augmentation and result data feedback |
US10/459,734 | 2003-06-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1864159A CN1864159A (zh) | 2006-11-15 |
CN100465953C true CN100465953C (zh) | 2009-03-04 |
Family
ID=33510856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800231937A Active CN100465953C (zh) | 2003-06-12 | 2004-06-10 | 用逻辑模型查询物理字段或处理抽象查询的方法及系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7158969B2 (zh) |
EP (1) | EP1636674A4 (zh) |
CN (1) | CN100465953C (zh) |
IL (1) | IL172515A0 (zh) |
WO (1) | WO2004111793A2 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8086619B2 (en) | 2003-09-05 | 2011-12-27 | Google Inc. | System and method for providing search query refinements |
US7689542B2 (en) * | 2004-01-13 | 2010-03-30 | Oracle International Corporation | Dynamic return type generation in a database system |
US9058388B2 (en) * | 2004-06-22 | 2015-06-16 | Digimarc Corporation | Internet and database searching with handheld devices |
WO2006001008A2 (en) * | 2004-06-24 | 2006-01-05 | Amir Lavi | System for facilitating search over a network |
US20060059135A1 (en) * | 2004-09-10 | 2006-03-16 | Eran Palmon | Conducting a search directed by a hierarchy-free set of topics |
US20060129590A1 (en) * | 2004-12-10 | 2006-06-15 | Aoki-Rice Companies | Method and medium for managing data |
US7711739B2 (en) * | 2005-01-25 | 2010-05-04 | Microsoft Corporation | Enhancing node-based query languages to support common relational mapping patterns |
US7814044B2 (en) * | 2005-03-22 | 2010-10-12 | Sap Ag | Data access service queries |
US7805425B2 (en) * | 2006-04-28 | 2010-09-28 | Microsoft Corporation | Efficient database lookup operations |
US8384700B2 (en) * | 2007-01-26 | 2013-02-26 | Microsoft Corporation | Linked shell |
US7925900B2 (en) | 2007-01-26 | 2011-04-12 | Microsoft Corporation | I/O co-processor coupled hybrid computing device |
US8655862B1 (en) | 2007-10-17 | 2014-02-18 | Google Inc. | System and method for query re-issue in search engines |
US8214381B2 (en) * | 2009-01-27 | 2012-07-03 | International Business Machines Corporation | Expected future condition support in an abstract query environment |
US8150882B2 (en) * | 2009-03-03 | 2012-04-03 | Microsoft Corporation | Mapping from objects to data model |
EP2237169A1 (en) * | 2009-03-30 | 2010-10-06 | BRITISH TELECOMMUNICATIONS public limited company | Data searching system |
JP5471086B2 (ja) * | 2009-07-02 | 2014-04-16 | 富士通株式会社 | 情報統合装置、情報統合方法および情報統合プログラム |
JPWO2011013234A1 (ja) * | 2009-07-30 | 2013-01-07 | 株式会社東芝 | 受信装置 |
US20110078166A1 (en) * | 2009-09-29 | 2011-03-31 | Nokia Corporation | Method and apparatus for creating and utilizing information representation of queries |
US8271479B2 (en) * | 2009-11-23 | 2012-09-18 | International Business Machines Corporation | Analyzing XML data |
US10430430B2 (en) | 2010-03-15 | 2019-10-01 | Vmware, Inc. | Computer relational database method and system having role based access control |
US8676787B2 (en) | 2011-12-22 | 2014-03-18 | International Business Machines Corporation | Distributed multi-step abstract queries |
US9053161B2 (en) | 2012-08-30 | 2015-06-09 | International Business Machines Corporation | Database table format conversion based on user data access patterns in a networked computing environment |
US9613041B2 (en) | 2013-10-03 | 2017-04-04 | International Business Machines Corporation | Extending a content repository using an auxiliary data store |
CN104268264A (zh) * | 2014-10-11 | 2015-01-07 | 北京嘉和美康信息技术有限公司 | 一种检索条件建立装置及检索装置 |
CN104750810A (zh) * | 2015-03-30 | 2015-07-01 | 浪潮集团有限公司 | 一种基于配置的数据查询处理方法 |
EP3260991A1 (en) * | 2016-06-20 | 2017-12-27 | Siemens Aktiengesellschaft | System and method configured to execute data model transformations on data for cloud based applications |
US20190102841A1 (en) * | 2017-10-04 | 2019-04-04 | Servicenow, Inc. | Mapping engine configurations with task managed workflows and grid user interfaces |
CN110826307A (zh) * | 2019-10-31 | 2020-02-21 | 北京字节跳动网络技术有限公司 | 业务对象的创建方法及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870746A (en) * | 1995-10-12 | 1999-02-09 | Ncr Corporation | System and method for segmenting a database based upon data attributes |
US6266660B1 (en) * | 1998-07-31 | 2001-07-24 | Unisys Corporation | Secondary index search |
US6516312B1 (en) * | 2000-04-04 | 2003-02-04 | International Business Machine Corporation | System and method for dynamically associating keywords with domain-specific search engine queries |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5721903A (en) | 1995-10-12 | 1998-02-24 | Ncr Corporation | System and method for generating reports from a computer database |
US6725227B1 (en) * | 1998-10-02 | 2004-04-20 | Nec Corporation | Advanced web bookmark database system |
US20010016843A1 (en) * | 1999-02-08 | 2001-08-23 | Todd Olson | Method and apparatus for accessing data |
US6594654B1 (en) * | 2000-03-03 | 2003-07-15 | Aly A. Salam | Systems and methods for continuously accumulating research information via a computer network |
WO2001067309A2 (en) * | 2000-03-03 | 2001-09-13 | Radiant Logic, Inc. | System and method for providing access to databases via directories and other hierarchical structures and interfaces |
US6823333B2 (en) * | 2001-03-02 | 2004-11-23 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | System, method and apparatus for conducting a keyterm search |
US7096217B2 (en) * | 2002-10-31 | 2006-08-22 | International Business Machines Corporation | Global query correlation attributes |
-
2003
- 2003-06-12 US US10/459,734 patent/US7158969B2/en active Active
-
2004
- 2004-06-10 WO PCT/US2004/018508 patent/WO2004111793A2/en active Search and Examination
- 2004-06-10 CN CNB2004800231937A patent/CN100465953C/zh active Active
- 2004-06-10 EP EP04754941A patent/EP1636674A4/en not_active Withdrawn
-
2005
- 2005-12-12 IL IL172515A patent/IL172515A0/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870746A (en) * | 1995-10-12 | 1999-02-09 | Ncr Corporation | System and method for segmenting a database based upon data attributes |
US6266660B1 (en) * | 1998-07-31 | 2001-07-24 | Unisys Corporation | Secondary index search |
US6516312B1 (en) * | 2000-04-04 | 2003-02-04 | International Business Machine Corporation | System and method for dynamically associating keywords with domain-specific search engine queries |
Also Published As
Publication number | Publication date |
---|---|
IL172515A0 (en) | 2006-04-10 |
EP1636674A2 (en) | 2006-03-22 |
CN1864159A (zh) | 2006-11-15 |
WO2004111793A2 (en) | 2004-12-23 |
EP1636674A4 (en) | 2009-12-30 |
WO2004111793A3 (en) | 2006-07-13 |
US7158969B2 (en) | 2007-01-02 |
US20040254924A1 (en) | 2004-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100465953C (zh) | 用逻辑模型查询物理字段或处理抽象查询的方法及系统 | |
CN1647080B (zh) | 多数据库环境中存取数据的方法和计算机 | |
CN1705945B (zh) | 提供查询的属性的方法和系统 | |
US8086647B2 (en) | Sequenced modification of multiple entities based on an abstract data representation | |
US7054877B2 (en) | Dealing with composite data through data model entities | |
US7840584B2 (en) | Iterative data analysis enabled through query result abstraction | |
US7827159B2 (en) | Automated data model extension through data crawler approach | |
US8244702B2 (en) | Modification of a data repository based on an abstract data representation | |
US7747640B2 (en) | Method for regenerating selected rows for an otherwise static result set | |
CN101410865A (zh) | 基于细粒度数据实体建立数据管理费用结构的方法 | |
US20060074873A1 (en) | Extending data access and analysis capabilities via abstract, polymorphic functions | |
US7089232B2 (en) | Method of synchronizing distributed but interconnected data repositories |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |