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

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

Info

Publication number
CN1875358A
CN1875358A CNA2004800032581A CN200480003258A CN1875358A CN 1875358 A CN1875358 A CN 1875358A CN A2004800032581 A CNA2004800032581 A CN A2004800032581A CN 200480003258 A CN200480003258 A CN 200480003258A CN 1875358 A CN1875358 A CN 1875358A
Authority
CN
China
Prior art keywords
value
statement
update
change
collection
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.)
Granted
Application number
CNA2004800032581A
Other languages
English (en)
Other versions
CN100474286C (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标准指定两类集合-数组和多重集。表的列可以是这两类集合之一。在实现数组和多重集的现有数据库系统中,该标准指定用于更改全部集值列(其中旧值被全新值所替换)的语法和语义。现有技术没有指定递增地更改集值列的任何方法。需要一种对这样的集合执行增量更改的技术,因为当仅需更改其一小部分时用新集合替换整个集合是非常昂贵的。本发明解决本领域中的这些需要。
发明内容
本发明通过提供一种使用SQL UPDATE语句的嵌套扩展在嵌套表中更新集值列的新方法来符合本领域中的上述需要。所提议扩展使用与用来更改表的标量值列的常规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{
 SqlString AreaCode,
 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=1234OR EmpID=1235
使用两个阶段来处理这样的UPDATE。在第一个阶段期间,列举要改变的行并计算要更改的列的新值。该过程产生表示要执行改变的数据流,在此称为δ流。在第二阶段中,按这样的δ流来更改各列。
另一方面,根据本发明,UPDATE语句使用同一使用两个阶段的机制的变体来更改复杂结构集值列的各个部分。在第一阶段中,根据本发明,δ流使用集聚所有集值列变化的新数据结构。如图1所示,更新的第一阶段通过列举满足查询中谓词的各行并计算每一行中Salary列的新值来实现。这将产生更新的δ流。第二阶段包括将δ流应用于表本身以便执行先前收集的变化的步骤。
如在此所述的,变化描述符技术是一种扩展上述δ流概念用以实现复杂结构或集值列的较细粒度的而非全部的变化。要应用于集值列作为嵌套更新一部分的变化集可视为δ流本身。该δ流嵌套于表示表格变化的最顶层δ流内。对包含在集值列内的集值列的改变还可再次表示为进一步嵌套的δ流。
变化描述符是嵌套δ流的紧缩和标量表示。将其表示为标量值使它在产生最顶层的表层δ流期间能与常规表列的其它新值一起被无隙收集。这使标量和多层嵌套更新能在同一语句中混合在一起。
更新的第二阶段的实现使人理解,变化描述符并不包含集值列的全部新值而仅包含要应用的细粒度化变化集。该实现还知道集值列的存储格式,并能将包含在变化描述符内的信息翻译成物理操作。因此,变化描述符格式是相当灵活的,但又不是依赖于实现的,且可用于各种其它类型的诸如XML的复杂结构、对象类型以及集值列。
图2-4示出嵌套更新语句的三个示例,以及对应的描绘变化描述符内容及其应用效果的图表。第一语句(图2)将改变两个雇员的记录,同时加薪10%并更新在华盛顿州的地址的邮编。
UPDATE Employees
SET Salary=Salary*1.1,
    (UPDATE Addresses A(addr)
    SET  addr.ZipCode=‘98074’,
    WHERE addr.State=‘WA’)
WHERE EmpID=1234OR 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’)
    WHERE  addr.State=‘WA’)
WHERE EmpID=1234OR 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 US7433886B2 (en) 2003-10-24 2003-10-24 SQL language extensions for modifying collection-valued and scalar valued columns in a single statement
US10/693,302 2003-10-24

Publications (2)

Publication Number Publication Date
CN1875358A true CN1875358A (zh) 2006-12-06
CN100474286C 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103177123A (zh) * 2013-04-15 2013-06-26 昆明理工大学 一种提高数据库检索信息相关度的方法

Families Citing this family (38)

* 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
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
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
US9600522B2 (en) * 2012-08-20 2017-03-21 Oracle International Corporation Hardware implementation of the aggregation/group by operation: filter method
US9563658B2 (en) 2012-08-20 2017-02-07 Oracle International Corporation Hardware implementation of the aggregation/group by operation: hash-table method
US9727606B2 (en) 2012-08-20 2017-08-08 Oracle International Corporation Hardware implementation of the filter/project operations
US9430550B2 (en) 2012-09-28 2016-08-30 Oracle International Corporation Clustering a table in a relational database management system
US9507825B2 (en) 2012-09-28 2016-11-29 Oracle International Corporation Techniques for partition pruning based on aggregated zone map information
US8996544B2 (en) 2012-09-28 2015-03-31 Oracle International Corporation Pruning disk blocks of a clustered 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
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
US9378232B2 (en) 2013-09-21 2016-06-28 Oracle International Corporation Framework for numa affinitized parallel query on in-memory objects within the RDBMS
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
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core 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
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering 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
EP1364313A2 (en) * 2000-10-31 2003-11-26 Michael Philip Kaufman System and method for automatically generating user interfaces 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103177123A (zh) * 2013-04-15 2013-06-26 昆明理工大学 一种提高数据库检索信息相关度的方法
CN103177123B (zh) * 2013-04-15 2016-05-11 昆明理工大学 一种提高数据库检索信息相关度的方法

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1875358A (zh) 用于在单个语句中更改集值和标量值列的sql语言扩展
CN1299223C (zh) 提供关系数据的一致性层次抽象化
CN1199104C (zh) 往返式软件设计的方法与装置
CN1277231C (zh) 从远程数据源加载数据
US7139750B2 (en) System and method for where-used searches for data stored in a multi-level hierarchical structure
CN1864159A (zh) 通过查询结果扩充和结果数据反馈的迭代数据分析过程
CN1653448A (zh) 搜索数据源的系统和方法
CN1705945A (zh) 全局查询相关属性
CN1361890A (zh) 观察改变索引对查询优化方案的影响的数据库系统
CN1877523A (zh) 一种支持异构构件的构件库统一管理方法
CN1684069A (zh) 计算机化财务系统的提取、变换和加载设计器模块
CN1761962A (zh) 将非结构化数据实时聚集为结构化数据以便关系数据库引擎进行sql处理
CN1967560A (zh) 业务操作权限控制方法、关系数据库的生成方法
WO1999014651B1 (en) Method and system for database application software creation requiring minimal programming
CN1768325A (zh) 公开内容的抽象数据库抽象中的规则应用管理
CN1509433A (zh) 把传统软件应用程序转换为现代面向对象系统的方法和系统
CN100342377C (zh) 一种提高数据处理效率的方法
CN1271441A (zh) 一种关于数据库的方法
CN1661593A (zh) 一种计算机语言翻译方法及其翻译系统
CN1251088C (zh) 目标集成管理系统
CN102819585A (zh) 一种xml数据库文档控制方法
US7509332B1 (en) Customized indexes for user defined data types
CN1766876A (zh) 用于管理结构化文件的系统和方法
CN1592908A (zh) 具有异种对象类型的数据库系统
CN1825306A (zh) 基于关系数据库的xml数据存储与访问方法

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