CN101164065A - 结构化查询语言中的路径表达式 - Google Patents

结构化查询语言中的路径表达式 Download PDF

Info

Publication number
CN101164065A
CN101164065A CNA2006800085361A CN200680008536A CN101164065A CN 101164065 A CN101164065 A CN 101164065A CN A2006800085361 A CNA2006800085361 A CN A2006800085361A CN 200680008536 A CN200680008536 A CN 200680008536A CN 101164065 A CN101164065 A CN 101164065A
Authority
CN
China
Prior art keywords
connection
quoting
database
relation
join
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
Application number
CNA2006800085361A
Other languages
English (en)
Inventor
B·拉塔克瑞施纳
C·坎宁安
E·扎伯克利特斯基
J·A·布莱克利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101164065A publication Critical patent/CN101164065A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24544Join order optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Operations Research (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

用于经由采用引用连接扩展查询语言以通过捕捉多张表之间的现有联接的语义来定义连接的简单公式化的系统和方法。这一引用连接允许编译器利用数据库中的现有关系,并利用关于引用约束的现有知识来将引用连接表达式无歧义地变换成所涉及的列上的等效内部连接。因此,可提供更简单的查询句法和语义来表达对例如主键/外键关系的多表连接导航。

Description

结构化查询语言中的路径表达式
技术领域
本发明一般涉及查询语言,尤其涉及利用数据库中的现有关系的连接的公式化。
发明背景
计算机技术(例如,微处理器速度、存储器能力、数据传输带宽、软件功能等)的日益进步一般对计算机在各种行业中的应用做出了贡献。通常提供了常被配置为服务器阵列的更强大的服务器系统来服务源自诸如万维网等外部源的请求。
当可用电子数据的数量增长时,以便于用户友好且快速的数据搜索和检索的可管理方式储存这些数据变得愈发重要。数据库管理系统(DBMS)通常可管理任何形式的数据,包括文本、图像、声音和视频。当今,一种常见的方法是将电子数据储存在一个或多个数据库中。一般而言,典型的数据库可被称为有组织的信息集合,其中数据被结构化使得计算机程序可快速搜索和选择例如期望的各个数据。通常,数据库内的数据是经由一张或多张表来组织的。这些表被排列成行和列的数组。据此,数据库和文件结构是由软件应用程序来确定的。
同样,表可包括一组记录,且记录包括一组字段。记录通常被索引为表内的行,而记录字段通常被索引为列,使得索引的行/列对可引用表内的一个特定数据。例如,行可储存与销售交易、个人或项目有关的完整的数据记录。同样,表的列可定义具有相同的通用数据格式的行的离散部分,而列可定义记录的字段。
对这类表的查询可根据标准查询语言(例如,结构化查询语言(SQL))来构造以访问数据库中的表的内容。同样,数据可经由外部源输入(例如,导入)到表中。此外,数据库应用程序设计者通常可例如使用诸如实体关系模型和统一数据模型语言(UML)等数据建模语言来对世界建模。
这些模型可按照实体和关系来表示世界。例如,在持有与作者(Author)和文档(Documents)有关的数据的数据库中,文档和作者可作为实体来对待,且“由……编写(WrittenBy)”可被设计为关系。关系定义通常可具有与其相关联的基数。由此,在数据库环境中,可以存在一对一(1∶1)、一对多(1∶N)以及多对多(N∶M)关系(其中N和M是整数)。
一对一和一对多关系可通过引用约束在SQL中捕捉。同样,多对多关系通常可通过引入捕捉这一关系的中间表(例如,WrittenBy)来建模。通常,SQL查询和更新语句的语义稳固地扎根于关系代数学。然而,通过连接导航多个表的当今的各种SQL查询的公式化通常太过冗长。
例如,在作者和文档表的多对多关系中,其中文档可具有多个作者而作者可编写多个文档,首先需要清楚地说明表之间的关系。随后,需要指定连接条件并应用各种过滤器表达式。因此,公式化这类查询可能需要采用多个表,且在SQL级别处,与这一连接有关的所有细节通常应当被清楚地说明。因此,需要指定可能会进一步导致冗长公式化的多个定义,这会导致对应用程序开发者的难以处理的接口以及系统资源的浪费。
因此,需要克服与常规系统和设备相关联的上述示例性缺陷。
发明概述
以下提出了本发明的简化概述以提供对本发明的一个或多个方面的基本理解。这一概述不是本发明的广泛综述。它既不旨在标识本发明的关键或决定性要素,也不旨在描绘本发明的范围。相反,该概述的唯一目的是以简化的形式提出本发明的某些概念,作为之后提出的更详细描述的序言。
本发明提供了可通过经由采用引用连接捕捉多个表之间的现有联接的语义来扩展查询语言并定义连接的简单公式化的系统和方法。这一引用连接(REF JOIN)可利用数据库中的现有关系(例如,关系型元数据中捕捉的主键-外键关系)来公式化句法简明性。为在两个源表(例如,左表源{LTS}和右表源{RTS})之间提供根据本发明的引用连接,一般在两者之间应仅存在一个引用约束。
例如,当SQL编译器可以无歧义地映射引用连接实现的简洁表示法时,其中通常在关系之间仅存在一条路径。在其它情况下,可提示用户提供附加信息以唯一地定义这一单一路径。由此,根据本发明的一方面的SQL编译器可采用关于引用约束的现有知识来允许将引用连接(REF JOIN)表达式无歧义地变换成列上的等价INNER JOIN(内部连接),该连接参与两张表之间的引用约束。因此,可提供更简单的查询句法和语义来表达例如对主键/外键关系的多表连接导航。
在另一方面,本发明的引用连接可被变换成内部连接,其中如果在多张表之间存在无歧义的引用完整性约束,则某些表可保持未暴露以提供导航期间的表“跳跃”。例如,一旦在表1(T1)和表2(T2)之间存在经由表3(T3)的无歧义引用完整性约束路径,则T1 REF JOIN T2可被转换成T1 INNER JOIN T3 INNERJOIN T2而不暴露T3的列。
在本发明的又一方面,用户可引用文档视图来获得所需的值,其中在更新期间,引用连接可促进对底层基表的相应原语更新的自动变换,并以正确的顺序执行基表更新以满足引用完整性约束。因此,本发明的引用连接(REF JOIN)可便于由REF JOIN定义的对象视图的插入、删除和更新的自动转换。这一自动转换到相应的正确且有序的等效基表更新序列通常通过考虑在对文档视图有贡献的底层基表之间定义的引用完整性约束来执行。
根据本发明的再一方面,可提供动态地学习所创建的各种关系(与静态的现有外键(FK)-主键(PK)关系相比)的关系型连接组件,因此当数据库增长时,这一关系连接可指导编译器清楚地说明引用连接。另外,本发明可便于由对象关系系统映射到关系型模型。
为实现上述和相关目的,本发明因而包括了以下完全描述的特征。以下描述和附图详细阐明了本发明的某些说明性方面。然而,这些方面仅指示了可采用本发明的原理的各种方式中的几种。当结合附图考虑时,从本发明的详细描述中可以清楚本发明的其它方面、优点和新颖特征。
附图简述
图1示出了根据本发明的一方面的引用连接系统的框图。
图2示出了根据本发明的一方面的多张表之间的引用连接操作的具体示例。
图3示出了可实现本发明的各方面的查询编译管线的框图。
图4示出了根据本发明的一方面经由引用连接来简化连接的公式化的示例性流程。
图5示出了根据本发明的一特定方面的使用引用连接的视图更新的示例性方法。
图6示出了根据本发明可随着数据库的增长动态地学习表之间的联接约束的关系型联接的框图。
图7示出了可采用根据本发明的一方面的引用连接的客户机-服务器的框图。
图8示出了其中可实现本发明的各方面的合适的计算环境的简要概括描述。
图9示出了可采用根据本发明的一方面的引用连接的客户机-服务器的示意图。
发明详述
现在参考附图来描述本发明,在所有附图中,使用相同的参考标号来指相同的元素。在以下描述中,出于解释的目的,阐明了众多具体细节以提供对本发明的透彻理解。然而,很明显,本发明可以在没有这些具体细节的情况下实践。在其它情况下,以框图形式示出了公知的结构和设备以便于描述本发明。
如本申请中所使用的,术语“组件”、“处理程序”、“模型”、“系统”等指的是计算机相关的实体,它们或者是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是,但不限于处理器上运行的进程、处理器、对象、可执行码、执行线程、程序和/或计算机。作为说明,服务器上运行的应用程序和服务器都可以是组件。一个或多个组件可驻留在进程和/或执行线程内,且组件可位于一台计算机上和/或分布在两台或更多计算机之间。同样,这些组件可从其上储存有各种数据结构的各种计算机可读介质执行。组件可经由本地和/或远程进程,诸如根据具有一个或多个数据分组的信号来通信(例如,来自一个组件的数据经由该信号与本地系统、分布式系统中的另一组件交互,和/或跨诸如因特网等网络与其它系统交互)。
本发明提供了可通过经由采用引用连接捕捉多张表之间的现有联接的语义来扩展查询语言并定义连接的简单公式化的系统和方法。最初参考图1,示出了根据本发明的一方面的查询语句110,它包括引用连接(REF JOIN)子句,并正被转发到编译器130以使用显式JOIN子句变换成等效的扩展句法。这一具有引用连接的查询语句110可利用数据库中的现有关系的知识来向编写该查询语句的用户提供对遍历关系的查询的句法简明性。现有关系可采用主键(PK)-外键(FK)的形式,其中外键可以是用于在例如源表和目标表的数据之间建立并实施链接的列或列组合。
因此,可通过向目标表添加源表中持有主键值的一列或多列而在源表和目标表之间创建链接。这一(些)列然后可变为目标表中的外键。在接收到具有REF JOIN的查询110之后,编译器130可利用当前存在于数据库中的各实体之间的可用知识(例如,引用连接元数据120)来将这一简洁表示法变换成更详细的形式150。例如,通过利用关系型域140中已经存在的关系(例如,利用关系型模式定义和/或表1到n中的关系元素,其中n是整数),编译器130可提供用于唯一导航路径1到m(其中m是整数)的无歧义变换。由此,为提供根据本发明的引用连接,编译器130一般应无歧义地映射由引用连接实现的简洁表示法。因此,可提供更简单的查询句法和语义来表达例如对主键/外键的多表连接导航。
图2示出了根据本发明的一方面对一具体示例的引用连接的实现。如图所示,表210、表220和表230以它们之间存在的多对多关系分别将以下各项制成表:“Document”、“Author”和“Written By”。以下模式可描述现有的关系:
Table:Author(a_id,name,dep_id,address)
Table:WrittenBy(d_id,a_id)
Type:Address(street_no,city,state,zipcode)
在不采用本发明的引用连接的情况下检索具有在2003年发布的文档的华盛顿州的作者的名字的一个示例性查询可被写为:
SELECT a.name
FROM Author a INEER JOIN WrittenBy da ON a.a-id=da.a_id
INNER JOIN Documentd ON d.d_id=da.d_id
WHERE a.address.state=′WA′AND
d.publication_date.year=2003
在以上示例中,Document和Author是实体,而WrittenBy是关系。通常,这一关系定义具有与其相关联的基数。可以理解,以上示例是出于说明性目的,且可以存在一对一(1∶1)、一对多(1∶N)、以及多对多(N∶M)关系(N和M是整数),其中这些关系通常可通过引用约束在SQL中捕捉,且多对多关系通常通过引入可捕捉该关系的中间表230(例如,WrittenBy)来建模。
通过采用引用连接240作为根据本发明的SQL查询表达式扩展,可提供允许对表示引用约束的列上的连接导航的简化句法。因此,假定系统捕捉了WrittenBy是Document和Author之间的N∶M关系的表示法,则本发明可经由采用例如以下句法形式的引用连接240来提供更紧凑形式的对查询的重写:
SELECT name
FROM D ocument REF JOIN WrittenBy REF JOIN Author
WHERE publication_date.year=2003 AND
address.state=′WA′
由此,表达式“Document REF JOIN WrittenBy REF JOIN Author”是本发明的引用连接240的一个示例,其中SQL Server的事务SQL(TSQL)语言可与其一起扩展,以允许对由引用约束定义的关系的导航。由此,提供了更简单的查询句法和语义来表达对例如主键/外键的多表连接导航。
图3示出了可实现本发明的各方面的查询编译管线300的框图。查询编译管线300采用多个组件以便于将SQL语句编译成可执行查询计划。通常这一SQLServer查询编译300可被划分成两个主要部分,即语法分析器/代数化器部分310和优化器部分320。一般而言,语法分析器/代数化器部分310负责将SQL语句转换成等效的关系型代数树。同样,优化器部分320可搜索等效查询计划的空间以找出向用户返回结果的有效方式,其中这一过程可得到物理执行计划。
如图3所示,语法分析组件312可取SQL语句的文本表示,并将这一语句划分成基本成分(例如,语言符号),并验证该语句符合SQL语言语法规则。语法分析组件312的输出可以是关系运算符(RelOp)树。同样,宏组件314可执行简单的重写以将包含带有并运算符和涉及AND和OR的标量表达式的节点的二进制RelOp树变换成等效的n叉树(n-ary tree)。
类似地,绑定组件316可确认句法上正确的SQL语句涉及系统中实际存在的对象。例如,在以下查询中,绑定组件可确认存在MyTable并且在MyTable中存在col1和col2。
SELECT col1,col2 FROM MyTable
由此,绑定组件316可引用系统元数据来确定这些对象的存在。
如图3所示,与语法分析器/代数化器部分310相关联的后绑定组件318可负责将视图扩展成查询树。因此,用户查询可引用多个视图,其中所有这些视图可被扩展以形成表示完整操作的单个查询树。一般而言,视图可便于建模抽象,因为可隔离复杂逻辑以在多个地方使用,和/或可隐藏数据模型表示的复杂性。此外,准备QP(PrepareForQP)组件319可将正确绑定的RelOp树变换成向查询优化器部分320提供合适输入的逻辑运算符(LogOp)树。
作为优化器部分320的一部分,简化组件324可执行对由语法分析器/代数化器部分310创建的查询树的多次重写。例如,可重写过滤器以将它们推向树的叶节点以便于稍后的索引匹配。执行其它种类的简化来归一化树以便于有效处理并执行已知可行的优化而没有基于成本的折衷。类似地,优化器部分320的探查组件328可考虑大量的备选来找出最有效的执行策略。这可通过采用基于数据分布、存储器、磁盘使用等做出关于各种策略的执行时间的折衷的基于成本的框架来执行。
一般而言,SQL Server支持通过相关联的分布式/不同种类的查询组件来查询多个机器。根据本发明的功能可以用对现有框架的几个扩展来实现。例如,对远程源的查询也被表示为关系型代数树,并且可执行绑定使得查询远程元数据来确认所引用对象的模式。另外,可在由优化器部分320执行的优化阶段期间查询统计和索引元数据作为计划搜索的一部分。在探查阶段,也可将查询树片段转换成要发送到远程源的SQL查询。
现在参考图4,示出了根据本发明的一方面经由引用连接来简化连接的公式化的方法400。尽管该示例性方法此处被示出和描述为表示各种事件和/或动作的一系列框,但是本发明不受这些框的所示顺序的限制。例如,根据本发明,除此处示出的顺序之外,某些动作或事件可按不同的顺序和/或与其它动作或事件同时发生。另外,并非所示的所有框、事件或动作都是实现根据本发明的方法所必需的。此外,可以理解,根据本发明的示例性方法和其它方法可与此处示出并描述的方法相关联以及与此处未示出或描述的其它系统和装置相关联地实现。
最初在410处,可根据关系型项存储的实现经由SQL数据定义语句(DDL)来定义多张表之间的联接。接着在420处,通过利用数据库中的现有关系(例如,在关系型元数据中捕捉的主键-外键关系)的知识,本发明的引用连接可捕捉现有联接的语义。因此,可在430处用句法简明性来公式化查询语句。例如,为在两张源表(例如,左表源{LTS}和右表源{RTS})之间提供根据本发明的引用连接,一般在这两张表之间通常应仅存在一个引用约束。由此,在440处,当SQL编译器无歧义地映射由引用连接实现的简洁表示法时,可采用引用连接,其中在关系之间通常仅存在一条路径。
由此,SQL编译器可采用关于引用约束的现有知识来允许将引用连接(REFJOIN)表达式无歧义地变换成两张表之间的这一引用约束中所涉及的列上的等效INNER JOIN。因此,可提供更简单的查询句法和语义来表达对主键/外键的多表连接导航。
在一个相关方面,本发明的引用连接可以是在SQL SELECT语句的FROM子句中定义的表表达式。一个示例性句法可采用以下形式:
<查询指定>::=
SELECT[ALL|DISTINCT]
[TOP表达式[PERCENT][WITH TIES]]
<选择列表>
  [INTO新表]
  [FROM{<表源>}[,...n]]
  [WHERE<搜索条件>]
  [GROUP BY[ALL]“按…分组”表达式[,...n]
  [WITH{CUBE|ROLLUP}]
  ]
  [HAVING<搜索条件>]
[FROM{<表源>}[,...n]]
<表源>::=
{
  表名[[AS]表别名][<表样本子句>]
     [WITH(<表提示>[,...n])]
  |视图名[[AS]表别名][WITH(<视图提示>[,...n])]
  |行集函数[[AS]表别名][(成批列别名[,...n])]
  |用户定义函数[[AS]表别名]
  | OPENXML<打开xml子句>
  |导出表[AS]表别名[(列别名[,...n])]
  |<连接表>
  |<旋转表>
  |<未旋转表>
}
<表样本子句>::=
  TABLESAMPLE[SYSTEM](样本号[PERCENT|ROWS])
     [REPEATABLE(重复种子)]
<连接表>::=
{
  <表源><连接类型><表源>ON<搜索条件>
  |<表源>CROSS JOIN<表源>
  |<左表源>REF JOIN<右表源>
  |左表源{CROSS|OUTER}APPLY右表源
  |[()<连接表>[]]
}
<连接类型>::=
  [{INNER|{{LEFT|RIGHT|FULL}[OUTER]}}[<连接提示>]]
  JOIN
<旋转表>::=
  表源PIVOT<旋转子句>表别名
<旋转子句>::=
  (聚集函数(值列)
     FOR旋转列
     IN(<列列表>)
  )
<未旋转表>::=
  表源UNPIVOT<取消旋转子句>表别名
<取消旋转子句>::=
  (值列FOR旋转列IN(<列列表>)
)
<列列表>::=
  列名[,...]
通常,一对一和一对多关系一般由该关系的每一侧处的两张表之间的直接引用约束来建模。例如,对于其间具有多对一关系(fk_dep)的两张表“Employee”和“Department”,该模型可包括:
CREATE Employee(
     E_id INT PRIMARY KEY,
     D_id      INT REFERENCES Department(d_id),
     Name NVARCHAR(100),
     ...
CONSTRAINT fk_dep FOREIGN KEY e_id REFERENCES Department
(d_id)--对N∶1关系建模
)
CREATE Department(
    D_id INT PRIMARY KEY,
    Mgr_id    INT REFERENCES Employee(e_id)
    Name NVARCHAR(50),
    …
)
同样,多对多关系一般可通过在该关系的每一侧处的两张表之间引入中间表(例如,关系表)来建模。例如,在“Document”和“Author”表之间可以有N∶M(N、M是整数)关系,其中表“WrittenBy”捕捉这一关系。类似地,在“Document”和“Author”之间可以存在由“ReviewedBy”表捕捉的第二N∶M关系。
CREATE TABLE Document (
     D_id INT PRIMARY KEY,
     Title     NVARCHAR(250),
     Publication_date    DATETIME,
     Type NVARCHAR(10)
)
CREATE TABLE Author (
     A_id INT PRIMARY KEY,
     Name NVARCHAR(100),
     Dep_id    INT,
     Address   ADDRESS
)
CREATE TABLE WrittenBy (
     D_id INT  REFERENCES Document (d_id),
     A_id INT  REFERENCES Author (a_id),
CONSTRAINT fk_doc FOREIGN KEY d_id REFERENCES Document
(d_id), --对1∶N关系建模
CONSTRAINT fk_aut FOREIGN KEY a_id REFERENCES Author
(a_id)  --  对1∶N关系建模
)
CREATE TABLE ReviewedBy (
     D_id INT  REFERENCES Document (d_id),
     A_id INT  REFERENCES Author (a_id),
CONSTRAINT fk_rev-doc FOREIGN KEY d-id REFERENCES
Document (d_id), -- 对1∶N关系建模
CONSTRAINT fk_rev_aut FOREIGN KEY a_id REFERENCES Author
(a_id)  -- 对1∶N关系建模
)
如先前所解释的,为使REF JOIN表达式有效,通常在<左表源>(LTS)和<右表源>(RTS)之间应存在一个且仅一个关系约束。如果满足这一条件,则表达式:<LTS>REF JOIN<RTS>可由语法分析器/代数化器变换成以下形式的等效表达式:
<LTS>INNER JOIN<RTS>ONLTS.col1=RTS.coll AND...AND
LTS.col_n=RTS.col_n
另外,LTS和RTS的所有列在查询表达式的范围中(例如,可见),这类似于等效内部连接表达式。
因此,根据本发明的一方面的显式引用连接路径允许无歧义地导航多表N∶M关系,因为该表示法可显式地指示用户希望导航的关系。例如,REF JOIN表达式:
Document REF JOIN WrittenBy REF JOIN Author
Document REF JOIN ReviewedBy REF JOIN Author
可表示两个不同的关系导航表达式。
在隐式引用连接路径的一个相关方面,本发明的引用连接可被变换成内部连接,其中如果在多张表之间存在无歧义的引用完整性约束路径,则某些表可保持未暴露,并提供导航期间的表“跳跃”。例如,一旦在表1(T1)和表2(T2)之间存在经由表3(T3)的无歧义引用完整性约束路径,则T1 REF JOIN T2可被转换成T1 INNER JOIN T3 INNER JOIN T2,而不会暴露T3的列。在前一Document和Author示例中,如果在这两个实体之间存在单个关系,诸如WrittenBy关系,则用户可采用以下语句来找出文档的所有作者:
Document REF JOIN Author
由此,参考以上详细描述的Document和Author示例,如果在Document和Author之间仅存在一个N∶M关系(例如,WrittenBy关系),则表达式Document REFJOIN Author可由语法分析器/代数化器自动转换成等效表达式“Document INNERJOIN WrittenBy INNER JOIN Author”,而通常无需涉及WrittenBy表引用。
图5示出了根据本发明的一个特定方面使用引用连接的视图更新的示例性方法500。最初在510处,可公式化视图以供用户与数据库交互。通常,用户可引用文档视图来获得所需的值,且在更新期间,引用连接可便于对底层基表的相应原语更新的自动变换,以按正确的顺序执行基表更新来满足引用完整性约束。随后在520处,可经由这一视图引用数据库中的文档,并提供对称系统。本发明的REF连接可便于如由REF JOIN定义的对象视图的插入、删除和更新的自动转换。这一自动转换成相应的“有序”等效基表更新序列可在530处通过考虑在对该视图做出贡献的底层基表之间定义的引用完整性约束来执行。由此,在540处,对系统的知识允许对与该视图相关联的表的自动有序更新。
同样,为插入映射到多个表的对象,对象插入可被变换成向底层表的一组插入。如先前所解释的,这一组插入通常应按正确且特定的顺序执行来保存引用完整性约束。例如,经由Writtenby关系来表示Documents及其Authors的对象视图“DocAuthor”可映射分别向Documents、Authors以及然后的WrittenBy表的插入。这一顺序可通过利用依赖性图来确定。
类似地,引用连接中约束的定义可用于删除对象。由此,删除可从依赖性图的根开始进行(或者根可隐式地从“插入”中描述的对象视图映射模型定位),其中对所有FK约束的ON DELETE CASCADE可用于移除完整的对象。
此外,对于对象的更新可通过生成跨所涉及的所有表的一组删除后跟一组插入经由对象的整体更新来进行。作为替代或与其结合,更新可对对象的部分进行,其中SQL Server中的默认行为提供了更新N∶1连接链(其中N是整数)的多侧的能力。在对象视图方法中,可为来自REF JOIN中的参与表的任一个的列提供无歧义引用。这可缓和底层表中的正确顺序要求。
图6示出了可随着数据库630的增长动态学习表之间的联接约束的关系型连接620的框图。如图6所示,根据本发明的一方面,实现引用连接(REF JOIN)的查询610被转发到编译器650以变换成等效扩展句法640。这一具有引用连接的查询610可利用数据库630中的现有关系来公式化句法简明性。
一般而言,语法分析器组件660和代数化器组件665可负责将具有引用连接的SQL语句转换成等效关系型代数树。例如,语法分析器组件660可取SQL语句的文本表示,并将这一语句划分成基本成分(例如,语言符号),并验证该语句符合SQL语言语法规则。同样,优化器组件670可搜索等效查询计划的空间,以找出由执行组件675向用户返回结果的有效方式,其中这一过程可得到物理执行计划。同时,关系型连接组件620可动态学习所创建的各种关系,这与静态存在的外键(FK)-主键(PK)关系形成对比。因此,当数据库630增长时,关系型连接组件620可指导编译器清楚地说明查询610中所采用的引用连接。
图7示出了根据本发明的一方面可采用引用连接作为查询语言的一部分的客户机-服务器安排,其中客户机720上运行的是客户机进程,例如Web浏览器710。同样,服务器750上运行的是相应的服务器进程,例如web服务器760。另外,web浏览器710中嵌入的是脚本或应用程序730,并且其客户机计算机720的运行时环境740内运行的可以有用于对根据本发明的各方面格式化的数据分组进行打包和解包的代理715。与服务器750通信的是管理对数据库(未示出)的访问的数据库管理系统(DBMS)780。DBMS 780和数据库(未示出)可以位于服务器本身中,或者可以远程地位于远程数据库服务器(未示出)上。在Web服务器760上运行的是数据库接口应用程序编程接口(API)770,它提供对DBMS 780的访问。客户机计算机720和服务器计算机750可通过网络790彼此通信。当如Web浏览器710的客户机进程向数据库请求数据时,脚本或应用程序730发出查询,该查询通过网络(例如,因特网)790发送到服务器计算机750,在服务器处它由如Web服务器760的服务器进程解释。客户机720对服务器750的请求可包含多条命令,并且来自服务器750的响应可返回多个结果集。所返回的对客户机命令的响应可以是自描述且面向对象的;(例如,数据流可描述所返回的行的名字、类型和可任选描述。)
现在参考图8,示出了其中可实现本发明的各方面的合适计算环境的简要概括描述。尽管本发明在上文中是在运行在一台计算机和/或多台计算机上的计算机程序的计算机可执行指令的一般上下文中描述的,但本领域的技术人员可以认识到本发明也可结合其它程序模块来实现。一般而言,程序模块包括执行特定任务和/或实现特定抽象数据类型的例程、程序、组件、数据结构等。此外,本领域的技术人员可以理解,本发明的方法可用其它计算机系统配置来实施,包括单处理器或多处理器计算机系统、小型机、大型计算机、以及个人计算机、手持式计算设备、基于微处理器或可编程消费电子产品等等。如先前所解释的,所示的本发明的各方面也可在分布式计算环境中实施,其中任务由通过通信网络连接的远程处理设备来执行。然而,本发明的某些(如果不是全部)方面可以在独立的计算机上实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。示例性环境包括计算机820,包括处理单元821、系统存储器822和将包括系统存储器的各种系统组件耦合至处理单元821的系统总线823。处理单元821可以是各种市场上可购买到的处理器的任一种。双微处理器和其它多处理器体系结构也可用作处理单元821。
系统总线可以是若干种总线结构类型的任一种,包括USB 1394、外围总线、以及使用各类市场上可购买到的总线体系结构的任一种的局部总线。系统存储器可包括只读存储器(ROM)824和随机存取存储器(RAM)825。基本输入/输出系统(BIOS)包括如在启动时帮助在计算机820内的元件之间传输信息的基本例程,通常储存在ROM 824中。
计算机820还包括硬盘驱动器827、例如对可移动磁盘829进行读写的磁盘驱动器828、以及例如读取或写入CD-ROM盘831或读取或写入其它光学介质的光盘驱动器830。硬盘驱动器827、磁盘驱动器828和光盘驱动器830分别通过硬盘驱动器接口832、磁盘驱动器接口833和光驱接口834连接到系统总线823。驱动器及其相关联的计算机可读介质为计算机820提供了对数据、数据结构、计算机可执行指令等的非易失性存储。尽管对计算机可读介质的描述涉及硬盘、可移动磁盘以及CD,然而本领域的技术人员可以理解,计算机可读的其它类型的介质,诸如磁带盒、闪存卡、数字视频盘、Bernoulli盒式磁带等,也可用于示例性操作环境中,并且此外,任何这类介质可包含用于执行本发明的方法的计算机可执行指令。
多个程序模块可储存在驱动器和RAM 825中,包括操作系统835、一个或多个应用程序836、其它程序模块837和程序数据838。所示的计算机中的操作系统835基本上可以是任何市场上可购买到的操作系统。
用户可通过键盘840和诸如鼠标842等定位设备将命令和信息输入到计算机820中。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合到系统总线的串行端口接口846连接到处理单元821,但也可通过其它接口连接,如并行端口、游戏端口、通用串行总线(USB)。监视器847或其它类型的显示设备也通过诸如视频适配器848等接口连接到系统总线823。除监视器之外,计算机通常包括其它外围输出设备(未示出),诸如扬声器、打印机等等。
计算机820可以使用到一个或多个远程计算机,如远程计算机849的逻辑连接在网络化环境中操作。远程计算机849可以是工作站、服务器计算机、路由器、对等设备或其它常见的网络节点,并通常包括相对于计算机820所描述的许多或所有元件,尽管图8中仅示出了存储器存储设备850。图8所描绘的的逻辑连接可包括局域网(LAN)851和广域网(WAN)852。这一联网环境常见于办公室、企业范围计算机网络、内联网和因特网。
当在LAN联网环境中使用时,计算机820可通过网络接口或适配器853连接到局域网851。当在WAN联网环境中使用时,计算机820一般可包括调制解调器854,和/或连接到LAN上的通信服务器,和/或具有用于通过广域网852,如通过因特网建立通信的其它装置。调制解调器854可以是内置或外置的,它可通过串行端口接口846连接到系统总线823。在联网环境中,相对于计算机820描述的程序模块或其各部分可储存在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,可以使用在计算机之间建立通信链路的其它手段。
根据计算机编程领域的技术人员的实践,本发明参考由诸如计算机820等计算机执行的动作和操作的符号表示来描述,除非另外指明。这些动作和操作有时被称为是计算机执行的。可以理解,动作和以符号表示的操作包括处理单元821对表示数据位的电信号的处理(导致对电信号表示的所得的变换或缩减)以及在存储器系统(包括系统存储器822、硬盘驱动器827、软盘829和CD-ROM 831)中的存储器位置处对数据位的维护(由此重新配置或另外更改了计算机系统的操作),以及其它信号处理。其中维护这些数据位的存储器位置是具有对应于数据位的特定电、磁、或光特性的物理位置。
现在参考图9,示出了可采用根据本发明的一方面的引用连接的客户机-服务器系统900。客户机920可以是硬件和/或软件(如,线程、进程、计算装置)。系统900还包括一个或多个服务器940。服务器940也可以是硬件和/或软件(如,线程、进程、计算装置)。例如,这一服务器940可容纳线程,以通过使用本发明来执行变换。客户机920和服务器940可在两个或多个计算机进程之间通信。如图所示,系统900包括便于在客户机920和服务器940之间通信的通信框架980。客户机920操作上连接至可储存对客户机920本地的信息的一个或多个客户机数据存储910。此外,客户机920可访问并更新位于运行服务器进程的服务器计算机940上的数据库960。在本发明的一方面,通信框架980可以是因特网,而客户机进程是web浏览器,服务器进程是web服务器。由此,典型的客户机920可以是通用计算机,诸如具有中央处理单元(CPU)、系统存储器、用于将个人计算机连接到因特网的调制解调器或网卡、和显示器以及诸如键盘、鼠标等的其它组件的常规个人计算机。同样,典型的服务器940可以是大学或企业大型计算机,或专用工作站等。
尽管参考某些示出的方面示出并描述了本发明,但本领域的技术人员在阅读并理解了本说明书和附图之后可以理解等效的替换和修改。特别是对于由上述组件(组件、设备、电路、系统等)执行的各种功能,用于描述这些组件的术语(包括对“装置”的引用)除非另外指明,否则旨在对应于执行所描述的组件的指定功能(例如,功能上等效)的任何组件,即使在结构上不等效于所公开的执行此处所示的本发明的示例性方面中的功能的结构。在这一点上,还可以认识到本发明包括系统以及具有用于执行本发明的各方面的动作和/或事件的计算机可执行指令的计算机可读介质。此外,就详细描述或权利要求书中使用了术语“包括”、“包含”、“具有”、“带有”及其变型而言,这些术语旨在以类似于术语“包括”的方式为包含性的。

Claims (20)

1.一种便于数据库查询的系统,包括:
接收与数据库交互的查询的编译器;以及
关系型连接组件,它经由引用连接扩展相应的查询语言来捕捉与所述数据库相关联的多张表之间的现有联接的语义,以减少探查或导航所述数据库所需的语法。
2.如权利要求1所述的系统,其特征在于,所述现有联接包括在关系型元数据中捕捉的主键-外键关系。
3.如权利要求2所述的系统,其特征在于,在左表源和右表源之间提供所述引用连接和存在左表源和右表源之间的一个引用约束。
4.如权利要求3所述的系统,其特征在于,所述一个引用约束包括所述引用连接的表达式到相关联列的等效内部连接的无歧义变换。
5.如权利要求1所述的系统,其特征在于,所述编译器将所述引用连接变换成内部连接,并在所述数据库的导航期间提供表跳跃。
6.如权利要求1所述的系统,其特征在于,如果在关系之间仅存在一条路径,则所述编译器无歧义地映射由所述引用连接实现的简洁表示法。
7.如权利要求1所述的系统,其特征在于,还包括动态地学习所述数据库中创建的各种关系的另一关系型连接组件。
8.如权利要求1所述的系统,其特征在于,还包括由用户引用以获得所需的值、且用于以正确的顺序执行基表更新以满足引用完整性约束的文档视图。
9.如权利要求1所述的系统,其特征在于,所述编译器还包括将所述引用连接的结构化查询语言(SQL)变换成等效关系型代数树的语法分析器/代数化器。
10.如权利要求9所述的系统,其特征在于,所述编译器还包括为所述引用连接搜索等效查询计划的空间的优化器。
11.如权利要求10所述的系统,其特征在于,还包括执行对由所述语法分析器/代数化器创建的查询树的重写的简化组件。
12.一种简化数据库查询的方法,包括:
根据与数据库相关联的表之间的项存储实现来定义联接;
经由引用连接扩展查询语言以捕捉所述联接的语义并减少探查或导航所述数据库所需的语法;以及
用所述引用连接的语法简明性来公式化所述查询语言。
13.如权利要求12所述的方法,其特征在于,还包括经由关系之间存在的仅一条路径来无歧义地映射由所述引用连接实现的简洁表示法。
14.如权利要求13所述的方法,其特征在于,还包括采用关于引用约束的现有知识来无歧义地将所述引用连接的表达式变换成表之间的引用约束中所涉及的列上的等效内部连接。
15.如权利要求14所述的方法,其特征在于,还包括采用所述引用连接中的约束来删除对象。
16.如权利要求12所述的方法,其特征在于,还包括公式化视图以供用户与所述数据库交互。
17.如权利要求16所述的方法,其特征在于,还包括将一对象插入变换成向底层表的一组插入。
18.如权利要求17所述的方法,其特征在于,还包括变换对底层基表的相应原语更新以按满足引用完整性约束的顺序来执行基表更新。
19.如权利要求18所述的方法,其特征在于,还包括将一对象作为整体更新或对其部分进行更新。
20.一种便于数据库查询的系统,包括:
用于编译与数据库交互的查询的装置;以及
用于扩展相应的查询语言来捕捉与所述数据库相关联的多张表之间的现有联接的语义以减少探查或导航所述数据库所需的语法的装置。
CNA2006800085361A 2005-04-14 2006-03-09 结构化查询语言中的路径表达式 Pending CN101164065A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/105,878 2005-04-14
US11/105,878 US20060235834A1 (en) 2005-04-14 2005-04-14 Path expression in structured query language

Publications (1)

Publication Number Publication Date
CN101164065A true CN101164065A (zh) 2008-04-16

Family

ID=37109757

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800085361A Pending CN101164065A (zh) 2005-04-14 2006-03-09 结构化查询语言中的路径表达式

Country Status (7)

Country Link
US (1) US20060235834A1 (zh)
KR (1) KR20070120492A (zh)
CN (1) CN101164065A (zh)
BR (1) BRPI0609369A2 (zh)
MX (1) MX2007011375A (zh)
RU (1) RU2007137859A (zh)
WO (1) WO2006112969A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103608812A (zh) * 2011-06-15 2014-02-26 微软公司 业务智能系统的查询优化技术
CN104794130A (zh) * 2014-01-20 2015-07-22 华为技术有限公司 一种表间关联查询方法和装置
CN109101510A (zh) * 2017-06-20 2018-12-28 上海与腾科技有限公司 一种企业项目信息获取方法及其系统
CN109783498A (zh) * 2019-01-17 2019-05-21 北京三快在线科技有限公司 数据处理方法及装置、电子设备、存储介质
CN109918391A (zh) * 2019-03-12 2019-06-21 威讯柏睿数据科技(北京)有限公司 一种流式事务处理方法及系统
CN110609945A (zh) * 2018-05-29 2019-12-24 优信拍(北京)信息科技有限公司 一种二手车业务数据的查询方法,装置及系统

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080140696A1 (en) * 2006-12-07 2008-06-12 Pantheon Systems, Inc. System and method for analyzing data sources to generate metadata
US20080183663A1 (en) * 2007-01-31 2008-07-31 Paul Reuben Day Dynamic Index Selection for Database Queries
US7865533B2 (en) * 2007-02-05 2011-01-04 Microsoft Corporation Compositional query comprehensions
US7805456B2 (en) * 2007-02-05 2010-09-28 Microsoft Corporation Query pattern to enable type flow of element types
US8024320B1 (en) 2007-10-02 2011-09-20 Emc Corporation Query language
US8108431B1 (en) * 2008-03-24 2012-01-31 Autotelika, Incorporated Two-dimensional data storage system
US7895174B2 (en) * 2008-03-27 2011-02-22 Microsoft Corporation Database part table junctioning
US8321833B2 (en) * 2008-10-03 2012-11-27 Microsoft Corporation Compact syntax for data scripting language
US20100094812A1 (en) * 2008-10-14 2010-04-15 International Business Machines Corporation Dynamically Defining and Using a Delete Cascade Trigger Firing Attribute
US8417690B2 (en) * 2009-05-15 2013-04-09 International Business Machines Corporation Automatically avoiding unconstrained cartesian product joins
US9275031B2 (en) * 2009-10-09 2016-03-01 Microsoft Technology Licensing, Llc Data analysis expressions
US8533240B2 (en) * 2010-09-22 2013-09-10 International Business Machines Corporation Write behind cache with M-to-N referential integrity
US9348941B2 (en) * 2011-06-16 2016-05-24 Microsoft Technology Licensing, Llc Specification of database table relationships for calculation
US10268639B2 (en) * 2013-03-15 2019-04-23 Inpixon Joining large database tables
US9354948B2 (en) 2013-09-06 2016-05-31 Sap Se Data models containing host language embedded constraints
US9639572B2 (en) 2013-09-06 2017-05-02 Sap Se SQL enhancements simplifying database querying
US9430523B2 (en) 2013-09-06 2016-08-30 Sap Se Entity-relationship model extensions using annotations
US9442977B2 (en) * 2013-09-06 2016-09-13 Sap Se Database language extended to accommodate entity-relationship models
US9361407B2 (en) 2013-09-06 2016-06-07 Sap Se SQL extended with transient fields for calculation expressions in enhanced data models
US9619552B2 (en) 2013-09-06 2017-04-11 Sap Se Core data services extensibility for entity-relationship models
US9720896B1 (en) * 2013-12-30 2017-08-01 Google Inc. Synthesizing union tables from the web
US10678774B2 (en) 2016-03-31 2020-06-09 Toshiba Global Commerce Solutions Holdings Corporation Generating source code for creating database triggers

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061515A (en) * 1994-07-18 2000-05-09 International Business Machines Corporation System and method for providing a high level language for mapping and accessing objects in data stores
US6026390A (en) * 1996-05-29 2000-02-15 At&T Corp Cost-based maintenance of materialized views
US5987453A (en) * 1997-04-07 1999-11-16 Informix Software, Inc. Method and apparatus for performing a join query in a database system
US5956706A (en) * 1997-05-09 1999-09-21 International Business Machines Corporation Method and system for limiting the cardinality of an SQL query result
US6480836B1 (en) * 1998-03-27 2002-11-12 International Business Machines Corporation System and method for determining and generating candidate views for a database
US6421663B1 (en) * 1999-06-14 2002-07-16 International Business Machines Corporation Optimization of joined table expressions by extended access path selection
US6507840B1 (en) * 1999-12-21 2003-01-14 Lucent Technologies Inc. Histogram-based approximation of set-valued query-answers
GB0002807D0 (en) * 2000-02-09 2000-03-29 Ibm Interaction with query data
US6795825B2 (en) * 2000-09-12 2004-09-21 Naphtali David Rishe Database querying system and method
CA2374271A1 (en) * 2002-03-01 2003-09-01 Ibm Canada Limited-Ibm Canada Limitee Redundant join elimination and sub-query elimination using subsumption
US6850927B1 (en) * 2002-05-21 2005-02-01 Oracle International Corporation Evaluating queries with outer joins by categorizing and processing combinations of relationships between table records
US6805927B2 (en) * 2002-08-16 2004-10-19 Guardian Industries Corporation Composite laminate structures especially useful for automotive trim components, and methods and tie layers employed to make the same
US7328209B2 (en) * 2004-08-11 2008-02-05 Oracle International Corporation System for ontology-based semantic matching in a relational database system
US20060047638A1 (en) * 2004-09-02 2006-03-02 International Business Machines Corporation Cartesian product detection
US7792851B2 (en) * 2004-12-02 2010-09-07 International Business Machines Corporation Mechanism for defining queries in terms of data objects

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103608812A (zh) * 2011-06-15 2014-02-26 微软公司 业务智能系统的查询优化技术
CN103608812B (zh) * 2011-06-15 2017-05-10 微软技术许可有限责任公司 业务智能系统的查询优化技术
CN104794130A (zh) * 2014-01-20 2015-07-22 华为技术有限公司 一种表间关联查询方法和装置
CN104794130B (zh) * 2014-01-20 2018-05-18 华为技术有限公司 一种表间关联查询方法和装置
CN109101510A (zh) * 2017-06-20 2018-12-28 上海与腾科技有限公司 一种企业项目信息获取方法及其系统
CN110609945A (zh) * 2018-05-29 2019-12-24 优信拍(北京)信息科技有限公司 一种二手车业务数据的查询方法,装置及系统
CN109783498A (zh) * 2019-01-17 2019-05-21 北京三快在线科技有限公司 数据处理方法及装置、电子设备、存储介质
CN109918391A (zh) * 2019-03-12 2019-06-21 威讯柏睿数据科技(北京)有限公司 一种流式事务处理方法及系统
CN109918391B (zh) * 2019-03-12 2020-09-22 威讯柏睿数据科技(北京)有限公司 一种流式事务处理方法及系统

Also Published As

Publication number Publication date
KR20070120492A (ko) 2007-12-24
BRPI0609369A2 (pt) 2010-03-30
RU2007137859A (ru) 2009-04-20
WO2006112969A3 (en) 2007-12-13
WO2006112969A2 (en) 2006-10-26
MX2007011375A (es) 2007-10-03
US20060235834A1 (en) 2006-10-19

Similar Documents

Publication Publication Date Title
CN101164065A (zh) 结构化查询语言中的路径表达式
Capriolo et al. Programming Hive: Data warehouse and query language for Hadoop
US10268742B2 (en) View maintenance rules for an update pipeline of an object-relational mapping (ORM) platform
KR101411083B1 (ko) 점진적 뷰 관리를 갖는 매핑 아키텍처
Bernstein et al. Industrial-strength schema matching
US7647298B2 (en) Generation of query and update views for object relational mapping
Tesoriero Getting started with OrientDB
Guller Big data analytics with Spark: A practitioner's guide to using Spark for large scale data analysis
KR101785959B1 (ko) 레코드들의 컬럼형 스토리지 표현
US20030093433A1 (en) Method and system for software application development and customizible runtime environment
US20080183725A1 (en) Metadata service employing common data model
US20060122973A1 (en) Mechanism for defining queries in terms of data objects
Geschwinde et al. PostgreSQL developer's handbook
Du Apache Hive Essentials: Essential techniques to help you process, and get unique insights from, big data
Antony et al. Professional Hadoop
Regardt et al. Anchor Modeling: An Agile Modeling Technique Using the Sixth Normal Form for Structurally and Temporally Evolving Data
Liu et al. CloudETL: scalable dimensional ETL for hadoop and hive
Weise et al. Learning Apache Apex: Real-time Streaming Applications with Apex
Akhtar et al. Pro Apache Phoenix: An SQL Driver for HBase
Vavrek Evolution Management in NoSQL Document Databases
Jordan Mastering the SAS DS2 Procedure: Advanced Data-Wrangling Techniques, (Hardcover edition)
Jibril et al. GTPC: Towards a Hybrid OLTP-OLAP Graph Benchmark
Surya et al. PHP For Beginners
Krýsl Framework pro analýzu závislostí softwarových artefaktů
Bell et al. X Developer API

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication