CN1987861A - 处理数据库查询的系统和方法 - Google Patents
处理数据库查询的系统和方法 Download PDFInfo
- Publication number
- CN1987861A CN1987861A CNA2006101465694A CN200610146569A CN1987861A CN 1987861 A CN1987861 A CN 1987861A CN A2006101465694 A CNA2006101465694 A CN A2006101465694A CN 200610146569 A CN200610146569 A CN 200610146569A CN 1987861 A CN1987861 A CN 1987861A
- Authority
- CN
- China
- Prior art keywords
- data
- inquiry
- query
- database
- abstract query
- 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.)
- Pending
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/242—Query formulation
- G06F16/2423—Interactive query statement specification based on a database schema
-
- 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/953—Organization of data
- Y10S707/962—Entity-attribute-value
-
- 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
-
- 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/99937—Sorting
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了一种处理数据库查询的方法、系统和制品。一实施例包括接收对具有多个数据记录的数据库的抽象查询。所述抽象查询标识定义了所述抽象查询的重点的模型实体。所述方法还包括接收被配置限制所述抽象查询的结果集合的限制请求。所述限制请求指定被返回的所述底层模型实体的一个或多个实例的数据记录的限制。从所述抽象查询中,生成能够被查询引擎执行的可执行查询。基于所述限制请求修改所述可执行查询。执行对所述数据库的经修改的可执行查询,以得到结果集合,由此所述结果集合按照所述限制请求所请求的那样被限制。
Description
技术领域
本发明一般涉及处理数据库查询,并更具体地涉及基于关联于所查询的实体的限制来过滤查询结果。
背景技术
数据库是计算机化的信息存储和检索系统。关系数据库管理系统是使用用于存储和检索数据的关系技术的计算机数据库管理系统(DBMS)。最普遍类型的数据库是关系数据库,其是表格式的数据库,其中数据被定义从而数据可用多种不同方式来重新组织和访问。分布式数据库是可在网络的不同点之间分散或复制的数据库。面向对象编程数据库是与在对象类和子类中定义的数据相一致的数据库。
不管具体的体系结构如何,DBMS都可被结构化,以支持多种不同类型的操作。所述操作可被配置来检索、添加、修改和删除由DBMS存储和管理的信息。标准的数据库访问方法使用高级查询语言(诸如结构化查询语言(SQL))来支持这些操作。术语“查询”命名了一组命令,其导致了用于处理来自存储的数据库中的数据的操作的执行。例如,SQL支持四类查询操作,即,SELECT、INSERT、UPDATE和DELETE。SELECT操作从数据库中检索数据,INSERT操作将新数据添加到数据库,UPDATE操作修改数据库中的数据,而DELETE操作从数据库中移除数据。
包括应用、操作系统和用户在内的任何请求实体可发出对于数据库中的数据的查询。查询可以是预定义的(即,硬编码作为应用的一部分)或可以响应于输入(例如用户输入)而生成。一旦执行了对数据库的查询,就向请求实体返回结果集合。
用户运行查询时的困难之一是辨别来自结果集合的相关信息。具体而言,用户通常尝试从“实体”的角度理解结果集合,即,用户通常将查询结果关联于与结果集合有关的逻辑实体。例如,在医疗数据环境中,研究的重点通常是患者(一类实体)。医疗数据环境中的大多数相关数据的形式是连续范围的值,这意味着患者可以有多次测试,其中对于每次测试具有不同值。结果,给定结果集合可包含每个患者的多个数据记录。
例如,假设在医院中执行用于确定关于患者的信息的统计分析的研究者,当所述患者服用了特定药品时在某时间内对所述患者执行了一次或多次血红蛋白测试。此外,假设研究者想要查看每个患者的仅仅前三次血红蛋白测试值的显示。这样做可以协助研究者标识出具有反常的高血红蛋白级别的患者。通过示例,假设所述反常的高血红蛋白级别值可被用于标识出是否需要对所关心的患者进行进一步的诊断测试。
现在假设研究者发出对于一个或多个底层数据库的单个查询,以确定关于患者的所需信息。再假设该查询对于底层数据库执行,由此获得单个结果集合,其对于每个患者具有多个数据记录。为了查看每个患者的仅仅前三次血红蛋白测试值的显示,研究者需要从所获得的结果集合中手动标识出相关的数据记录。不过,从结果集合中手动标识出相关的数据记录的过程是乏味的过程,其易于出错并且耗时,尤其是当该结果集合很庞大时。
因此,需要一种用于限制在查询的结果集合中返回的数据记录的数量的高效技术,尤其是当查询可能关注与所查询的实体实例有关的某些数据时。
发明内容
本发明一般地涉及一种用于过滤查询结果的方法、系统和制品,并更具体地涉及一种用于限制在查询的结果集合中返回的数据记录的数量的方法、系统和制品。
本发明的一实施例包括一种处理对具有多个数据记录的数据库的数据库查询的计算机实现的方法。所述方法一般包括:从请求实体接收抽象查询,所述抽象查询标识定义所述查询的重点的模型实体,并包括至少一个结果字段规范,所述结果字段规范包括将从数据库返回数据的一个或多个结果字段,其中在抽象地描述数据库中的数据的数据抽象模型中定义所述模型实体。所述方法一般还包括:接收被配置限制所述抽象查询的结果集合的限制请求,所述限制请求指定与响应于所述查询被返回的所述底层模型实体的一个或多个实例的数据记录集合有关的限制;以及从所述抽象查询中并关于所述数据抽象模型生成能够被查询引擎执行的可执行查询。所述方法一般还包括:基于所述限制请求修改所述可执行查询;执行对所述数据库的经修改的可执行查询,以得到结果集合,由此所述结果集合按照所述限制请求所请求的那样被限制;以及将受限制的结果集合输出到所述请求实体。
本发明的另一实施例包括一种包含程序的计算机可读媒体,所述程序当被处理器执行时,执行用于处理对具有多个数据记录的数据库的数据库查询的操作。所述操作一般包括:从请求实体接收抽象查询,所述抽象查询标识定义所述查询的重点的模型实体,并包括至少一个结果字段规范,所述结果字段规范包括将从数据库返回数据的一个或多个结果字段,其中在抽象地描述数据库中的数据的数据抽象模型中定义所述模型实体;以及接收被配置限制所述抽象查询的结果集合的限制请求,所述限制请求指定与响应于所述查询被返回的所述底层模型实体的一个或多个实例的数据记录集合有关的限制。所述操作一般还包括:从所述抽象查询中并关于所述数据抽象模型生成能够被查询引擎执行的可执行查询;基于所述限制请求修改所述可执行查询;执行对所述数据库的经修改的可执行查询,以得到结果集合,由此所述结果集合按照所述限制请求所请求的那样被限制;以及将受限制的结果集合输出到所述请求实体。
本发明的再一实施例提供一种包含程序的计算机可读媒体,所述程序当被处理器执行时,执行用于处理对具有多个数据记录的数据库的数据库查询的操作。所述操作一般包括:从请求实体接收抽象查询,所述抽象查询标识定义所述查询的重点的模型实体,并包括至少一个结果字段规范,所述结果字段规范包括将从数据库返回数据的一个或多个结果字段,其中所述抽象查询的每个结果字段是抽象地描述数据库中的数据的数据抽象模型的逻辑字段,所述数据抽象模型被配置允许基于所述抽象查询的一个或多个逻辑字段,以与数据库中的数据的物理表示相一致的形式来生成可执行查询。所述操作一般还包括:接收被配置限制所述抽象查询的结果集合的限制请求,所述限制请求指定与响应于所述查询被返回的所述底层模型实体的一个或多个实例的数据记录集合有关的限制;从所述抽象查询中生成能够被查询引擎执行的可执行查询。所述操作一般还包括:基于所述限制请求修改所述可执行查询;执行对所述数据库的经修改的可执行查询,以得到结果集合,由此所述结果集合按照所述限制请求所请求的那样被限制;以及将受限制的结果集合输出到所述请求实体。
附图说明
由于本发明的上述特征、优点和目的被获得并可被详细理解的方式,可以通过参考在附图中示出的的本发明实施例得到以上简要概述的本发明的更具体的描述。
不过,需要注意,附图仅示出本发明的典型实施例,并因此不会被认为是限制其范围,因为本发明可容许其它等效实施例。
图1示出可根据本发明使用的计算机系统;
图2是在一实施例中的定义查询创建和执行环境的软件组件的关系视图;
图3A-3B是在一实施例中的定义抽象查询创建和执行环境的软件组件的关系视图;以及
图4-6是示出在一实施例中的运行时组件的操作的流程图。
具体实施方式
本发明一般涉及一种用于过滤查询结果的方法、系统和制品,并具体而言涉及一种用于基于模型实体限制而限制在查询的结果集合中返回的数据记录的数量的方法、系统和制品。一般而言,响应于执行对于一个或多个底层数据库(每个具有多个数据记录)的查询而获得查询的结果集合。查询包括来自底层数据库的数据将被返回结果集合中的至少一个结果字段。
根据一方面,使用抽象地描述底层数据库中的物理数据的一个或多个数据抽象模型来访问底层数据库中的多个数据记录。因此,通过使用数据抽象模型,对物理数据的抽象查询可被构建,而不管底层物理数据库所使用的结构或表示。数据抽象模型提供的查询单元被用于生成来自抽象查询的可执行查询。例如,如以下更详细描述的,被用于组成抽象查询的查询单元可定义一种访问方法,所述方法被用于从向用户呈现的查询单元的逻辑表示到由底层物理数据库使用的物理表示进行映射。以与物理数据的物理表示相一致的形式生成可执行查询。在一实施例中,抽象查询标识出定义将在抽象查询的结果集合中返回的数据记录的重点的模型实体,诸如医疗机构的患者。一般而言,“模型实体”定义从提交查询的用户或应用的角度看来的重点。
在一实施例中,抽象查询可关联于限制请求,其被用于响应于抽象查询而限制数据记录的结果集合。为此目的,限制请求指定在结果集合中返回的底层模型实体的一个或多个实例的数据记录的限制。例如,限制请求可指示从底层数据库返回的对于每个患者(或根据具体情况而定的其它模型实体)的数据记录的最大数量。基于抽象查询,能够被查询引擎执行的可执行查询被生成。可执行查询基于限制查询被修改,以反映所请求的限制。接着,经修改的可执行查询对于底层数据库执行,以获得按照限制请求所请求那样被限制的经过滤的结果集合。
优选实施例
在下文中参考本发明实施例。不过,应该理解,本发明并不限于特定描述的实施例。而是,以下特征和单元的任何组合不论是否涉及不同实施例均被预期实现和实践本发明。此外,在各种实施例中,本发明提供优于现有技术的多种优点。不过,尽管本发明的实施例可实现优于其它可能的解决方案和/或优于现有技术的优点,但是是否由给定实施例实现特定优点不会限制本发明。因此,以下方面、特征、实施例和优点仅是说明性的,并且除非明确表示之外,它们均不被认为是权利要求的要素或限制。
本发明的一实施例被实现为用于与计算机系统(例如图1所示并在以下描述的计算机系统110)一起使用的程序产品。程序产品的程序定义实施例的功能(包括此处描述的方法),并可被包含在多种计算机可读媒体中。说明性的计算机可读媒体包括但不限于:(i)永久存储在不可写存储媒体(例如,计算机内的只读存储器设备,诸如可由CD-ROM驱动器读取的CD-ROM盘)上的信息;(ii)存储在可写存储媒体(例如,软盘驱动器内的软盘或硬盘驱动器)上的可变信息;或者(iii)通过包括无线通信的通信媒体(诸如通过计算机或电话网络)传送到计算机的信息。后一实施例特别包括到/来自因特网和其它网络的信息。所述计算机可读媒体当承载引导本发明功能的计算机可读指令时表示了本发明实施例。
一般而言,被执行来实现本发明实施例的例程可以是操作系统或者特定应用、组件、程序、模块、对象或指令序列的一部分。本发明的软件典型地包括将被本地计算机翻译成机器可读格式(并从而成为可执行指令)的多个指令。同样,程序包括变量和数据结构,其本地驻留于程序中或在存储器或存储设备上找到。此外,下文中描述的多种程序可基于在本发明的特定实施例中实现所述程序的应用而被标识。不过,应该理解,使用以下的任何特定命名法仅是为了方便起见,并因此本发明不应被限制于仅在由这种命名法所标识和/或暗示的任何特定应用中使用。
示例性计算环境
图1示出根据本发明实施例的、当配置了这里描述的特征和功能之时即成为专用计算机的计算机100(其是计算机系统110的一部分)。计算机100可代表任何类型的计算机、计算机系统或其它可编程电子设备,包括客户机计算机、服务器计算机、便携式计算机、个人数字助理(PDA)、嵌入式控制器、基于PC的服务器、小型计算机、中型计算机、大型计算机、以及适于支持本发明的方法、装置和制品的其它计算机。说明性地,计算机100是连网系统110的一部分。在这点上,本发明可在分布式计算环境中实践,在分布式计算环境中由通过通信网络链接的远程处理设备来执行任务。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。在另一实施例中,计算机100是独立设备。出于解释权利要求的目的,术语“计算机”意味着具有至少一个处理器的任何计算机化的设备。计算机可以是单独设备或网络的一部分,在网络的情形中计算机可以被通信装置(例如,局域网或广域网)耦合到另一设备(即,另一计算机)。
在任一情形中,应该理解,图1仅是计算机系统的一种配置。本发明的实施例可应用于任何可比拟的配置,而不管计算机100是复杂的多用户装置、单用户工作站、还是其本身不具有非易失性存储装置的网络设备。
计算机100可包括多个操作者和外围系统,如图所示,它们例如通过海量存储接口137操作连接于存储设备138,通过视频接口140操作连接于显示器142,并且通过网络接口144经由适当的网络操作连接于多个连网设备146(其可以表示因特网)。尽管存储装置138被示为单个设备,但其可以是固定和/或可移除存储设备的任何组合,诸如固定盘驱动器、软盘驱动器、磁带驱动器、可移除存储卡或光学存储装置。显示器142可以是用于输出可查看信息的任何视频输出设备。
所示出的计算机100包括至少一个处理器112,处理器112包含经由总线114来自主存储器116的指令和数据。处理器112可以是适于支持本发明的方法的任何处理器。具体而言,计算机处理器112被选择来支持本发明的特征。说明性地,处理器是可从纽约Armonk的国际商业机器公司买到的PowerPC处理器。
主存储器116是大到足以保有必须的程序和数据结构的任何存储器。主存储器116可以是包括随机存取存储器、非易失性或后备存储器(例如,可编程或闪速存储器、只读存储器等)在内的存储器设备之一或其组合。此外,存储器116可以被看成包括物理上位于计算机系统110之外的别处的存储器,例如,被用作虚拟存储器或被存储在海量存储设备(例如直接存取存储设备138)上或经由总线114耦合于计算机100的另一计算机上的任何存储容量。因此,主存储器116和存储设备138可以是跨多个主存储设备和次级存储设备的一个虚拟地址空间的一部分。
示例性查询创建和执行环境
现在参考图2,示出了在一实施例中的软件组件的关系视图。软件组件说明性地包括用户界面210、DBMS 250、一个或多个应用220(为了简明仅示出一个应用)和抽象模型接口230。抽象模型接口230说明性地提供到数据抽象模型232和运行时组件234的接口。DBMS 250说明性地包括数据库214和具有查询引擎256的查询执行单元254。
根据一方面,应用220(以及更一般地,任何请求实体)发出对数据库214的查询。为了简明数据库214被示为单个数据库。不过,给定查询可对于多个数据库执行,所述多个数据库可以彼此相对分布。此外,一个或多个数据库可被分布于一个或多个连网设备(例如图1的连网设备146)。数据库214表示任何数据集合,而不管该数据的具体物理表示。数据的具体物理表示定义数据的组织模式。通过图示,数据库214可根据关系模型(可通过SQL查询来访问)或根据XML模式(可通过XML查询访问)来组织。不过,本发明并不限于特定模式,并预期扩展到当前未知的模式。如这里所使用的,术语“模式”指代数据的具体排列。
应用220发出的查询可以是预定义的(即,硬编码作为应用220的一部分)或可以响应于输入(例如用户输入)而生成。在一实施例中,应用220发出的查询可通过用户使用用户界面210来创建,用户界面210可以是被配置创建/提交查询的任何适当的用户界面。根据一方面,用户界面210是图形用户界面。不过,应该注意,用户界面210仅通过示例示出;任何适当的请求实体可以创建和提交对数据库214的查询(例如应用220、操作系统或终端用户)。从而,所有这样的实现都是被广泛预期的。
在一实施例中,使用抽象模型接口230来组成应用220发出的查询。换句话说,基于由数据抽象模型232定义的逻辑字段来创建查询。这样的查询在此被称为“抽象查询”。运行时组件234可被配置将抽象查询翻译成用于执行的查询。这样的查询在此被称为“具体”或“物理”查询。以下参考图3A-6描述了示例性的抽象模型接口。
说明性地,应用220发出与模型实体有关的抽象查询240,所述模型实体定义了将从数据库214返回的抽象查询240的结果集合中的数据记录的重点。例如,假设数据库214包括与医疗机构的患者有关的信息。从而,抽象查询240可以与表示数据记录的重点的模型实体“患者”有关。不过,应该注意,数据库214中的数据记录可以与不止一个模型实体有关。例如,尽管数据记录的一部分与模型实体“患者”有关,但另一部分可以与模型实体“雇员”有关,其关注于具有与医疗机构的雇员有关的信息的数据记录。此外,某些数据记录可以与不止一个模型实体相关联。所有这样的实现都是被广泛预期的。
抽象查询240说明性地包括来自数据库214的数据将被返回的一个或多个结果字段、以及一个或多个条件244。条件244被配置用于过滤在数据库214中包含的哪些数据记录被返回结果字段214中的每一个。不过,应该注意,条件244仅通过示例示出。换句话说,预期了条件未被实现的抽象查询的其它实施例。
在一实施例中,抽象查询240与限制请求246相关联,限制请求246被配置限制抽象查询240的结果集合。限制请求246指定对于从数据库214返回的底层模型实体的一个或多个实例的数据记录的限制。
根据一方面,用户可使用用户界面210来指定限制请求246。为此目的,用户界面210可被配置显示用于指定限制请求246的一个或多个适当的图形用户界面(GUI)屏幕。例如,GUI屏幕可被配置显示多个用户可选择的单元,每个单元表示定义了数据库214包括的数据记录的重点的模型实体。现在假设在给定示例中,GUI屏幕显示作为用户可选择的单元的模型实体“患者”和模型实体“雇员”,并且用户选择模型实体“患者”作为限制请求246的指定。GUI屏幕还可显示图形单元,图形单元允许选择将在限制请求246中定义对其的限制的数据抽象模型232的逻辑字段。现在假设用户选择具有医疗机构的患者的血红蛋白测试值的“血红蛋白”字段。图形单元还可被配置允许选择对所选择的逻辑字段的所请求的限制。通过示例,图形单元可显示用于选择对所选择的逻辑字段的限制“顶部”、“最高”、“最低”、“底部”、“最近”的按钮。现在假设用户已按下了按钮“顶部”。GUI屏幕接着可显示输入字段,其通过示例允许输入将在相应的结果集合中返回的对于所选择的模型实体的每个实例的数据记录的最大所允许数量。换句话说,在给定示例中,所述限制包括:把被返回的对于模型实体的每个实例的数据记录的数量限制为最大所允许数量。现在假设用户将值“3”输入所显示的输入字段中。从而,在给定示例中,用户已指定限制请求246,从而最多返回每个患者的前3个血红蛋白测试值。
不过,仅通过示例描述了使用GUI来指定限制请求246,但其并不意味着限制本发明。换句话说,用于指定限制请求246的任何可能的技术都是被广泛预期的。此外,应该注意,允许选择用于指定限制请求246的数据抽象模型232的任何逻辑字段可能导致限制请求246中的无用限制。更具体地,假设用户选择“患者ID”和“血红蛋白”字段作为抽象查询240的结果字段242,并接着在限制请求246中指示出把相应的结果集合限制为与模型实体“患者”有关的数据记录。再假设限制请求246指示出把数据记录限制为与三个年龄最大的患者有关(即,关于逻辑字段“年龄”)的数据记录。不过,因为抽象查询240未被配置检索用于逻辑字段“年龄”的数据,其是定义所述限制所需的,因此该限制将不会影响结果集合。因此,根据一方面,限制请求246仅可被指定抽象查询240的结果字段242之一。
此外,在一实施例中,被选择用于指定限制请求246的结果字段指代返回可根据限制请求246进行排序的数据结果的逻辑字段。在一实施例中,数据抽象模型232的每个逻辑字段包括指示底层数据是否可被排序的元数据。更具体地,对数据排序需要可能独立于底层数据类型。通过示例,排序可以对字符数据、整数值、浮点值、日期和时间戳来执行。对数据排序允许标识出被用于定义限制请求246的所选择的结果字段的数据值“顶部”、“最高”、“最低”、“底部”和/或“最近”。换句话说,对数据值排序允许限制请求246被应用于对于抽象查询240检索的数据。例如,当用户已指定限制请求246从而应该返回每个患者的前3个血红蛋白测试值时,每个患者的血红蛋白值可用降序排序,从而为每个患者生成列表。从而,在给定患者的列表中,在该列表顶部的前三个值是将返回的3个值。
基于抽象查询240,运行时组件234使用数据抽象模型232生成能够由查询引擎256执行的可执行查询。接着可执行查询基于限制请求246被运行时组件234修改,以反映所请求的限制。以下参考图4-6更详细地描述了运行时组件234生成和修改可执行查询的操作的一实施例。
经修改的可执行查询被提交给查询执行单元254用以对数据库214执行,并使用查询引擎256来执行以确定临时结果集合270。注意,如图所示,为了简明查询执行单元254仅包括查询引擎256。不过,查询执行单元254可包括其它组件,诸如查询解析器和查询优化器。查询解析器一般被配置接受从请求实体(诸如应用220)接收的查询输入,并接着解析所接收的查询。接着查询解析器可将经解析的查询转发给查询优化器用以优化。查询优化器是被配置构建对于给定搜索参数集合的接近最优的搜索策略(已知为“访问计划”)的应用程序,其是根据底层数据库(例如数据库214)的已知特性、将在其上执行搜索策略的底层系统(例如图1的计算机系统110)和/或最优的用户指定的优化目标来进行的。一般而言,所述搜索策略确定对用来执行查询的可用硬件/软件组件的最优使用。一旦选择了访问计划,接着查询引擎256就根据访问计划执行查询。
当执行对数据库214的可执行查询时,查询引擎256标识出数据库214中满足抽象查询240的每个数据记录。每个所标识的数据记录被包括在临时结果集合270。接着,在一实施例中,查询引擎256根据限制请求246过滤临时结果集合270。从而,经过滤的结果集合290被生成,其通过限制请求246所请求那样被限制。接着经过滤的结果集合290被返回给应用220。
环境的逻辑/运行时视图
图3A-3B示出在一实施例中的软件组件的关系视图。根据一方面,软件组件被配置用于查询执行管理,并说明性地包括图2的应用220、数据抽象模型232、运行时组件234和数据库214。通过示例,数据库214包括多个示例性的物理数据代表2141、2142、...、214N。
如上参考图2所述,应用220发出对数据库214的抽象请求240。在一实施例中,应用220发出由相应的应用查询规范222所定义的查询240。根据逻辑字段而不是通过对数据库214中的底层物理数据实体进行直接引用而组成抽象查询240。逻辑字段被数据抽象模型232定义,数据抽象模型232一般揭示作为可在由应用220发出的查询(例如抽象查询240)内使用的逻辑字段集合的信息,以指定数据选择标准并指定从查询操作返回的结果数据的形式。此外,抽象查询240可包括对指定抽象查询240的重点(模型实体302)的底层模型实体的引用。在一实施例中,应用查询规范222可包括用于数据选择的标准(选择标准304;例如图2的条件244)和将基于选择标准304返回的字段的明确规范(返回数据规范306;例如,图2的结果字段242),如图3B所示的。
数据抽象模型232的逻辑字段独立于在数据库214中使用的底层数据表示(即,多个示例性物理数据表示2141-N中之一)而被定义,从而允许查询松散耦合于底层数据表示而形成。更具体地,逻辑字段定义数据的抽象视图,或者作为独立数据项,或者作为以例如数据库表形式的数据结构。结果,独立于所使用的特定底层数据表示的诸如查询240的抽象查询可被定义。所述抽象查询可被转换为与底层物理数据表示2141-N相一致的形式,用以对数据库214执行。通过示例,抽象查询240被运行时组件234翻译成可执行查询,其对数据库214执行以便确定抽象查询240的相应结果集合(例如,图2的临时结果集合270)。
在图3B所示的一实施例中,数据抽象模型232包括多个字段规范3081、3082、3083、3084和3085(通过示例示出五个),统称为字段规范308(下文中也被称为“字段定义”)。特别地,字段规范被提供用于可用于组成抽象查询的每个逻辑字段。每个字段规范可包含一个或多个属性。说明性地,字段规范308包括逻辑字段名称属性3201、3202、3203、3204、3205(统称为字段名称320)以及相关联的访问方法属性3221、3222、3223、3224、3225(统称为访问方法322)。每个属性可具有值。例如,逻辑字段名称属性3201具有值“FirstName”,而访问方法属性3221具有值“Simple”。此外,每个属性可包括一个或多个相关联的抽象性质。每个抽象性质描述数据结构的特性并具有相关联的值。在本发明的上下文中,数据结构指代由对应于逻辑字段的数据的一个或多个物理实体所定义的底层物理表示的一部分。具体而言,抽象性质可表示抽象描述了对应于数据结构的物理数据实体的位置的数据位置元数据,诸如数据库表的名称或数据库表中的列的名称。说明性地,访问方法属性3221包括数据位置元数据“Table”和“Column”。此外,数据位置元数据“Table”具有值“contact”,而数据位置元数据“Column”具有值“f_name”。从而,假设本示例中的底层关系数据库模式,数据位置元数据“Table”和“Column”的值指向具有列“f_name”的表“contact”。
在一实施例中,逻辑字段的组(例如两组或多组)可以是分类的一部分。因而,数据抽象模型232包括多个分类规范3101和3102(通过示例示出两个),统称为分类规范。在一实施例中,分类规范被提供用于两个或多个逻辑字段的每个逻辑分组。例如,逻辑字段3081-3和3084-5分别是分类规范3101和3102的一部分。分类规范在此也被简称为“分类”。分类根据分类名称进行区分,例如,分类名称3301和3302(统称为分类名称330)。在本图示中,逻辑字段3081-3是分类“Name and Address”的一部分,而逻辑字段3084-5是分类“Birth and Age”的一部分。
访问方法322一般地将逻辑字段名称关联于(映射到)数据库(例如图2的数据库214)中的数据。如图3A所示,访问方法将逻辑字段名称关联于数据库中的特定物理数据表示2141-N。通过图示,示出了两个数据表示:XML数据表示2141和关系数据表示2142。不过,物理数据表示214N指示出已知或未知的任何其它数据表示都是预期的。在一实施例中,单个数据抽象模型232包含用于两个或多个物理数据表示2141-N的字段规范(以及相关联的访问方法)。在可替换实施例中,不同的单个数据抽象模型232被提供用于每个单独的物理数据表示2141-N。
取决于所支持的不同类型的逻辑字段的数量,任何数量的访问方法都是预期的。在一实施例中,提供了用于简单字段、经过滤字段和组合字段的访问方法。字段规范3081、3082和3085分别例示了简单字段访问方法3221、3222和3225。简单字段被直接映射到底层物理表示中的特定实体(例如,被映射到给定数据库表和行的字段)。通过图示,如上所述,图3B中示出的简单字段访问方法3221将逻辑字段名称3201(“FirstName”)映射到名为“contact”的表中名为“f_name”的列。字段规范3083例示了经过滤字段访问方法3223。经过滤字段标识相关联的物理实体并提供被用于定义物理表示内的项目的特定子集的过滤器。图3B中提供了示例,其中经过滤字段访问方法3223将逻辑字段名称3203(“AnyTownLastName”)映射到名为“contact”的表中名为“l_name”的列中的物理实体,并定义用于城市“AnyTown”中的个体的过滤器。经过滤字段的另一示例是NEWYORK ZIP代码字段,其映射到ZIP代码的物理表示,并将数据限制为仅是对于纽约州定义的那些ZIP代码。字段规范3084例示了组合字段访问方法3224。组合访问方法使用被提供为访问方法定义的一部分的表达式来从一个或多个逻辑字段中计算逻辑字段。以此方式,可以计算在底层物理数据表示中不存在的信息。在图3B中示出的示例中,组合字段访问方法3224将逻辑字段名称3204“AgeInDecades”映射到“AgeInYears/10”。另一示例是销售税字段,其通过用销售税率乘以销售价格字段而组成。
可以预期,用于底层数据的任何给定数据类型(例如日期、小数等)的格式可以不同。从而,在一实施例中,字段规范308包括反映底层数据的格式的类型属性。不过,在另一实施例中,字段规范308的数据格式不同于相关联的底层物理数据,在此情形中需要底层物理数据到逻辑字段的格式的转换。
通过示例,图3B中示出的数据抽象模型232的字段规范308表示被映射到图3A中示出的关系数据表示2142中所表示的数据的逻辑字段。不过,数据抽象模型232的其它实例将逻辑字段映射到其它物理表示,诸如XML。
以下在表I中示出了对应于图3B中示出的抽象查询240的说明性抽象查询。通过图示,使用XML定义了说明性的抽象查询。不过,任何其它语言可被用来获得优势。
表I-抽象查询示例
001 <?xml version=”1.0”?>
002 <!--Query string representation:(AgeInYears>”55”-->
003 <QueryAbstraction>
004 <Selection>
005 <Condition internalID=”4”>
006 <Condition field=”AgeInYears”operator=”GT”value=”55”
007 internalID=”1”/>
008 </Selection>
009 <Results>
010 <Field name=”FirstName”/>
011 <Field name=”AnyTownLastName”/>
012 <Field name=”Street”/>
013 </Results>
014 <Entity name=”Patient”>
015 <EntityField required=”Hard”>
016 <FieldRef name=”data://Demographic/Patient ID”/>
017 <Usage type=”query”/>
018 </EntityField>
019 </Entity>
020 </QueryAbstraction>
说明性地,表I中示出的抽象查询包括包含选择标准的选择规范(行004-008)和结果规范(行009-013)。在一实施例中,选择标准包括字段名称(对于逻辑字段)、比较操作符(=、>、<等)以及值表达式(字段与什么进行比较)。在一实施例中,结果规范是将被返回作为查询执行结果的抽象字段的列表。抽象查询中的结果规范可包括字段名称和排序标准。表I中示出的抽象查询还包括行014-019中的模型实体规范,其指定了所述查询是模型实体“患者”的查询。
以下在表II中示出了对应于图3B中示出的数据抽象模型232的说明性的数据抽象模型(DAM)。通过图示,使用XML定义了说明性的数据抽象模型。不过,任何其它语言可被用来获得优势。
表II-数据抽象模型示例
001 <?xml version=”1.0”?>
002 <DataAbstraction>
003 <Category name=”Name and Address”>
004 <Field queryable=”Yes”name=”FirstName”displayable=”Yes”>
005 <AccessMethod>
006 <Simple columnName=”f_name”tableName=”contact”></Simple>
007 </AccessMethod>
008 </Field>
009 <Field queryable=”Yes”name=”LastName”displayable=”Yes”>
010 <AccessMethod>
011 <Simple columnName=”l_name”tableName=”contact”></Simple>
012 </AccessMethod>
013 </Field>
014 <Field queryable=”Yes” name=”AnyTownLastName”
displayable=”Yes”>
015 <AccessMethod>
016 <Filter columeName=”l_name”tableName=”contact”
017 Filter=”contact.city=Anytown”></Filter>
018 </AccessMethod>
019 </Field>
020 </Category>
021 <Category name=”Birth and Age”>
022 <Field queryable=”Yes”name=”AgeInDecades”displayable=”Yes”>
023 <AccessMethod>
024 <Composed columnName=”age”tableName=”contact”
025 Expression=”columnName/10”></Composed>
026 </AccessMethod>
027 </Field>
028 <Field queryable=”Yes”name=”AgeInYears”displayable=”Yes”>
029 <AccessMethod>
030 <Simple columnName=”age”tableName=”contact”></Simple>
031 </AccessMethod>
032 </Field>
033 </Category>
034 </DataAbstraction>
通过示例,注意,行004-008对应于图3B中示出的DAM 232的第一字段规范3081,而行009-013对应于第二字段规范3082。
如上面所述,可基于表I的抽象查询而生成可执行查询,用于对底层数据库(例如,图3A的数据库214)执行。以下参考图4-6描述用于基于抽象查询生成可执行查询的示例性方法。
基于抽象查询生成可执行查询
现在参考图4,示出例示了使用图2的运行时组件234基于抽象查询(例如图2的抽象查询240)生成可执行查询(下文也被称为“具体”查询)的一实施例的说明性运行时方法400。当运行时组件234接收作为输入的抽象查询(诸如表I中示出的抽象查询)时,在步骤402进入方法400。在步骤404,运行时组件234读取和解析抽象查询,并定位单独的选择标准(例如图2的条件244)以及想要的结果字段(例如图2的结果字段242)。
在步骤406,运行时组件234进入用于处理在抽象查询中呈现的每个查询选择标准语句的循环(由步骤406、408、410和412所定义),从而构造具体查询的数据选择部分。在一实施例中,选择标准包括字段名称(对于逻辑字段)、比较操作符(=、>、<等)以及值表达式(字段与什么进行比较)。在步骤408,运行时组件234使用来自抽象查询的选择标准的字段名称来查找数据抽象模型232中的字段的定义。如上面所述,字段定义包括用于访问与该字段相关联的数据结构的访问方法的定义。运行时组件234接着构造(步骤410)用于所处理的逻辑字段的具体查询贡献(contribution)。如这里定义的,具体查询贡献是具体查询的一部分,其被用于基于当前的逻辑字段执行数据选择。具体查询是以诸如SQL和XML查询的语言所表示的查询,并且与给定物理数据储存库(例如关系数据库或XML储存库)的数据相一致。从而,具体查询被用于从物理数据储存库(由图2中示出的数据库214表示)定位和检索数据。被生成用于当前字段的具体查询贡献接着被添加到具体查询语句(步骤412)。方法400接着返回步骤406,以开始对于抽象查询的下一字段的处理。从而,对于抽象查询中的每一数据选择字段重复在步骤406进入的过程,从而将额外内容贡献给将被执行的最终查询。
在构造具体查询的数据选择部分之后,运行时组件234标识将被返回作为查询执行结果的信息。如上所述,在一实施例中,抽象查询定义结果字段的列表,即,将被返回作为查询执行结果的逻辑字段的列表,在此被称为结果规范。抽象查询中的结果规范可包括字段名称和排序标准。从而,方法400在步骤414进入用于将结果字段定义添加到所生成的具体查询的循环(由步骤414、416、418和420所定义)。在步骤416,运行时组件234在数据抽象模型232中查找结果字段名称(通过抽象查询的结果规范),并接着从数据抽象模型232中检索结果字段定义,以标识将被返回的当前逻辑结果字段的数据的物理位置。运行时组件234接着构造(在步骤418)逻辑结果字段的(标识将被返回的数据的物理位置的具体查询的)具体查询贡献。在步骤420,具体查询贡献接着被添加到具体查询语句。一旦抽象查询中的结果规范中的每个已被处理,处理就在步骤422继续。
在步骤422,运行时组件234确定是否定义了用于抽象查询的限制请求(例如,图2的限制请求246)。如果确定不存在用于抽象查询的限制请求,则处理在步骤426继续。否则,在步骤424基于限制请求修改具体查询。以下参考图6更详细地描述基于相关联的限制请求修改具体查询的示例性方法。接着处理在步骤426继续,在步骤426执行具体查询。
参考图5描述了根据步骤410和418的用于构造逻辑字段的具体查询贡献的方法500的一实施例。在步骤502,方法500查询关联于当前逻辑字段的访问方法是否是简单访问方法。如果是,则基于物理数据位置信息构造(步骤504)具体查询贡献,并且处理接着根据如上所述的方法400继续。否则,处理继续到步骤506,以查询关联于当前逻辑字段的访问方法是否是经过滤访问方法。如果是,则基于给定数据结构的物理数据位置信息构造(步骤508)具体查询贡献。在步骤510,用被用于关联于给定数据结构的子集数据的额外逻辑(过滤选择)来扩展具体查询贡献。处理接着根据上述的方法400继续。
如果访问方法不是经过滤访问方法,则处理从步骤506进行到步骤512,在步骤512方法500查询访问方法是否是组合访问方法。如果访问方法是组合访问方法,则在步骤514定位和检索在组合字段表达式中用于每个子字段引用的物理数据位置。在步骤516,组合字段表达式的物理字段位置信息被替换为组合字段表达式的逻辑字段引用,由此生成具体查询贡献。处理接着根据上述的方法400继续。
如果访问方法不是组合访问方法,则处理从步骤512进行到步骤518。步骤518代表被预期为本发明实施例的任何其它访问方法类型。不过,应该理解,在所预期的实施例中实现的访问方法少于所有可用的访问方法。例如,在特定实施例中,仅使用简单访问方法。在另一实施例中,仅使用简单访问方法和经过滤访问方法。
基于相关联的限制请求修改具体查询
现在参考图6,示出了用于使用图2的运行时组件234基于相关联的限制请求(例如图2的限制请求246)来修改具体查询的方法600的一实施例。根据一方面,方法600从图4的步骤424进入。
现在通过示例假设在图III中示出的示例性具体SQL查询表示根据方法600修改的具体查询。不过,应该注意,出于说明而不是限制本发明的目的而用SQL定义示例性查询。例如,本领域技术人员将容易地认识到诸如用来描述表I的示例性抽象查询的相应的XML表示。因此,所有这样的不同实现都是广泛预期的。
表III-具体查询示例
001 SELECT
002 PatientID,Hemoglobin
003 FROM
004 Tests
表III的示例性查询被配置检索医疗机构的患者的血红蛋白测试值(行002中的“Hemoglobin”)。通过相关联的患者标识符(行002中的“PatientID”)唯一地标识每个患者。根据行004,血红蛋白测试值和相应的患者标识符可从底层“Tests”数据库表中检索到。不过,应该注意,为了简短和简明,表III的示例性具体查询不包括任何条件(例如图2的条件244)。
再假设由方法600基于以下表IV中示出的示例性限制请求来修改表III的示例性具体查询。如上所述,可通过用户与GUI或基于文本的界面进行交互来指定限制请求,以组成抽象查询。
表IV-限制请求示例
001 LIMIT RESULTS TO
002 Top 3 Hemoglobin values for each Patient
表IV的示例性限制请求被配置把表III的示例性具体查询的结果集合限制为(行001中的“LIMIT RESULTS TO”)对于每个患者(即,对于“Patient”模型实体的每个实例)最多三个数据记录(行002中的“3hemoglobin values for each patient”)。应该在结果集合中仅返回具有最大测试值(行002中的“Top”)的数据记录。
方法600在步骤610进入,在步骤610,表IV的限制请求被解析,以标识对其指定限制的对应于结果字段的逻辑字段(行002中的“Hemoglobin”)以及底层模型实体(行002中的“Patient”)。接着,在步骤620,检索用于已标识逻辑字段的访问方法。在给定示例中,假设逻辑字段“Hemoglobin”指代根据“Simple”访问方法所访问的“Tests”表中的列“Hemoglobin”。
在步骤630,表III的示例性具体查询被修改,从而在对于底层模型实体的每个实例(即,在本示例中对于每个患者)的相应的临时结果集合(例如图2的临时结果集合270)中,“Hemoglobin”字段的数据值被排序。在给定示例中,数据记录关于由相关联的患者标识符所标识的不同患者被划分,并接着关于血红蛋白测试值被排序。例如,如果底层物理数据库被配置接收和处理SQL查询,则额外的SQL选择子句“PARTITION byPatientID ORDER BY Hemoglobin DESC”被添加到表III的示例性具体查询的行002。通过示例,以降序(“DESC”)执行所述排序。
在步骤640,表III的示例性具体查询被进一步修改,从而临时结果集合中的数据记录被过滤,使得对于每个患者返回具有患者的最大血红蛋白测试值的不多于三个数据记录。因此,生成反映表IV的示例性限制请求的经过滤结果集合(例如图2的经过滤结果集合290)。
在给定示例中,为临时结果集合中的每个数据记录创建行号。在一实施例中,给定患者的数据记录从行号“1”开始编号。接着,对于给定患者的每个随后的数据记录,行号增加。因此,每个患者的数据记录的行号始于“1”。从而,上述的额外的选择子句被修改成“rownumber()over(PARTITION by PatientID ORDER BY Hemoglobin DESC)asrow_num”。
此外,在示例性具体查询中生成将对于每个患者的最多三个数据记录包括于经过滤结果集合的请求。通过使用如上所述创建的数据记录的行号,仅有行号小于等于三的数据记录被包括于经过滤结果集合。换句话说,条件“WHERE row_num<=3”被包括于表III的示例性的具体查询。从而,以下得到表V的示例性的经修改的具体SQL查询。
表V-经修改的具体查询示例
001 SELECT
002 PatientID,Hemoglobin,
003 rownumber() over (PARTITION by PatientID ORDER BY
Hemoglobin DESC)
004 as row_num
005 FROM
006 Tests
007 WHERE
008 row_num<=3
应该注意,在表V的示例性的经修改的具体查询的行003-004和007-008中反映了表IV的示例性限制请求。接着方法600在图4的步骤426继续。
如以上参考图4所述的,在步骤426执行经修改的具体查询。在给定示例中,假设对底层“Tests”数据库表(为了简短其未被更详细描述)执行表IV的查询。不过本领域技术人员将容易地认识到底层Tests表的可能实现和标识。从而,假设以下得到表V中所示的示例性查询结果(例如图2的经过滤查询结果290)。
表V-示例性查询结果
001 PatientID Hemoglobin row_num
002 5000 3.90 1
003 5001 3.00 1
004 5002 -1
005 5003 6.81 1
006 5003 6.71 2
007 5003 1.00 3
008 5004 7.40 1
009 5004 1.40 2
010 5005 -1
011 5006 2.40 1
012 5007 -1
013 5008 5.73 1
说明性地,表V的示例性查询结果包括对于每个患者的所允许的最大数量的三个数据记录。例如,行(行005-007)示出由患者标识符“5003”标识的对于该患者的三个最大值。通过示例,假设底层Tests表(以及由此的临时结果集合)包括被这样过滤的、血红蛋白测试值低于1.00(该患者的第三次测试的值)的此患者的十个数据记录。不过,对于患者标识符为5000、5001、5004、5006和5008的患者(行002、003、008、009、011和013),返回少于三个数据记录,其仅示出对于这些患者中的每一个的一个或两个血红蛋白值。此外,对于患者标识符为5002、5005和5007的患者(行004、010和012),无法在Tests表中检索到血红蛋白值,并因此未示出这些患者的血红蛋白值。
应该理解,表IV的示例性限制请求应用于在底层Tests表中存在数据记录的每个患者的记录。不同实现可允许对于所请求的限制的不同粒度。例如,表IV的示例性限制请求可关于一个或多个特定患者进行改进。通过示例,假设以下表VI中所示的示例性限制请求关联于表III的示例性具体查询。为了简短,也以自然语言示出表VI的示例性限制请求。
表VI-限制请求示例
001 LIMIT RESULTS TO
002 Top 3 Hemoglobin values for PatientID=5003
表VI中的示例性限制请求被配置将表III的示例性具体查询的结果集合限制为(行001中的“LIMIT RESULTS TO”)由唯一的患者标识符“5003”(行002中的“for PatientID=5003”)标识的患者的最多三个数据记录(行002中的“3 Hemoglobin values”)。在此示例中,以下得到表VII的示例性的经修改的具体SQL查询。
表VII-经修改的具体查询示例
001 SELECT
002 PatientID,Hemoglobin,
003 rownumber() over(PARTITION by PatientID ORDER BY
Hemoglobin DESC)
004 as row_num
005 FROM
006 Tests
007 WHERE
008 row_num<=3 AND PatientID=5003
应该理解,在表VII的经修改的具体查询的行008中,所请求的PatientID被添加作为条件。因此,如表VI和VII所示,可在限制请求中包括多个条件。
如果对于底层Tests表执行表VII的示例性的经修改的具体查询,则以下得到表VIII中所示的示例性查询结果(例如图2的经过滤的查询结果290)。
表VIII-示例性查询结果
001 PatientID Hemoglobin row_num
002 5003 6.81 1
003 5003 6.71 2
004 5003 1.00 3
如可从表VIII看到的,示例性查询结果(例如图2的经过滤的查询结果290)仅包含由唯一的患者标识符“5003”标识的患者的数据记录。
尽管前述内容指引本发明实施例,但是可设计本发明的其它和进一步的实施例,而不会脱离本发明的基本范围,并且本发明的范围由权利要求确定。
Claims (11)
1.一种处理对具有多个数据记录的数据库的数据库查询的计算机实现的方法,包括:
从请求实体接收抽象查询,所述抽象查询标识定义所述查询的重点的模型实体,并包括至少一个结果字段规范,所述结果字段规范包括将从数据库返回数据的一个或多个结果字段;其中在抽象地描述数据库中的数据的数据抽象模型中定义所述模型实体;
接收被配置限制所述抽象查询的结果集合的限制请求,所述限制请求指定与响应于所述查询被返回的所述底层模型实体的一个或多个实例的数据记录集合有关的限制;
从所述抽象查询中并关于所述数据抽象模型生成能够被查询引擎执行的可执行查询;
基于所述限制请求修改所述可执行查询;
执行对所述数据库的经修改的可执行查询,以得到结果集合,由此所述结果集合按照所述限制请求所请求的那样被限制;以及
将受限制的结果集合输出到所述请求实体。
2.根据权利要求1所述的方法,其中所述底层模型实体对应于医疗机构的患者,由此所述数据库中的多个数据记录中的每个包括与表示所述底层模型实体的实例的特定患者有关的信息。
3.根据权利要求1所述的方法,其中执行所述经修改的可执行查询包括:
生成包括满足由所述抽象查询指定的选择标准的数据记录集合的临时结果集合;以及
基于所述限制请求过滤所述临时结果集合,以生成受限制的结果集合。
4.根据权利要求1所述的方法,其中被返回的所述底层模型实体的一个或多个实例的数据记录的所述限制定义了将从所述数据库返回的所述底层模型实体的每个实例的所允许数据记录的最大数量。
5.根据权利要求4所述的方法,其中执行所述经修改的可执行查询包括:
生成满足所述抽象查询的临时结果集合;
从所述临时结果集合中标识按照所述限制请求所请求那样的所述底层模型实体的每个实例的所允许数据记录的最大数量;以及
基于所标识的数据记录生成受限制的结果集合。
6.根据权利要求4所述的方法,其中所允许数据记录的最大数量由给定结果字段的最高有效数据项目的预定义数量所定义。
7.根据权利要求4所述的方法,其中所允许数据记录的最大数量由给定结果字段的最低有效数据项目的预定义数量所定义。
8.根据权利要求1所述的方法,其中所述抽象查询的每个结果字段是所述数据抽象模型的逻辑字段,所述数据抽象模型被配置允许基于所述抽象查询的一个或多个逻辑字段,以与数据库中的数据的物理表示相一致的形式来生成所述可执行查询。
9.根据权利要求8所述的方法,其中所述限制请求涉及所述抽象查询的所选择的结果字段。
10.根据权利要求8所述的方法,其中生成所述可执行查询包括:
基于所述抽象查询生成用于对所述数据库执行的SQL查询。
11.一种系统,包括用于执行方法权利要求1-10中的任一方法的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/316,265 | 2005-12-22 | ||
US11/316,265 US7472116B2 (en) | 2005-12-22 | 2005-12-22 | Method for filtering query results using model entity limitations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1987861A true CN1987861A (zh) | 2007-06-27 |
Family
ID=38184658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006101465694A Pending CN1987861A (zh) | 2005-12-22 | 2006-11-15 | 处理数据库查询的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7472116B2 (zh) |
CN (1) | CN1987861A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714058B (zh) * | 2012-09-28 | 2017-05-17 | Sap欧洲公司 | 用于数据库查询优化的方法以及使用该方法的系统 |
CN108984623A (zh) * | 2018-06-14 | 2018-12-11 | 东软集团股份有限公司 | 数据查询条件生成方法、装置、存储介质和电子设备 |
CN109299238A (zh) * | 2018-09-27 | 2019-02-01 | 北京惠每云科技有限公司 | 一种数据查询方法和装置 |
CN112100199A (zh) * | 2020-09-21 | 2020-12-18 | 上海达梦数据库有限公司 | 一种基于数据集分组的分析方法、装置、设备及介质 |
CN116472527A (zh) * | 2020-11-16 | 2023-07-21 | 斯诺弗雷克公司 | 用于控制数据库系统中的信息访问的受限视图 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7472116B2 (en) * | 2005-12-22 | 2008-12-30 | International Business Machines Corporation | Method for filtering query results using model entity limitations |
US8219919B2 (en) * | 2006-02-06 | 2012-07-10 | Attachmate Group | Method for automating construction of the flow of data driven applications in an entity model |
US7792792B2 (en) * | 2006-05-22 | 2010-09-07 | Microsoft Corporation | Synchronizing structured web site contents |
US8484220B2 (en) * | 2007-03-06 | 2013-07-09 | Mcafee, Inc. | Clustered index with differentiated subfields |
US7680780B2 (en) * | 2007-04-06 | 2010-03-16 | International Business Machines Corporation | Techniques for processing data from a multilingual database |
US20080270885A1 (en) * | 2007-04-26 | 2008-10-30 | Kristin Petersen | Method and Apparatus for Displaying Sorted Test Data Entries |
US20080270401A1 (en) * | 2007-04-26 | 2008-10-30 | Kristin Petersen | Method and Apparatus for Displaying Sorted Test Data Entries |
US9009137B2 (en) * | 2010-03-12 | 2015-04-14 | Microsoft Technology Licensing, Llc | Query model over information as a networked service |
US8676787B2 (en) | 2011-12-22 | 2014-03-18 | International Business Machines Corporation | Distributed multi-step abstract queries |
US9582585B2 (en) | 2012-09-07 | 2017-02-28 | Splunk Inc. | Discovering fields to filter data returned in response to a search |
US8788525B2 (en) | 2012-09-07 | 2014-07-22 | Splunk Inc. | Data model for machine data for semantic search |
US20150019537A1 (en) | 2012-09-07 | 2015-01-15 | Splunk Inc. | Generating Reports from Unstructured Data |
CN105100168A (zh) * | 2014-05-21 | 2015-11-25 | 北京大学 | 一种基于应用执行单元的PaaS请求分发机制 |
US10671605B2 (en) * | 2016-04-12 | 2020-06-02 | Snowflake Inc. | Managing persistent database result sets |
CN108281195A (zh) * | 2017-01-04 | 2018-07-13 | 深圳市全息医疗数据有限责任公司 | 一种医疗数据的管理方法及系统 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5253362A (en) | 1990-01-29 | 1993-10-12 | Emtek Health Care Systems, Inc. | Method for storing, retrieving, and indicating a plurality of annotations in a data cell |
US5734887A (en) | 1995-09-29 | 1998-03-31 | International Business Machines Corporation | Method and apparatus for logical data access to a physical relational database |
US6040830A (en) | 1997-06-20 | 2000-03-21 | Autodesk, Inc. | Intelligent proxy objects |
US6553368B2 (en) | 1998-03-03 | 2003-04-22 | Sun Microsystems, Inc. | Network directory access mechanism |
US6725227B1 (en) * | 1998-10-02 | 2004-04-20 | Nec Corporation | Advanced web bookmark database system |
US20020062258A1 (en) | 2000-05-18 | 2002-05-23 | Bailey Steven C. | Computer-implemented procurement of items using parametric searching |
US6708186B1 (en) * | 2000-08-14 | 2004-03-16 | Oracle International Corporation | Aggregating and manipulating dictionary metadata in a database system |
US7024425B2 (en) | 2000-09-07 | 2006-04-04 | Oracle International Corporation | Method and apparatus for flexible storage and uniform manipulation of XML data in a relational database system |
US6601065B1 (en) | 2000-12-21 | 2003-07-29 | Cisco Technology, Inc. | Method and apparatus for accessing a database through a network |
US8244702B2 (en) * | 2002-02-26 | 2012-08-14 | International Business Machines Corporation | Modification of a data repository based on an abstract data representation |
US6996558B2 (en) | 2002-02-26 | 2006-02-07 | International Business Machines Corporation | Application portability and extensibility through database schema and query abstraction |
US6928431B2 (en) | 2002-04-25 | 2005-08-09 | International Business Machines Corporation | Dynamic end user specific customization of an application's physical data layer through a data repository abstraction layer |
US6954748B2 (en) | 2002-04-25 | 2005-10-11 | International Business Machines Corporation | Remote data access and integration of distributed data sources through data schema and query abstraction |
US7096229B2 (en) | 2002-05-23 | 2006-08-22 | International Business Machines Corporation | Dynamic content generation/regeneration for a database schema abstraction |
US7188105B2 (en) * | 2002-10-10 | 2007-03-06 | International Business Machines Corporation | Query abstraction high level parameters for reuse and trend analysis |
US7340480B2 (en) * | 2003-05-08 | 2008-03-04 | International Business Machines Corporation | Iterative data analysis enabled through query result abstraction |
US20060004794A1 (en) * | 2004-06-30 | 2006-01-05 | Microsoft Corporation | Rich application view system and method |
US7472116B2 (en) | 2005-12-22 | 2008-12-30 | International Business Machines Corporation | Method for filtering query results using model entity limitations |
-
2005
- 2005-12-22 US US11/316,265 patent/US7472116B2/en not_active Expired - Fee Related
-
2006
- 2006-11-15 CN CNA2006101465694A patent/CN1987861A/zh active Pending
-
2008
- 2008-08-20 US US12/195,159 patent/US7949652B2/en not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714058B (zh) * | 2012-09-28 | 2017-05-17 | Sap欧洲公司 | 用于数据库查询优化的方法以及使用该方法的系统 |
CN108984623A (zh) * | 2018-06-14 | 2018-12-11 | 东软集团股份有限公司 | 数据查询条件生成方法、装置、存储介质和电子设备 |
CN108984623B (zh) * | 2018-06-14 | 2020-11-03 | 东软集团股份有限公司 | 数据查询条件生成方法、装置、存储介质和电子设备 |
CN109299238A (zh) * | 2018-09-27 | 2019-02-01 | 北京惠每云科技有限公司 | 一种数据查询方法和装置 |
CN109299238B (zh) * | 2018-09-27 | 2020-12-08 | 北京惠每云科技有限公司 | 一种数据查询方法和装置 |
CN112100199A (zh) * | 2020-09-21 | 2020-12-18 | 上海达梦数据库有限公司 | 一种基于数据集分组的分析方法、装置、设备及介质 |
CN112100199B (zh) * | 2020-09-21 | 2024-03-26 | 上海达梦数据库有限公司 | 一种基于数据集分组的分析方法、装置、设备及介质 |
CN116472527A (zh) * | 2020-11-16 | 2023-07-21 | 斯诺弗雷克公司 | 用于控制数据库系统中的信息访问的受限视图 |
Also Published As
Publication number | Publication date |
---|---|
US20080319965A1 (en) | 2008-12-25 |
US7472116B2 (en) | 2008-12-30 |
US20070150459A1 (en) | 2007-06-28 |
US7949652B2 (en) | 2011-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1987861A (zh) | 处理数据库查询的系统和方法 | |
US11755575B2 (en) | Processing database queries using format conversion | |
CN1705945B (zh) | 提供查询的属性的方法和系统 | |
US7406477B2 (en) | Database system with methodology for automated determination and selection of optimal indexes | |
US8650181B2 (en) | OLAP execution model using relational operations | |
US9507825B2 (en) | Techniques for partition pruning based on aggregated zone map information | |
US8135698B2 (en) | Techniques for representing relationships between queries | |
US7840584B2 (en) | Iterative data analysis enabled through query result abstraction | |
CN111971666A (zh) | 优化sql查询计划的维度上下文传播技术 | |
US7359922B2 (en) | Database system and methodology for generalized order optimization | |
AU2005201996B2 (en) | Combining multidimensional expressions and data mining extensions to mine OLAP cubes | |
US7693857B2 (en) | Clinical genomics merged repository and partial episode support with support abstract and semantic meaning preserving data sniffers | |
US7844623B2 (en) | Method to provide management of query output | |
CN100465953C (zh) | 用逻辑模型查询物理字段或处理抽象查询的方法及系统 | |
US20080228716A1 (en) | System and method for accessing unstructured data using a structured database query environment | |
US20060074953A1 (en) | Metadata management for a data abstraction model | |
US8266186B2 (en) | Semantic model association between data abstraction layer in business intelligence tools | |
US10922328B2 (en) | Method and system for implementing an on-demand data warehouse | |
CN102479255A (zh) | 用于优化数据库查询的方法和系统 | |
Crescenzi et al. | Crowdsourcing for data management | |
US7761461B2 (en) | Method and system for relationship building from XML | |
US8250024B2 (en) | Search relevance in business intelligence systems through networked ranking | |
EP1634196B1 (en) | Data processing method and system for combining database tables | |
TW202414243A (zh) | 電腦實行的視覺查詢匹配方法及其實行系統 | |
AU785452B2 (en) | Sequential subset catalog search engine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |