CN100474286C - 用于在单个语句中更改集值和标量值列的sql语言扩展 - Google Patents

用于在单个语句中更改集值和标量值列的sql语言扩展 Download PDF

Info

Publication number
CN100474286C
CN100474286C CNB2004800032581A CN200480003258A CN100474286C CN 100474286 C CN100474286 C CN 100474286C CN B2004800032581 A CNB2004800032581 A CN B2004800032581A CN 200480003258 A CN200480003258 A CN 200480003258A CN 100474286 C CN100474286 C CN 100474286C
Authority
CN
China
Prior art keywords
value
statement
update
change
labyrinth type
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.)
Expired - Fee Related
Application number
CNB2004800032581A
Other languages
English (en)
Other versions
CN1875358A (zh
Inventor
B·拉塔克瑞施纳
S·斯特凡尼
A·瑟纳
J·A·布莱克雷
O·N·希利格
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 Technology Licensing LLC
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 CN1875358A publication Critical patent/CN1875358A/zh
Application granted granted Critical
Publication of CN100474286C publication Critical patent/CN100474286C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • 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/23Updating
    • G06F16/235Update request formulation
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Abstract

一种使用UPDATE语句的嵌套扩展在嵌套表中更新集值列和其它复杂结构列的技术,该扩展使用与用来更改表的标量值列的UPDATE语句(称为外部UPDATE)的语法和语义类似的一种语法和语义来更改集值列。使用与外部层次上表相同的语法和语义结构使处理关系表更改的现有实现也能重新使用其实现技术来处理更改集值列的更新。该UPDATE扩展使得嵌套集的更新的规范能被嵌入在分层结构中任意层上。该新语法以平行于数据结构本身的方法嵌于外部UPDATE语句中,并因而该语法更直接地映射到数据的用户概念模型中。用于实现UPDATE扩展的方法使用一种变化描述符,该描述符是将所有标量和集值变化集聚成可应用于已变化集值列的单一值的数据结构。该技术还可用于对诸如对象或XML的其它类复杂结构列的更改。该变化描述符包括单元的分层信息,从而使能单个操作中在各粒度层次上多个更新的有效应用,并通过更新仅受由UPDATE操作影响的索引,及仅更新那些受UPDATE操作影响的索引行而使能有效索引维护算法的实现。

Description

用于在单个语句中更改集值和标量值列的SQL语言扩展
相关申请
本申请声明对序列号为10/693,302于2003年10月24日提交的美国专利申请的优先权,其揭示在此全部引入作为参考。
技术领域
本发明涉及数据库系统,尤其涉及一种系统和方法,用来使用嵌套关系SQL语言扩展而在一个步骤中以任意方式更改带有分层结构的各种表(诸如嵌套表和存储复杂结构对象或XML的表格),并用来提供有效获取复杂和部分更新的各种机制(诸如改变描述符并发挥查询最优化和查询执行技术)。
背景技术
SQL查询语言向用户提供查询(并更改)使用关系数据模型存储的表列数据。该关系数据模型指示表中的每个单元(一行的一列)是单个标量(或原子)值。结构化查询语言(SQL)是用以与关系数据库通信的美国国家标准化组织(ANSI)标准。SQL语句被用以执行诸如更新数据或从关系数据库中检索数据的任务。尽管许多数据库系统使用SQL,但是其中许多数据库还具有通常仅在它们的系统上使用的它们自己的专用扩展。然而,诸如“Select”、“Insert”、“Update”、“Delete”,“Create”和“Drop”的标准SQL命令可被用来完成处理关系数据库所需的许多事情,并相信对数据库领域技术人员是众所周知的。
最近对关系数据模型的扩展放松了将单个标量值存储在单元中的限制,并允许表中的每个单元本身成为值的集合。该集合内的每个元素本身还可包含一个集合,即集合可任意层深度嵌套。带有这样的具有多个值的集值单元的表可泛称为嵌套表。这种开发显示了如何扩展SQL语言以在这样的嵌套表中更改集值的问题。例如,需要用于更改集值单元以允许在任意嵌套层上标量值的同步改变的技术。
嵌套表的当前实现及相关联标准提供了用于查询和更新嵌套表中集合的扩展。然而,在常规嵌套表系统中对于集值单元中标量值的每个层次,每次都仅在一个层次上更新嵌套标量值,因而在多层单元中改变存储值需要多次更新。例如,美国专利6,564,203描述用于更新逻辑上驻留于嵌套集列中的一个或多个嵌套集合中的数据的技术。检测在一个或多个嵌套集合上操作的数据操纵语言(DML)语句,并对作为DML语句目标的嵌套集内的每个单独元素执行一次触发器代码。该触发器代码可包括对父值的引用;然而,触发器被设计成在更新、插入或删除数据库表的行或表视图时触发。换言之,一次仅更新一行。该过程是缓慢并乏味的,且不允许在任意指定嵌套层次上更新。
美国专利6,493,708揭示了一种机制,该机制使用包括各种LEVEL语句以标识分层结构层次的CREATE DIMENSION语句来定义一分层维、其各个层次和各层次间关系。维数表将粒度间的分层关系嵌入该维的各个层次中,假设这些层次从较细到较粗地排列。然而,没有一种一般机制被教导用于更新嵌套表的相应行中的值,这些行未必作为相同数据的较细/较粗表示而彼此相关。
SQL 2003标准指定两类集合一数组和多重集。表的列可以是这两类集合之一。在实现数组和多重集的现有数据库系统中,该标准指定用于更改全部集值列(其中旧值被全新值所替换)的语法和语义。现有技术没有指定递增地更改集值列的任何方法。需要一种对这样的集合执行增量更改的技术,因为当仅需更改其一小部分时用新集合替换整个集合是非常昂贵的。本发明解决本领域中的这些需要。
发明内容
本发明通过提供一种使用SQLUPDATE语句的嵌套扩展在嵌套表中更新集值列的新方法来符合本领域中的上述需要。所提议扩展使用与用来更改表的标量值列的常规UPDATE语句(称为外部UPDATE)的语法和语义类似的一种语法和语义来更改集值列。因为使用与外部层次上表相同的语法和语义结构使处理关系表更改的现有实现能重新使用其实现技术来处理更改集值列的更新,这也是需要的。此外,根据本发明的这种UPDATE扩展使得对嵌套集的更新的规范能嵌于分层结构中任意深度层上的。
新语法以平行于数据结构本身的方法嵌于外部UPDATE语句中。因而该语法更直接地映射到数据的用户概念模型中,因此更易于理解。对UPDATE语句的提议扩展使用允许更新有效处理的相同语句来同时更新集值列和其它标量值列。
根据本发明使用变化描述符来实现UPDATE语句的相关数据库系统包括,解析数据库更改(查询)语句并产生对由UPDATE语句指定的表变化的逻辑描述的解析器,产生将执行更改的执行算法的查询优化器,以及实现执行算法的查询执行引擎。执行算法由以下步骤组成:(i)确定需要更新的复杂结构类型列(例如嵌套表)中的行,并计算要更新的复杂结构类型列中列的新值,以及(ii)将经计算新值应用于复杂结构类型列中。为了集值列的更改,步骤(ii)使用表示集值列中值的变化以及复杂结构类型列的分层结构中要更新值的位置的集聚的一种数据结构(变化描述符)。在步骤(ii)中,查询执行引擎读取变化描述符并将其所描述的变化应用于集值列,除此之外还将标量更新用于标量值列。
用于实现UPDATE扩展的方法使用一种称为变化描述符的技术,该描述符是将所有标量和集值变化集聚成提供对要在集值列中作出变化的完整描述的单一值的数据结构。变化描述符告知查询执行引擎什么要变化和何处要变化,并被包装为常规的标量但带有在指定分层层次上更改标量所需的所有分层结构信息。因而变化描述符启用单个操作中在各粒度层次上多个更新的有效应用。通过更新仅受由UPDATE操作中SET短语在各嵌套层上更改的特定标量字段影响的索引,并且还更新那些对应于由UPDATE操作更改的实际元素的索引行,变化描述符还启用有效索引维护算法的实现。变化描述符还具有从其应用本身分离变化计算的优点(也称为万圣节保护),即防止更新语句对它本身的副作用。如果计算和变化的应用未能强分离这可能会发生,因为第一阶段可受不恰当的影响,作为看到对数据的中间变化的结果可产生第二阶段。
因而本发明启用嵌套关系SQL语言扩展的使用以在一个步骤内用任意方法更改带有分层结构的表(诸如嵌套表和存储复杂结构化对象或XML的表),并提供有效获取复杂和部分更新的各种机制(变化描述符、查询最优化和查询执行技术的发挥)。本发明的SQL语言扩展还在适于实现本发明的数据库中启用用于管理和查询复杂结构类型的关系或XML数据的丰富和有效支持。
附图说明
结合附图阅读前面的发明内容和以下说明性实施例的详细描述,能得到更好的理解。为了说明本发明各实施例,在附图中示出本发明的示例性结构;然而,本发明并不限于所揭示的特定方法和装置。在附图中:
图1示出通过列举满足查询中谓词的行并计算每行薪水(Salary)列的新值而实现的薪水标量的嵌套表更新。
图2-4示出根据本发明包括显示变化描述符内容及其应用效果的嵌套UPDATE语句的三个示例。
图5示出使用常规SQL Server系统中的常规UPDATE指令来解析、最优化和执行表的常规更新的步骤。
图6示出本发明的嵌套更新情形,从而查询执行过程被更改成根据本发明计算变化描述符。
具体实施方式
本发明的主题是专门为满足法定要求而进行描述的。然而,该描述本身并不是要限制本专利的范围。相反,发明者已经预期到已声明主题也能结合其它现有或以后的技术用其它方式体现,以包括不同的步骤或类似于本文档中所述步骤的组合。此外,尽管术语“步骤”在此可用以暗示所用方法的不同方面,该术语不应被解释为暗示在此揭示的不同步骤之间或当中的任何特定次序,除非有必要明确说明单独步骤的次序时。
数据库和存储器管理领域中的技术人员将理解,本发明对支持诸如MYSQL的嵌套表的任意扩展关系数据库系统是有用的。相应地,可理解参照图1-6在此描述的本发明可应用于所有这样的系统中。
定义:
复杂结构类型:复杂结构类型由一个字段、属性和方法的集组成。每个字段或属性可以是以下之一:
-标量类型;
-复杂结构类型本身;
-其中每个元素是复杂结构类型的多重集。
复杂结构类型被限制为是非递归的。换言之,复杂结构类型不能包括该相同类型字段的属性。在此定义的复杂结构类型包括嵌套表、集值表、和其它多维数据结构。
多重集:多重集是一类集合。它是带有可能复制本的一个无序对象集。多重集在它定义了所包含元素类型的意义上具有强类别性。本文档将使用符号Multiset<T>来表示类型为T的元素的多重集。
在复杂结构类型和多重集值类型中,具有任意深度嵌套层次都是可能的。
复杂结构类型可用以下语法来规范地表示。在该示例中,AddressType具有称为PhoneNo的集值字段,并分类为Multset<PhoneNoType>:
class AddressType{
  SqlString      Street,
  SqlString City,
  SqlString Country,
  Multiset<PhoneNoType>PhoneNos
}
其中PhoneNoType被定义为
class PhoneNoType{
 SqlStringAreaCode,
 SqlString Number,
 SqlString Extension
}
以下表使用以上定义的类型。首先一MULTISET类型为AddressType的Multiset创建。然后该类型被用以定义Employees(雇员)表的列:
CREATE TYPE AddressesType AS MULTISET(AddressType)
CREATE TABLE Employees(
 EmpID      int,
 FirstName  varchar(30),
 LastName   varchar(30),
 Salary     int,
 Addresses  AddressesType
)
本发明实施例
本发明提供一种用于对带有复杂结构的表(即包含结构化列和多重集值列的表)提供数据更改能力的技术。在本发明优选实施例中,这些特征是用于更新存储在关系数据库中数据的SQL Server引擎的一部分。例如,本发明结合常具有比1NF(或“平直”)关系模型复杂的数据模型的应用程序使用。它们模拟的数据类型具有复杂的内部结构和/或包括这些值的多重集。通常,这样的应用程序使用一个平直表集来模拟该数据。复杂结构类型和多重集提供一种用来建立其逻辑模式更自然地映射到原始数据模型的这类数据的模型。本发明可用于更新嵌入这样的复杂结构类型内的多重集中的关系数据。如在下面将要详细解释的,本发明还包括用SQL在平直表的最外层上提供的丰富程度和表达能力来更改多重集数据的能力。
根据本发明,SQL语句正在被增强以支持对表的集值列(多重集)的更改。根据本发明在增强以支持对表集值列(多重集)的更改的SQL语句是UPDATE语句。常规UPDATE语句的一般格式如下所示,其中由<>包围的语法元素是后来在描述中扩展的非终结词:
UPDATE<target-table>
SET      <scalar-column-modificationl>,<scalar-column-modification>,....
          ...
WHERE<search-condition>
其中<target-table>是要更改的表,<scalar-column-modification>指定标量值列的更改并具有以下形式:
<target-columnl>=<value-expression>
其中<target-column>是要更改的列的名字,且<value-expression>是提供给应修改的<target-column>以新值的标量值表达式。
根据本发明的UPDATE语句的提议扩展在可用于更改集值列的SET短语中引入另一类更改(<collection-column-modification>)。<collection-column-modification>是以下形式之一:
(UPDATE<collection-valued-column>
  SET...
  WHERE<search-condition>)
(DELETE FROM<collection-valued-column>
  WHERE...)
(INSERT INTO<collection-valued-column>
  VALUES(...)
           )
换言之,使用类似于针对外部表的INSERT/UPDATE/DELETE的INSERT/UPDATE/DELETE语法。内部UPDATE的SET短语可使用同样递归地嵌套的句法方法来指定对外部集值列内集值列的更改,并因而启用任意嵌套层次中集值列的更改。实际上,通过将INSERT/UPDATE/DELETE嵌入外部UPDATE语句的SET短语,集值列上的更改被模型化为外部表上的UPDATE。
如上所述,将所有标量和集值变化集聚成提供要根据本发明在复杂结构、对象值或集值列中作出变化的完整描述的单一值的数据结构在此被称为“变化描述符”。变化描述符告知UPDATE指令在复杂结构类型分层结构中什么要改变和何处变化,并被包装为常规标量从而允许UPDATE指令在指定分层层次上更新标量。通过更新仅受由UPDATE操作中SET短语影响的标量或集值字段所影响的索引,并还仅更新那些对应于由UPDATE操作更改的实际元素集的索引行,变化描述符还启用有效索引维护算法的实现。因而本发明使用变化描述符来实现对不是标量却具有分层结构的表的复杂和部分更新。
变化描述符的实现示例将参照对Employees表的更新提供如下,该表带有标量值列:FirstName(名)、LastName(姓)和EmployeeID(工号)、Salary(薪水)以及存储一地址集称为Address(地址)的集值列。集值列中每个地址具有以下标量值列:Street(街道)、City(城市)、State(州)、ZipCode(邮编)以及称为PhoneNo(电话号码)的集值列。例如:
Employees
  EmployeeID
  FirstName
  LastName
  Salary
  Addresses
     Street
     City
     State
     ZipCode
     PhoneNos
        AreaCode(区号)
        Number(号码)
        Extension(分机)
常规UPDATE语句的语法仅允许通过分配新值给它们来整个地更改表的列。作为示例,如果表“Employees”中的雇员1234和1235有10%的加薪,则该操作可用以下常规语法来实现:
UPDATE Employees
SET Salary=Salary*1.1
WHERE EmpID=1234 OR EmpID=1235
使用两个阶段来处理这样的UPDATE。在第一个阶段期间,列举要改变的行并计算要更改的列的新值。该过程产生表示要执行改变的数据流,在此称为δ流。在第二阶段中,按这样的δ流来更改各列。
另一方面,根据本发明,UPDATE语句使用同一使用两个阶段的机制的变体来更改复杂结构集值列的各个部分。在第一阶段中,根据本发明,δ流使用集聚所有集值列变化的新数据结构。如图1所示,更新的第一阶段通过列举满足查询中谓词的各行并计算每一行中Salary列的新值来实现。这将产生更新的δ流。第二阶段包括将δ流应用于表本身以便执行先前收集的变化的步骤。
如在此所述的,变化描述符技术是一种扩展上述δ流概念用以实现复杂结构或集值列的较细粒度的而非全部的变化。要应用于集值列作为嵌套更新一部分的变化集可视为δ流本身。该δ流嵌套于表示表格变化的最顶层δ流内。对包含在集值列内的集值列的改变还可再次表示为进一步嵌套的δ流。
变化描述符是嵌套δ流的紧缩和标量表示。将其表示为标量值使它在产生最顶层的表层δ流期间能与常规表列的其它新值一起被无隙收集。这使标量和多层嵌套更新能在同一语句中混合在一起。
更新的第二阶段的实现使人理解,变化描述符并不包含集值列的全部新值而仅包含要应用的细粒度化变化集。该实现还知道集值列的存储格式,并能将包含在变化描述符内的信息翻译成物理操作。因此,变化描述符格式是相当灵活的,但又不是依赖于实现的,且可用于各种其它类型的诸如XML的复杂结构、对象类型以及集值列。
图2-4示出嵌套更新语句的三个示例,以及对应的描绘变化描述符内容及其应用效果的图表。第一语句(图2)将改变两个雇员的记录,同时加薪10%并更新在华盛顿州的地址的邮编。
UPDATE Employees
SET Salary=Salary*1.1,
   (UPDATE Addresses A(addr)
   SETaddr.ZipCode=‘98074’,
   WHERE   addr.State=‘WA’)
WHERE EmpID=1234 OR EmpID=1235
第二语句(图3)是类似的,但它还更新正在更新的地址内包含的某些电话的AreaCode(区号)字段。这示出在同一语句中更新分层结构中三个层次上标量值的能力(Salary在层1,邮编在层2,而区号在层3)。
UPDATE Employees
SET  Salary=Salary*1.1,
     (UPDATE Addresses A(addr)
     SET  addr.ZipCode=‘98074’,
          (UPDATE addr.PhoneNos P(phone)
          SET phone.AreaCode=‘425’
          WHERE phone.AreaCode=‘206’)
     WHEREaddr.State=‘WA’)
WHERE EmpID=1234 OR EmpID=1235
在第三示例(图4)中,与加薪一起,两个雇员还移除了他们在西雅图的地址。
UPDATE Employees
SET  Salary=Salary*1.1,
   (DELETE FROM Addresses
   WHERE City=‘Seattle’)
WHERE EmpID=1234 OR EmpID=1235
改变描述符的代码实现
用于根据本发明实现变化描述符的代码进行操作,用来建立变化描述符并消费变化描述符。该变化描述符从分层结构中的自底向上建立,并且接收该变化描述符的操作者根据以上详细陈述的语法将它们分开。语法指定在分层嵌套表结构中的更新位置并保持多值存储数据的分层记录。由于变化描述符包括位置信息以及标量信息,单元内的分层数据可使用查询执行算法中的单个步骤来更新,如以上示例所述。
图5和6示出以上图2-4示例中本发明的变化描述符的实现。图5示出使用常规SQL Server系统中常规UPDATE指令来解析、优化以及执行单元的常规更新的步骤。图6示出本发明的嵌套更新情形,从而查询执行过程被更改成根据以上语法来计算变化描述符。如图所示,关系数据库系统包括解析所接收的SQL语句并产生用户要求数据库完成的(例如插入、更新、或删除数据)逻辑描述的解析器,以及产生使用本领域中众所周知技术的执行算法的查询优化器。根据本发明,图5的常规查询执行被更改成还包括计算变化描述符用于作出在变化描述符中陈述的嵌套表中每个变化的步骤。此外,根据本发明查询执行引擎被增强以读取变化描述符并将如变化描述符所述的变化应用于表中。在图6示例中,更新地址以及薪水。一旦收集了各个变化,它们就被应用于与本发明SQL Server系统相关联的数据库(未示出)中的Employees表。
本领域技术人员将从图6理解,通过更新仅受由UPDATE操作中SET短语在各嵌套层上更改的特定标量字段影响的索引,并还更新那些对应于由UPDATE操作被更改的实际元素的索引行,本发明的变化描述符还启用有效索引维护算法的实现。变化描述符还具有从其应用本身分离关于变化的计算的优点(也称为万圣节保护),即防止更新语句对它本身的副作用。如果计算和变化的应用在两个独立步骤中未被强分离这可能会发生,因为第一阶段可受不恰当的影响,作为看到数据中间变化的结果可产生第二阶段。
本领域技术人员还将理解,本发明对将大数据类型存储为数据库管理系统内用户定义类型字段是特别有利的。要理解可对所述实施例作变化而不背离本发明的宽泛发明概念。例如,尽管本发明实施例已如上在微软的SQL Server数据库管理系统的环境中进行了描述,要理解本发明可被包括在支持使用SQL UPDATE语句的任何数据库管理系统(例如面向对象数据库、XML数据库等)中。此外,尽管本发明的某些方面已被描述为包括在诸如SQL Server的关系数据库系统的环境中,可以理解本发明的那些方面不必受限于在该环境中的实现。相应地,可以理解本发明并不限于所揭示的特定实施例,但旨在包括如所附权利要求中定义的本发明精神和范围内的所有变体。

Claims (22)

1.一种在关系数据库系统中更新复杂结构类型列内值的方法,其特征在于,包括以下步骤:
使用对复杂结构类型列的分层结构任何层上的值的变化进行集聚的数据结构,来表示所述复杂结构类型列中值的更改;
响应于所述数据库上的数据更改语句,计算所述数据结构以确定要用集聚的所述变化来更新所述复杂结构类型列中的哪些值;以及
将集聚的所述变化应用于所述复杂结构类型列。
2.如权利要求1所述的方法,其特征在于,其中将集聚的所述变化应用于所述复杂结构类型列进一步包括:在所述复杂结构类型列的分层结构内的不同层次上同步更新多个标量值的步骤。
3.如权利要求1所述的方法,其特征在于,其中将集聚的所述变化应用于所述复杂结构类型列进一步包括:同步更新所述关系数据库系统的表中的标量值以及复杂结构类型列中的复杂结构类型值的步骤。
4.如权利要求1所述的方法,其特征在于,还包括将INSERT或UPDATE或DELETE语句嵌入UPDATE语句的SET短语中。
5.如权利要求4所述的方法,其特征在于,还包括将多个嵌套SET短语嵌入对应于所述复杂结构类型列的分层结构内每一层的最外部UPDATE语句。
6.如权利要求4所述的方法,其特征在于,其中响应于所述数据库上的数据更改语句,计算所述数据结构以确定要用集聚的所述变化来更新所述复杂结构类型列中的哪些值的步骤包括:更新仅受由UPDATE语句中SET短语在各嵌套层上更改的特定标量字段影响的索引,并更新那些对应于由UPDATE语句更改的实际值的索引行的步骤。
7.如权利要求1所述的方法,其特征在于,其中所述应用步骤与所述计算步骤分开以便提供万圣节保护。
8.一种响应于数据库更改语句以存储和更新至少一个复杂结构类型列中值的关系数据库系统,其特征在于,包括:
一解析器,解析数据库更改语句并产生对由数据库更改语句提议的数据库变化的描述;
一查询优化器,产生实现所述数据库更改语句的执行算法;以及
一查询执行引擎,使用所述执行算法以计算所述数据库更改语句的数据结构以确定要更新复杂结构类型列内的哪些值,其中所述数据结构将所述复杂结构类型列中的值表示为在所述复杂结构类型列的分层结构的任一层次上值的变化的集聚,并且所述查询执行引擎将所述变化应用于要被更新的复杂结构类型列中的值。
9.如权利要求8所述的系统,其特征在于,所述查询执行引擎在所述复杂结构类型列的分层结构内的不同层次上同步更新多个标量值。
10.如权利要求8所述的系统,其特征在于,所述查询执行引擎同步更新所述关系数据库系统的表中的标量值以及复杂结构类型列中的复杂结构类型值。
11.如权利要求8所述的系统,其特征在于,所述解析器解析数据库UPDATE语句的SET短语。
12.如权利要求11所述的系统,其特征在于,所述解析器解析在对应于所述复杂结构类型列的分层结构中每一层的最外部UPDATE语句内的多个嵌套SET短语中的UPDATE语句。
13.如权利要求11所述的系统,其特征在于,所述查询执行引擎更新仅受由UPDATE语句中由SET短语在各嵌套层上更改的特定标量字段影响的索引,并仅更新那些对应于由UPDATE语句更改的实际值的索引行。
14.如权利要求8所述的系统,其特征在于,所述查询执行引擎将集聚的所述变化与所述数据结构的计算分开应用于所述复杂结构类型列,以便提供万圣节保护。
15.一种更新关系数据库系统集值列中值的方法,其特征在于,包括以下步骤:
使用对集值列内的值的变化进行集聚的数据结构,来表示所述集值列中对值的更改;响应于所述数据库上的数据更改语句,计算所述数据结构以确定要用集聚的所述变化来更新所述集值列中的哪些值;以及
将集聚的所述变化应用于所述集值列。
16.如权利要求15所述的方法,其特征在于,其中将集聚的所述变化应用于所述集值列进一步包括在所述集值列的不同层次上同步更新多个标量值的步骤。
17.如权利要求15所述的方法,其特征在于,其中将集聚的所述变化应用于所述集值列进一步包括同步更新所述关系数据库系统的表中的标量值以及集值列中值的步骤。
18.一种响应于数据库更改语句以存储和更新至少一个集值列中值的关系数据库系统,其特征在于,包括:
一解析器,解析数据库更改语句并产生对由数据库更改语句提议的数据库变化的描述;
一查询优化器,产生实现所述数据库更改语句的执行算法;以及
一查询执行引擎,使用所述执行算法以计算所述数据库更改语句的数据结构以确定要更新集值列内的哪些值,其中所述数据结构将所述集值列中的值表示为在所述集值列的分层结构的任一层次上值的变化的集聚,并且所述查询执行引擎将所述变化应用于要被更新的集值列中的值。
19.如权利要求18所述的系统,其特征在于,所述解析器解析数据库UPDATE语句的SET短语。
20.如权利要求19所述的系统,其特征在于,所述解析器解析在对应于所述集值列的每一层的最外部UPDATE语句内的多个嵌套SET短语中的UPDATE语句。
21.如权利要求18所述的系统,其特征在于,所述查询执行引擎更新仅受由UPDATE语句中SET短语在各嵌套层上更改的特定标量字段影响的索引,并更新那些对应于由UPDATE语句更改的实际值的索引行。
22.如权利要求18所述的系统,其特征在于,所述查询执行引擎将集聚的所述变化与所述数据结构的计算分开应用于所述集值列,以便提供万圣节保护。
CNB2004800032581A 2003-10-24 2004-07-29 用于在单个语句中更改集值和标量值列的sql语言扩展 Expired - Fee Related CN100474286C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/693,302 2003-10-24
US10/693,302 US7433886B2 (en) 2003-10-24 2003-10-24 SQL language extensions for modifying collection-valued and scalar valued columns in a single statement

Publications (2)

Publication Number Publication Date
CN1875358A CN1875358A (zh) 2006-12-06
CN100474286C true CN100474286C (zh) 2009-04-01

Family

ID=34522359

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800032581A Expired - Fee Related CN100474286C (zh) 2003-10-24 2004-07-29 用于在单个语句中更改集值和标量值列的sql语言扩展

Country Status (6)

Country Link
US (1) US7433886B2 (zh)
EP (1) EP1597655A4 (zh)
JP (1) JP4604041B2 (zh)
KR (1) KR101085686B1 (zh)
CN (1) CN100474286C (zh)
WO (1) WO2005045582A2 (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890532B2 (en) * 2004-12-15 2011-02-15 Microsoft Corporation Complex data access
US7624374B2 (en) * 2005-08-30 2009-11-24 Microsoft Corporation Readers and scanner design pattern
US20070174305A1 (en) * 2006-01-06 2007-07-26 International Business Machines Corporation Method to reduce the number of copies of values in procedural language
US8656272B2 (en) * 2006-04-28 2014-02-18 Microsoft Corporation Persisting instance-level report customizations
US20080071730A1 (en) * 2006-09-14 2008-03-20 Roland Barcia Method and Apparatus to Calculate Relational Database Derived Fields During Data Modification
US8387004B2 (en) * 2007-02-09 2013-02-26 Microsoft Corporation Compositional application programming interface and literal syntax
US8595231B2 (en) * 2007-04-26 2013-11-26 International Business Machines Corporation Ruleset generation for multiple entities with multiple data values per attribute
US7676525B2 (en) * 2007-07-02 2010-03-09 Microsoft Corporation Efficient query processing of merge statement
US7974981B2 (en) 2007-07-19 2011-07-05 Microsoft Corporation Multi-value property storage and query support
US8200668B2 (en) * 2008-06-24 2012-06-12 Microsoft Corporation Scalar representation for a logical group of columns in relational databases
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US9727606B2 (en) 2012-08-20 2017-08-08 Oracle International Corporation Hardware implementation of the filter/project operations
US9563658B2 (en) 2012-08-20 2017-02-07 Oracle International Corporation Hardware implementation of the aggregation/group by operation: hash-table method
US9600522B2 (en) * 2012-08-20 2017-03-21 Oracle International Corporation Hardware implementation of the aggregation/group by operation: filter method
US8996544B2 (en) 2012-09-28 2015-03-31 Oracle International Corporation Pruning disk blocks of a clustered table in a relational database management system
US9514187B2 (en) 2012-09-28 2016-12-06 Oracle International Corporation Techniques for using zone map information for post index access pruning
US9430550B2 (en) 2012-09-28 2016-08-30 Oracle International Corporation Clustering a table in a relational database management system
US10642837B2 (en) 2013-03-15 2020-05-05 Oracle International Corporation Relocating derived cache during data rebalance to maintain application performance
CN103177123B (zh) * 2013-04-15 2016-05-11 昆明理工大学 一种提高数据库检索信息相关度的方法
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9606921B2 (en) 2013-09-21 2017-03-28 Oracle International Corporation Granular creation and refresh of columnar data
US10025823B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Techniques for evaluating query predicates during in-memory table scans
US10067954B2 (en) 2015-07-22 2018-09-04 Oracle International Corporation Use of dynamic dictionary encoding with an associated hash table to support many-to-many joins and aggregations
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10656964B2 (en) 2017-05-16 2020-05-19 Oracle International Corporation Dynamic parallelization of a calculation process
US10719372B2 (en) 2017-05-22 2020-07-21 Oracle International Corporation Dynamic parallelization of data loading
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US11748352B2 (en) * 2021-08-26 2023-09-05 International Business Machines Corporation Dynamical database system resource balance

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5412804A (en) * 1992-04-30 1995-05-02 Oracle Corporation Extending the semantics of the outer join operator for un-nesting queries to a data base
US6016497A (en) * 1997-12-24 2000-01-18 Microsoft Corporation Methods and system for storing and accessing embedded information in object-relational databases
US6460043B1 (en) * 1998-02-04 2002-10-01 Microsoft Corporation Method and apparatus for operating on data with a conceptual data manipulation language
US6122644A (en) * 1998-07-01 2000-09-19 Microsoft Corporation System for halloween protection in a database system
JP4346158B2 (ja) * 1999-06-28 2009-10-21 株式会社東芝 データ生成装置及びプログラムを記憶したコンピュータ読み取り可能な記憶媒体
US6484179B1 (en) * 1999-10-25 2002-11-19 Oracle Corporation Storing multidimensional data in a relational database management system
US6564203B1 (en) * 2000-02-24 2003-05-13 Oracle Corporation Defining instead-of triggers over nested collection columns of views
US6493708B1 (en) * 2000-03-02 2002-12-10 Oracle Corporation Techniques for handling function-defined hierarchical dimensions
WO2002059793A2 (en) * 2000-10-31 2002-08-01 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
US6892204B2 (en) * 2001-04-16 2005-05-10 Science Applications International Corporation Spatially integrated relational database model with dynamic segmentation (SIR-DBMS)

Also Published As

Publication number Publication date
CN1875358A (zh) 2006-12-06
EP1597655A4 (en) 2008-12-10
US7433886B2 (en) 2008-10-07
KR20060112191A (ko) 2006-10-31
US20050091256A1 (en) 2005-04-28
JP2007509422A (ja) 2007-04-12
WO2005045582A2 (en) 2005-05-19
KR101085686B1 (ko) 2011-11-22
WO2005045582A3 (en) 2005-12-29
EP1597655A2 (en) 2005-11-23
JP4604041B2 (ja) 2010-12-22

Similar Documents

Publication Publication Date Title
CN100474286C (zh) 用于在单个语句中更改集值和标量值列的sql语言扩展
US7139774B2 (en) Singleton abstract model correspondence to multiple physical models
CN100468396C (zh) 用于任意数据模型的映射体系结构
US6611843B1 (en) Specification of sub-elements and attributes in an XML sub-tree and method for extracting data values therefrom
US5734887A (en) Method and apparatus for logical data access to a physical relational database
CN100481076C (zh) 关系型数据库与全文检索相结合的检索方法
CN101427249B (zh) 具有对丰富数据类型的支持的可扩展查询语言
CN1749999B (zh) .net数据类型和实例的持久存储
CN100545837C (zh) 用于数据库结构比较的方法和装置
EP1918827A1 (en) Data processing
US20010018690A1 (en) Integrating both modifications to an object model and modifications to a databse into source code by an object-relational mapping tool
US6915303B2 (en) Code generator system for digital libraries
US20100131570A1 (en) Methods and structures for utilizing reusable custom-defined nestable compound data types to permit product variations within an exisitng taxonomy
CN102314647A (zh) 一种利用xbrl进行的企业数据存储的方法
Marcos et al. Extending UML for object-relational database design
WO2009120172A1 (en) Semantic relational database
US20040044989A1 (en) Apparatus and method using pre-described patterns and reflection to generate source code
CN102819585A (zh) 一种xml数据库文档控制方法
US7509332B1 (en) Customized indexes for user defined data types
CN100517229C (zh) 数据版本升级方法
US20030191727A1 (en) Managing multiple data mining scoring results
McKenzie An algebraic language for query and update of temporal databases
US20050228800A1 (en) Method and system for relationship building from XML
Becker et al. Temporal support for geo-data in object-oriented databases
KR20010054560A (ko) 다중 데이터베이스 질의언어를 이용한 스키마 통합 방법

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150424

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150424

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090401

Termination date: 20200729

CF01 Termination of patent right due to non-payment of annual fee