当前位置: 首页 > 专利查询>微软公司专利>正文

数据存储中无序和有序集合的实现系统和方法技术方案

技术编号:2858097 阅读:213 留言:0更新日期:2012-04-11 18:40
本发明专利技术的若干实施例针对用于扩充扩展的关系型数据存储(ERDS)的UDT框架,以包括对无序集合(多重集)和有序集合(列表)的支持的系统和方法。更具体地,本发明专利技术的若干实施例使用UDT基础结构、CLR类属和新的UNNEST操作符来为既是标量又是关系的集合创建并使用特殊类型的抽象。作为标量,该集合类型可由理解标量的数据存储引擎(包括但不限于客户机栈)的所有部分来处理,而作为关系,该集合类型与任何其它类型的关系一样都是可查询的。

【技术实现步骤摘要】

本专利技术涉及计算机系统中的数据存储和数据库系统中支持用户定义类型(UDT)的系统,其中,UDT是用于关系型数据库引擎和文件系统的可扩充性机制,以通过注册实现特定约定的已管理类型来扩充数据存储的标量类型系统。更为具体地,本专利技术涉及通过既是标量又可查询的UDT来实现数据库系统中多重集和有序集合。
技术介绍
用户定义类型如本领域的技术人员所已知并理解的,MICROSOFT SQL SERVER是一种提供广泛的管理和开发工具、提取—变换—加载(ETL)工具、商业智能和分析服务以及其它能力的综合数据库管理平台。另外,MICROSOFT WINDOWS.NET框架公用语言运行时刻(CLR)近来被集成到SQL SERVER数据库中。CLR是MICROSOFT.NET框架的中心,并为所有的.NET代码提供了执行环境。在CLR中运行的代码被称为“受管代码(managed code)”。CLR提供了程序执行所需的各种功能和服务,包括即时(JIT)编译、分配和管理存储器、实施类型安全、异常处理、线程管理和安全性。CLR当前在第一次调用.NET例程时由SQL SERVER加载。在SQL SERVER的先前的版本中,数据库程序员在服务器侧书写代码时被局限于使用事务SQL(Transact-SQL)。事务SQL是国际标准化组织(ISO)和美国国家标准化组织(ANSI)定义的结构化查询语言(“SQL”)的扩展。使用事务SQL,数据库开发者能够创建、修改和删除数据库和表,以及插入、检索、修改和删除储存在数据库中的数据。事务SQL特别地为直接结构数据访问和操作而设计。尽管事务SQL在结构数据访问和管理时胜出,它不像VISUAL BASIC.NET和C#那样是经过充分考验的编程语言。例如,事务SQL不支持数组、集合、对每一个的循环、位移或类。当将CLR集成到SQL SERVER数据库中时,数据库开发者能够执行单独使用事务SQL不可能或很难实现的任务。VISUAL BASIC.NET和C#都是对数组、结构化异常处理和集合的完全支持的现代编程语言。开发者可充分利用CLR的集成来书写具有更复杂逻辑并且更适用于使用VISUAL BASIC.NET和C#等语言的计算任务的代码。这些编程语言提供了面向对象的能力,如封装、继承和多态性。相关的代码可被容易地组织成类和名字空间。受管代码比事务SQL更适用于数字捣弄(crunching)和复杂的执行逻辑,并且其特征是对许多复杂任务的广泛支持,包括字符串处理和正则表达式。由于具有.NET框架基类库(BCL)中找到的功能,数据库开发者能够访问上千个预构建的类和例程,它们可从任何储存的过程、触发器或用户定义的功能来容易地访问。受管代码的另一好处是类型安全。在执行受管代码之前,CLR验证该代码是安全的。这一过程被称为“验证”。在验证期间,CLR执行若干核查来确保该代码运行是安全的。例如,核查代码以确保不会读取尚未被写入的存储器。CLR也防止了缓冲区溢出。当书写受管代码时,部署单元被称为组件。组件被包装为动态链接库(DLL)。受管DLL组件可以被加载并包容到SQL SERVER。CREATE ASSEMBLY语句用于在服务器中注册组件。以下为一示例CREATE ASSEMBLY YukonCLRFROM′C\MyDBApp\YukonCLR.dll′在此示例中,FROM子句指定了要加载的组件的路径名。SQL SERVER传统上支持“内嵌的”标量类型,如整型、浮点数、日期、时间和字符串。这些内嵌的类型也伴随着一组内嵌的操作,如+、-、*、/以及在这些类型上的内嵌函数。这些类型、操作和函数在它们由产品包装并且用户不能定义其自己的类型的意义上是“内嵌的”。诸如SQL SERVER等数据库系统希望允许用户能够扩充数据库系统的类型系统,使得用户能够创建能像数据库系统中的标量类型那样起作用,但是包含更复杂结构的新类型,如创建包括X和Y坐标的“Point(点)”类型,等等。在这一点上,SQL标准和某些数据库管理系统(DBMS)产品使用了术语“用户定义类型”来描述若干形式的类型可扩充性。例如,SQL-99标准描述了一种“独特类型(distincttype)”,它是可由用户定义成具有内部表示的类型,该内部表示是现有SQL内嵌数据类型的值。独特类型可任选地与现有的标量类型共享比较和算术操作符、类型转换以及累计(列)函数(如,max(求最大值)、min(求最小值)、average(求平均值))。独特类型可允许在其值上定义约束。另外,独特类型可通过经由用户定义的函数定义独特类型专用的新函数来展示现有标量类型的行为之外的那些行为。对于类型核查,独特类型和现有标量类型被认为是不同的类型。独特类型的一个优点是容易定义。如果新类型的内部表示具有可用现有的内嵌类型描述的单个数据成员,并且该内嵌类型已实现了新类型所需的大多数行为,则独特类型是有吸引力的备选。用户不必要担心实现管理类型的盘上存储、构造函数、比较操作符(用户排序和索引)、算术操作符和类型变换(计算(casting))操作符所需的行为。用户仅需要选择需要在独特类型上展示底层内嵌类型的什么功能,并可任选地在新类型上添加对值的约束和额外的函数。独特类型的另一优点是对内嵌类型可用的所有查询处理,如直方图计算,可以被容易地用于独特类型的列。然而,独特类型的缺点是它们不能被容易地用于创建更复杂的类型。SQ1-99标准也描述了一种“结构化类型”,它是可由用户定义并且具有内部表示的类型,该内部表示是数据成员的集合,其每一个可以是一种不同的SQL内嵌或用户定义的类型。这类似于C和C++中的结构体(struct)概念。SQL-99描述了一种定义结构化类型的风格,用户通过它只需按照其内部结构来定义类型。系统在其数据成员、构造函数和函数上自动生成存取器和增变器(mutator)函数,以管理类型实例的盘上表示。SQL中定义的结构化类型的具体优点是(a)容易定义类型的基本行为,以及(b)可灵活地定义更复杂的类型。然而,结构类型的一个重要的缺点是类型专用方法的定义的复杂性,这些方法通常通过以诸如C或C++等通用编程语言书写的外部函数来定义。为完整地定义结构化类型,该类型的定义者需要在SQL和某一其它编程语言之间跨接一条线。尽管SQL 99的独特类型和结构化类型特征在使用户能够扩充SQL数据库的现有标量类型系统的方面向用户提供了某些优点,然而,需要一种改进的系统和方法,以使用户能够通过如标量类型那样起作用但包含更复杂的结构和行为的用户定义类型来扩充数据库系统的标量类型系统。2004年2月10日提交的名为“数据库系统中提供用户定义类型的系统和方法”的美国专利申请号10/775,282(委托摘要号MSFT-3029/207007.01)(后文称为UDT专利申请)中揭示的专利技术针对一种允许用户通过创建如标量类型那样起作用但包含更复杂的结构和行为的用户定义类型来扩充数据库系统的标量类型系统的系统和方法。依照该专利技术,用户以高级编程语言书写程序代码,该语言实现定义用户定义类型的结构的类,以及可在用户定义类型的实例上调用的方法。如该申请(以及本专利技术)中所使用的,当涉及用户定义类型时,术语“结构”包含可实现该类型的字本文档来自技高网...

【技术保护点】
一种用于实现增强的集合,作为关系型数据存储中的实体的属性的方法,其特征在于,所述方法包括:对于应用于所述集合的标量操作,将所述集合作为标量来处理;以及对于应用于所述集合的查询操作,将所述集合作为关系来查询。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:B拉塔克瑞施纳B塞兹金DY艾尔图多夫JA布莱克雷ON泽利格R凡卡特实俞玮BHM德内特CJ库宁汉姆DV楚林S斯特凡尼D托米克
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1