CN1846207A - 类型路径索引 - Google Patents

类型路径索引 Download PDF

Info

Publication number
CN1846207A
CN1846207A CNA2004800015603A CN200480001560A CN1846207A CN 1846207 A CN1846207 A CN 1846207A CN A2004800015603 A CNA2004800015603 A CN A2004800015603A CN 200480001560 A CN200480001560 A CN 200480001560A CN 1846207 A CN1846207 A CN 1846207A
Authority
CN
China
Prior art keywords
type
data
computer
udt
file
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
CNA2004800015603A
Other languages
English (en)
Other versions
CN100557605C (zh
Inventor
C·J·坎宁安
R·凡卡特实
E·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 CN1846207A publication Critical patent/CN1846207A/zh
Application granted granted Critical
Publication of CN100557605C publication Critical patent/CN100557605C/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
    • 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/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • 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/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • 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/99937Sorting
    • 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/99942Manipulating data structure, e.g. compression, compaction, compilation
    • 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

Landscapes

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

Abstract

有效的分层结构搜索是基于对象类型(500,510,520,530)的。通过预先计算附加信息并将其存储在快速查找结构中,就可能快速识别满足对象(900)检索要求的对象(900)。此外,还可能使用该技术来避免存储中操作的对象(900)水合。而且,还可能发挥诸如直方图(920)的数据库统计结构的作用,而无需检查每个对象(900)就估算出合格对象的数量。

Description

类型路径索引
相关申请
本申请声明对2003年10月23日提交的序列号为10/692,350的美国申请的权利,其揭示在此全部引入作为参考。
技术领域
本发明一般涉及信息存储和检索领域,尤其涉及基于对象类型的有效分层结构搜索。
背景技术
消费者主要将其计算机用于传送和组织个人信息,该信息是传统个人信息管理器(PIM)类型数据或诸如数字音乐或照片的媒体。数字内容的量以及存储原始字节的能力已大量增加;然而消费者可用的用于组织和统一这些数据的方法却没有与之并驾齐驱。技术工人花费大量的时间来管理和共享信息,并且某些研究估计技术工人在非生产信息的相关行为上花费15-25%的时间。其它研究估计具有代表性的技术工人每天约花2.5个小时搜索信息。
计算机系统中组织信息的传统方法集中在对基于文件-文件夹-以及-基于目录的系统(“文件系统”)的使用上,以基于用以存储文件的存储介质的物理组织抽象将众多文件组织到文件夹的目录分层结构中。在1960年代开发的Multics操作系统,因为首创文件、文件夹以及目录的使用以在操作系统层上管理数据的可存储单元而享誉。具体地,Multics在文件的分层结构中使用符号地址(从而引入文件路径的概念),其中文件的物理地址对用户(应用程序和终端用户)不透明。该文件系统与任一单个文件的文件格式完全无关,且文件之间的关系被认为在操作系统层上是无关的(即与分层结构中文件的位置不同)。由于Multics的出现,可存储数据在操作系统层上被组织成文件、文件夹以及目录。这些文件一般包括由文件系统维护的体现为特定文件的文件分层结构(“目录”)本身。该目录又维护对应于该目录中所有其它文件和分层结构中这些文件的节点位置的一个条目列表(在此称为文件夹)。这已是本领域中约40年的状态。
然而,尽管提供了驻留于计算机物理存储系统的信息的合理表示,文件系统仍然只是物理存储系统的抽象,且因此文件的利用需要在用户所操纵的(具有环境、特征、和与其它单元关系的单元)和操作系统所提供的(文件、文件夹和目录)之间的一定程度的间接引用(解释)。因此,用户(应用程序和/或终端用户)就无法选择而只能迫使信息单元进入文件系统结构,即使这样做是低效、不一致、或者不需要的。由于大多数现有文件系统利用嵌套文件夹形式来组织文件和文件夹,随着文件数量的增加,保持灵活和高效的结构配置所需的努力变得相当令人畏惧。
过去已进行了若干次不成功的解决文件系统缺点的尝试。这些先前尝试的一部分涉及了内容可寻址存储器的使用,以提供一种可通过内容而不是通过物理地址访问数据的机制。然而,这些努力已经证明是不成功的,因为尽管对诸如高速缓存和存储器管理单元的装置的小规模使用内容可寻址存储器已证明是有用的,但是对诸如物理存储介质的装置的大规模使用由于各种原因尚不可能,因而这种方案就不存在了。也进行了其它使用面向对象的数据库(OODB)系统的尝试,但是这些尝试尽管以强烈的数据库特征和良好的非文件表示为特性,它在处理文件表示中并不有效,并且不能在硬件/软件接口系统层上呈现基于文件和文件夹的分层结构的速度、有效性、以及简单性。
诸如“WinFS”(在后面描述)的新开发的存储系统将文件的目录存储为数据库中的表格。每个文件由表格中的行表示,而诸如“枚举目录中所有文件”的文件系统操作使用依靠数据库引擎的查询来满足。依靠存储器有效地执行基本操作变成了有效最优化数据库查询的操作。
在这种存储系统中,文件的概念被扩展成“对象”的概念。有关该文件的元数据被存储在带有模式(在存储系统中定义)的受管理CLR(公共语言运行时)对象中以表示该对象的可允许描述数据。例如,照片会具有存储诸如其分辨率、拍摄时间、以及地点信息的数据的代表性CLR对象。该对象模型支持数据继承。有了数据继承,从一类型推出另一类型以及添加新字段就成为可能。例如,可创建照片的子类,诸如“DriverLicensePicture”。这种子类可包含额外的信息,诸如司机驾照的ID字段。
在诸如WINFS的这些新开发存储系统中,所展现的模式通过解释层映射到表格上。用户仅看到一系列数据的视图而不是在基本表格上的操作。尽管这种映射的精确设计并不重要,但它用作WinFS API和基础存储格式之间的粘合剂。用户不直接控制或看到这种映射。
WinFS存储还展现基于其类型而不是早先传统文件系统中的文件名字来查询对象的概念。基于类型的查询可搜索从给定类型导出的精确类型或任意类型。这种新近的形式被称为分层结构匹配,且它被期望成为普通的WinFS操作。
WinFS模式模型对查询处理器添加了某些新的挑战。用户定义类型或UDT被广泛使用,且基于UDT类型从表格中检索所有UDT是普遍的。此外,WinFS使用UDT继承,且要求从表格中查询给定类型以及任何子类型的所有元素。存在着多个表格,每一个包含不同数量的UDT、类型、类型拓扑、以及该拓扑中的UDT分布。这些属性使得准确的基数和成本估算较为困难,也使基于类型/子类型分层结构有效地检索值较为困难。
考虑到现有数据存储和数据库技术中的前述缺陷,需要有效的分层结构检索和成本估算。本发明满足这些需要。
发明内容
以下发明内容提供了本发明各方面的纵览。它并非旨在提供本发明所有重要方面的所有描述,也不旨在定义本发明的范围。相反,本发明内容旨在用作随后详细说明书和附图的绪论。
本发明涉及基于对象类型进行有效的分层结构搜索。通过预先计算附加特定信息并将其存储在快速查找结构中,就可能快速标识满足对象检索请求的对象。此外,也可能使用这些技术来避免存储中特定操作的昂贵的对象水合(hydration)。此外,可能以新的方式发挥数据库统计结构的作用,从而无需检查每个对象就能估算合格对象的数量。
从以下本发明的详细说明书和附图中,本发明的其它特征和优点变得显然。
附图说明
前述发明内容以及以下较佳实施例的详细描述,在结合附图阅读时能更好地理解。为了说明本发明,在附图中示出了本发明的示例性结构;然而,本发明并不限于所揭示的特定方法和装置。在附图中:
图1是示出本发明各方面可被结合在其中的计算机系统的框图;
图2是示出一计算机系统的框图,该系统被分成3个组件组:硬件组件、操作系统组件、以及应用程序组件;
图3示出了在文件夹中分组的文件的基于树的分层结构;
图4示出可用于本发明的示例性存储平台;
图5示出基于对象类型和子类型的对象的典型分层结构;
图6示出根据本发明的标注类型分层结构;
图7示出一常规直方图;
图8示出能够根据本发明构建的直方图;
图9示出根据本发明产生的选择性估算的示例性方法的流程图。
具体实施方式
本发明主题用符合法定要求的特征进行描述。然而,说明书本身并非旨在限制本专利的范围。相反,发明者预期所揭示主题也可结合其它现有或将来的技术以其它方式体现,包括与本文档所述步骤不同的步骤或者类似步骤的组合。此外,尽管术语“步骤”可在此使用以隐含所采用方法的不同元素,该术语仍不应被解释为暗示在此揭示的各个步骤之间的任何特定顺序,除非明确地描述了各个步骤的顺序。
纵览
本发明涉及基于对象类型的有效分层结构搜索。通过预先计算附加特定信息并将其存储在快速查找结构中,就可能快速标识满足对象检索请求的对象。此外,也可能使用这些技术来避免存储中特定操作的昂贵的对象水合。此外,可能以新的方式发挥数据库统计结构的作用,从而无需检查每个对象就能估算出合格对象的数量。
本发明提供对表格中特定类型的值,或其类型在以类型分层结构中给定类型为根的树中的值的快速检索。B-树索引具有找到一特定位置并检索具有一值(例如路径类型)的对象或一系列具有相同值的对象的能力。此外,还可能根据对象值的前缀寻找并返回都包含同一前缀的值的范围。这些属性可发挥作用来基于类型或类型分层结构作有效检索。
WinFS是在文件系统中引入对象概念的文件系统/数据存储。在该存储中的操作之一是能够基于其类型有效查找和查询对象。本发明描述如何才能非常有效地执行该操作。
本发明提供一内建功能的界面,该功能用于提供UDT分层结构类型id。分层结构类型id是在类型分层结构中唯一标识UDT类型表达式的可变二进制(varbinary)值。通过在查询中和在创建适当的已计算的列索引中使用该功能,来支持有效的UDT类型分层结构。
示例性计算环境
当在此和在权利要求书中使用时,以下术语具有以下含义:
“对象”是硬件/软件接口系统可访问的可存储信息单元,它具有在由硬件/软件接口系统外壳展现给终端用户的所有对象上共同支持的一个基本属性集。对象还具有所有类型上共同支持的包括允许引入新属性和关系的特征的属性和关系。
“操作系统”(OS)是作为应用程序和计算机硬件之间中间体的特定程序。在大多数情形中,操作系统包括外壳和内核。
“硬件/软件接口系统”是软件、或硬件和软件的组合,用作计算机系统的下层硬件组件和在该计算机系统上执行的应用程序之间的接口。硬件/软件接口系统通常包括(以及在某些实施例中仅包括)操作系统。硬件/软件接口系统还可包括虚拟机器管理器(VMM)、公共语言运行时(CLR)或其功能等效实体、Java虚拟机器或其功能对象实体、或者其它这样的替换或添加在计算机系统操作系统之上的软件组件。硬件/软件接口系统的目的是提供用户可执行应用程序的环境。任意硬件/软件接口系统的目标是使计算机系统能以有效方式使用以及利用计算机硬件。
本发明的众多实施例可在计算机上执行。图1和以下讨论旨在提供一种本发明可在其中实现的适当计算环境的简要一般说明。尽管不是必需的,本发明将在由诸如客户机工作站或服务器的计算机执行的诸如程序模块的计算机可执行指令的一般环境中进行说明。通常,程序模块包括执行特定任务或实现具体抽象数据类型的例程、程序、对象、组件、数据结构等等。此外,本领域技术人员将理解,本发明可在其它计算机系统配置中实践,包括手持式装置、多处理器系统、基于微处理器的或可编程的电器消费品、网络PC、小型计算机、大型计算机等等。本发明还可在任务由经通信网络链接的远程处理装置执行的分布式计算环境中实践。在分布式计算环境中,程序模块可被置于本地和远程存储器存储设备中。
如图1所示,示例性通用计算系统具有常规个人计算机20等,包括处理单元21、系统存储器22以及把包括系统存储器的各种系统组件耦合到处理单元21的系统总线23。系统总线23可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线架构的任一种的局部总线。系统存储器包括只读存储器(ROM)24和随机存储器(RAM)25。含有帮助如启动期间在个人计算机20中元件之间信息交换的基本例程的基本输入/输出系统(BIOS)26被存储在ROM 24中。
个人计算机20还包括读取和写入硬盘(未示出)的硬盘驱动器27、读取或写入可移动磁盘29的磁盘驱动器28、以及读取或写入诸如CD ROM或其它光学介质等可移动光盘31的光盘驱动器30。硬盘驱动器27、磁盘驱动器28和光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34连接至系统总线23。诸驱动器及其相关联计算机可读介质为计算机20提供计算机可执行指令、数据结构、程序模块和其它数据的非易失性储存。
尽管在此所述示例性环境采用了硬盘、可移动磁盘29和可移动光盘31,但本领域技术人员应理解也可在示例性操作环境中使用其它类型计算机可访问的能够存储数据的计算机可读介质,诸如磁盒、闪存卡、数字视频盘、Bernoulli卡、随机存取存储器(RAM)、只读存储器(ROM)等等。
包括操作系统35、一个或多个应用程序36、其它程序模块37和程序数据38的众多程序模块,可存储在硬盘、磁盘29、光盘31、ROM 24或RAM 25中。用户可通过诸如键盘40和定点装置42的输入装置把指令和信息输入个人计算机20。其它输入装置(未示出)可包括诸如话筒、游戏杆、游戏垫、卫星接收器、扫描仪等等。这些和其它输入装置常常通过与系统总线相耦合的串行端口接口46连接到处理单元21,但是它也可通过其它接口相连,如并行端口、游戏端口或通用串行总线(USB)。监视器47或其它类型的显示装置也通过诸如视频适配器48的接口和系统总线23相连。除了显示器47,个人计算机通常包括其它外围输出装置(未示出),如扬声器和打印机。图1的示例性系统还包括主机适配器55、小型计算机系统接口(SCSI)总线56、以及与SCSI总线56相连的外部存储装置62。
个人计算机20可以在使用与一台或多台远程计算机,诸如远程计算机49的逻辑连接的网络化环境中运行。远程计算机49可以是另一台个人计算机、服务器、路由器、网络PC、对等装置或其它公共网络节点,而且通常包括上述与个人计算机20相关的许多或全部元件,尽管在图1中仅显示了存储器存储装置50。图1中所描绘的逻辑连接包括局域网(LAN)51和广域网(WAN)52。这样的网络化环境在办公室、企业范围计算机网络、企业内联网和因特网上是常见的。
当用于LAN网络环境中时,个人计算机20通过网络接口或适配器53与LAN51连接。当用于WAN网络环境中时,个人计算机20通常包括调制解调器54或其它用于在诸如因特网的广域网52上建立通信的装置。可以是内置式或外置式的调制解调器54,与系统总线23通过串行端口接口46相连接。在网络化环境中,所述与个人计算机20相关的程序模块或其一部分,可以存储在远程存储器存储装置中。可以理解,所示网络连接是示例性的,也可以使用其它在计算机之间建立通信连接的装置。
尽管可以想像本发明的众多实施例特别适合于计算机化系统,但本文档中没有任何描述旨在将本发明限制在这些实施例中。相反,在此使用的术语“计算机系统”旨在包括任意和所有包括按钮、或者能够确定按钮按压或按钮按压的等效动作的装置,无论这种装置是电子、机械、逻辑的,还是实际上是虚拟的。
如图2框图所示,计算机系统200可被粗略划分成3个组件组:硬件组件202、操作系统组件204、以及应用程序组件206。
再参照图1,在某些计算机系统200中,硬件202可包括中央处理单元(CPU)21、存储器(ROM 24和RAM 25)、基本输入/输出系统(BIOS)26、以及各种输入/输出(I/O)设备,诸如键盘40、鼠标42、监视器47、和/或打印机(未示出)等等。硬件组件202包括计算机系统200的基本资源。
应用程序组件206包括各种软件程序,包括但不限于编译器、数据库系统、字处理器、商业程序、视频游戏等。应用程序提供计算机资源用来为各种用户(例如机器、其它计算机系统、和/或终端用户)解决问题、提供解决方案、并处理数据的手段。
操作系统组件204包括操作系统本身及其外壳和内核。“操作系统”(OS)是作为应用程序和计算机硬件之间中间体的特定程序,且其目的是提供用户可在其中执行应用程序的环境。任何硬件/软件接口系统的目的都是使该计算机系统能以有效方式使用及利用计算机硬件。
操作系统通常在起动时被载入计算机系统中,然后管理计算机系统的所有应用程序(或简称为“应用”)。通过经应用程序接口(API)请求服务,应用程序与硬件/软件接口系统交互作用。某些应用程序使终端用户能通过诸如公共语言或图形用户界面(GUI)与硬件/软件接口系统交互。
操作系统通常执行对应用程序的各种服务。在多个程序可同时运行其中的多任务操作系统中,操作系统确定哪些应用程序应以什么顺序运行,以及每个应用程序每一轮在切换到另一应用程序之前应给予多少时间。操作系统还管理多个应用程序之间对内部存储器的共享,并处理诸如硬盘、打印机、以及拨号端口的附加硬件装置的输入输出。操作系统还向每个应用程序(以及在某些情形中向终端用户)发送关于操作状态和任何已发生错误的消息。操作系统还可卸载对成批作业(例如打印)的管理,从而从该工作释放起动应用程序,并可恢复其它处理和/或操作。在可提供并行处理的计算机上,操作系统还管理分割程序使其同时在一个以上处理器上运行。
操作系统外壳是与操作系统的交互性终端用户接口(也称为“命令解释程序”)。外壳是应用程序甚至终端用户可直接访问的操作系统的外层。与外壳相比,内核是可直接与硬件组件交互的操作系统的最里层。
如相关领域中技术人员所理解的,“文件”是可作为离散(可存储和可检索)实体由操作系统操纵的信息实体(包括但不限于操作系统本身、以及应用程序、数据集等)。在现代操作系统中(Windows、Unix、Linux、Mac OS等等),文件是由操作系统操纵的可存储信息的基本单元(例如数据、程序等),且文件组通常被组织于“文件夹”中。在微软Windows、Mac OS、以及其它操作系统中,文件夹是可作为单个信息单元被检索、移动、以及用其它方式操纵的文件集合。在某些其它操作系统中,诸如DOS、z/OS以及大多数基于Unix的操作系统中,使用的是术语“目录”而不是文件夹,且早期的Apple计算机系统(例如AppleIIe)使用术语“名录”(catalog);然而,在此使用的所有这些术语都被认为是同义的和可互换的,并旨在进一步包括所有用于分层信息存储结构的其它等效术语和引用。
如本领域技术人员所众所周知和理解的,目录(即文件夹目录)是基于树的分层结构,其中文件基于在包括树结构的节点的文件夹中的位置进行分组。例如,如图3所示,基于DOS的文件系统基本文件夹(或“根目录”)302可包括多个文件夹304,每个又可包括其它文件夹(作为该特定文件夹的“子文件夹”)306,而每个306又可包括其它文件夹308以至无限。每个这些文件夹具有一个或多个文件310,尽管在硬件/软件接口系统层上,文件夹中的单个文件除了它们在树分层结构中的位置外并没有什么相同。这种将文件组织到文件夹分层结构的方法间接地反映了用于存储这些文件的典型存储介质的物理组织(例如硬盘、软盘、CD-ROM等),并不令人惊讶。
除此之外,每个文件夹都是其子文件夹及其文件的容器-即每个文件夹都拥有其子文件夹和文件。例如,当文件夹被操作系统删除时,也删除了该文件夹的子文件夹和文件(在每个子文件夹情形中还递归地包括它自己的子文件夹和文件)。类似地,通常每个文件都仅归一个文件夹所有,即使可复制文件且该副本位于不同文件夹中,文件副本本身仍是与原始文件无直接联系的不同的独立单元(例如在操作系统层上对原始文件的改动不会被映射到副本文件中去)。在这点上,文件夹和文件实际上因此在特征上是“物理的”,因为文件夹是物理容器概念的等效实体,而文件是容器内离散而独立的物理单元概念的等效实体。
可用于本发明的用于组织、搜索、以及共享数据的存储平台被设计成包括称为对象的数据形式的所有数据类型的存储器。参见图4,根据本发明的存储平台400包括在数据库引擎414上实现的数据存储器402。在一实施例中,该数据库引擎包括带有对象关系扩展的关系数据库引擎。在一实施例中,关系数据库引擎414包括微软SQL服务器关系数据库引擎。
数据存储器402实现一数据模型404,它支持数据的组织、搜索、共享、同步、以及安全。特定数据类型在诸如模式440的模式中描述,并且存储平台400提供用于使用这些模式以及扩展这些模式的工具446,以下进行更全面描述。
在数据存储器402中实现的改变跟踪机制406提供跟踪数据存储器改变的能力。数据存储器402还提供安全能力408和升级/降级能力410。数据存储器402还提供一组应用编程接口412以向利用该存储平台的其它存储平台组件和应用程序(例如应用程序450a、450b和450c)展现数据存储器402的能力。
本发明的存储平台还包括应用编程接口(API)422,它使诸如应用程序450a、450b和450c的应用程序能够访问该存储平台的所有前述能力,并能够访问模式中所述数据。存储平台API 422可由应用程序以及与其它API的组合中使用,诸如OLE DB API 424和微软Windows Win32 API 426。
本发明的存储平台400还向应用程序提供各种服务428,包括便于用户或系统之间数据共享的同步服务430。例如,同步服务430可使得能够具有与数据存储器402相同格式的其它数据存储器430的互操作性,以及对具有其它格式的数据存储器442的访问。存储平台400还提供允许数据存储器402有与诸如Windows NTFS文件系统418的现有文件系统的互操作性的文件系统能力。
在至少某些实施例中,存储平台402还可提供具有其它能力的应用程序,这些能力用于启用数据操作并启用与其它系统的交互。这些能力可用诸如信息代理服务434和通知服务432的附加服务428的形式,以及其它实用程序436的形式体现。
在至少某些实施例中,存储平台被包括在计算机系统的硬件/软件接口系统中,或形成其一构成部分。作为示例,并非限制,本发明的存储平台可被包括在操作系统、虚拟机管理器(VMM)、公共语言运行时(CLR)或其功能等效组件、或者Java虚拟机或其功能等效组件中,或形成其一构成部分。
通过其公共存储基础以及经模式化的数据,本发明的存储平台为消费者、技术工人以及企业使得能够更有效地进行应用程序开发。它提供一个丰富并可扩展的编程表面区,不仅使这些在其数据模型中固有的能力可用,而且还包括并扩展了现有文件系统和数据库访问方法。
在本说明书及各附图中,本发明的存储平台400可称为“WinFS”。然而,使用该名字来代表存储平台完全是为了方便描述而不是旨在以任何方式进行限制。
本发明的存储平台400的数据存储器402实现了一数据模型,它支持驻留于存储器中数据的组织、搜索、共享、同步以及安全。在本发明的数据模型中,对象是存储信息的基本单元。该数据模型提供一种机制,用于声明对象和对象扩展,并用于建立对象之间的关系,以及用于组织和分类对象,如下进行更全面描述。
该数据模型允许定义类型之间子类-父类关系。子类-父类关系被这样定义:如果类型A是类型B的基类,则必然B的每个实例也是A的实例。另一种表达方式是遵从B的每个实例必然也遵从A。如果,例如A具有类型为字符串的属性名字,而B具有类型为16位整数的属性年龄,则可理解为B的任一实例必然具有名字和年龄。类型分层结构可视为以单个父类为根的树。根的分支提供第一层的子类,该层的分支提供第二层的子类等等直到本身不具有任何子类的叶端子类。该树不限于统一深度,但不能包含任何循环。一给定类型可具有零个或多个子类以及零个或一个父类。给定实例可遵从最多一个类以及该类的父类。换言之,对于树上任意层的给定实例,该实例可遵从该层上至多一个子类。
在一实施例中包括微软SQL服务器引擎的关系数据库引擎414,支持内建标量类型。内建标量类型是“固有”并“简单”的。因为用户不能定义自己的类型所以它们是固有的,而因为它们不能封装复杂结构所以它们是简单的。用户定义类型(“UDT”)通过使用户能定义复杂的结构化类型而扩展类型系统来提供固有标量类型系统之上和之外的类型可扩展性的机制。一旦由用户定义了,就可在使用内容标量类型的类型系统中的任何地方使用UDT。
该存储平台模式被映射到数据库引擎存储中的UDT类。数据存储对象被映射到从Base.Item例行得出的UDT类。扩展还被映射到UDT类并使用分层结构。根据扩展例行是Base.Extension,所有的扩展类型由此导出。
UDT是一个CLR类-它具有状态(即数据字段)和行为(即例程)。使用任一种管理语言来定义UDT-C#、VB.NET等等。UDT方法和操作符可依靠该类的实例用T-SQL调用。UDT可以是例如一行中列的类型、T-SQL中例程的参数类型、或者T-SQL中的变量类型。
以下实例示出UDT的基础。假设MapLib.dll有称为MapLib的汇编。在此汇编中,有在名字空间BaseTypes之下称为Point的类。
namespace BaseTypes
{
public class Point
{
  //returns the distance from the specified point.
  public double Distance(Point p)
  {
    //return the distance between Point p and this Point
  }
  //other stuff in the class
}
}
以下的T-SQL代码将类Point绑定到称为Point的SQL服务器UDT。第一步调用将MapLib汇编载入数据库的“CreateAssembly”。第二步调用“CreateType”以创建用户定义类“Point”并将其绑定到受管理类BaseTypes.Point:
CREATE ASSEMBLY MapLib
FROM‘\\mysrv\share/MapLib.dll’
go
CREATE TYPE Point
EXTERNAL NAME‘BaseTypes.Point’
go
一旦已创建,“Point”UDT就可被用作表格中的列,且可在T-SQL中调用方法,如下所示:
Create table Cities(
Name varchar(20),
State varchar(20),
Location Point)
--Retrieve the Distance of the cities
--from co-ordinates(32,23)
Declare@p point(32,23),@distance float
Select Location∷Distance(@p)
From Cities
存储平台模式到UDT类的映射在高层次上是相当直接的。一般而言,存储平台模式被映射到CLR名字空间。存储平台类型被映射到CLR类。CLR类继承映射镜像存储平台类型继承,而存储平台属性被映射到CLR类属性。
示例性实施例
典型的数据存储包括一个基本对象的表格,其中每一个都具有诸如UDT的类型。可向类型添加行为(也称为方法)。部分较新的数据存储提供继承,其中类型可用其它方法扩展以创建新的类型。例如,类型可以是诸如“.doc”或“.jpeg”的扩展。这些类型的继承扩展可以是例如“.doc2”或“.jpeg2”。本发明允许在类型上的查询(即不仅是对“.doc”而且是对“.doc”扩展的查询)。
类型的示例性继承分层结构如图5所示。在图5中,类型是“文档”500。“法律文档”510和“再审文档”530被示为是“文档”500的子类。“法律文档”510的子类是“华盛顿法律文档”520。查询可在类型(例如“文档”)和/或子类(例如“文档”和/或“法律文档”和/或“华盛顿法律文档”)上执行。
常规的搜索技术将使用带有列的表格,其中各列之一为相应对象列中每个对象的类型列。为了执行搜索,搜索引擎会遍历每一行、通过将其载入存储器来例示每个对象、以及检查该类型以确定是否有匹配。该技术非常缓慢,且没有办法确定最佳执行计划以使搜索有效。
较新的搜索技术具有经计算的各列,其中在表格中提供一具有基于其它相关联列而预先计算的值的附加列。该技术加快了搜索,但需要附加存储器来存储附加的经计算列。可提供是类型或UDT函数的称为“类型路径”的特定经计算列。这可被用以搜索任一类型或子类。
本发明的另一方面是基于类型来有效搜索一系列对象实例的能力。值是预先计算的,并需要存储足够的信息以基于其类型来区分对象实例。该值包含足够的信息以支持特定类型或类型分层结构中所有类型(都共享同一祖先)的有效搜索。此外,该值可在诸如B-树的快速访问结构或其它索引结构中使用,以基于类型或基于类型分层结构来搜索对象。
对于该系统中的每个类型,需要赋予其一个值。该值必须至少在类型分层结构的每个“层”(距根同一深度)上唯一。对于每个类型,每个父类的类型值被加到所有先前前缀操作的结果或如果未执行前缀操作的原始类型之前作前缀。同一层次上的全部元素应以相同存储格式(长度)进行存储。
当表示类型实例时,如上所述地确定值,且该值与对象一起存储。当将其存储在数据库中时,对象和预先计算值可存储在同一表格或其它存储结构的不同列中,如表格1所示。表格1是示出示例性ID及其相应文档类型的数据类型表格例子。
  ID   文档类型
  1   文档实例
  1.2   法律文档实例
  1.3   再审文档实例
  1.2.4   华盛顿法律文档实例
              表格1
因而,给予每个类型一数字或其它标识符,如图6的经标注类型分层结构所示。如图6所示,“文档”类型被给予标识符ID=1,“法律文档”类型被给予标识符ID=2,“再审文档”类型被给予标识符ID=3,“华盛顿法律文档”类型被给予标识符ID=4。每次创建一个对象实例,可将适当的标识符附加到类型上。因此,例如“文档”会用类型路径“1”编码,“法律文档”会用“1.2”编码,而“华盛顿法律文档”会用“1.2.4”编码,如表1所示。
以下的表格2示出了存储对象名字、UDT、以及类型路径的另一示例性存储表格。每次创建一个对象实例,可将适当的标识符附加到类型上。因此,例如“文档”会用类型路径“1”编码,“法律文档”会用“1.2”编码,而“华盛顿法律文档”会用“1.2.4”编码,如表2所示。
  列1-对象名字   UDT   类型路径
  Doc1   文档   1
  Doc2   法律文档   1.2
  Doc3   再审文档   1.3
  Doc4   华盛顿法律文档   1.2.4
                    表格2
诸如B-树索引的快速访问存储结构可在包含预先计算值的列上创建。该索引结构期望具有有效找到包含给定值或给定值的前缀的项的能力。尽管寻找一特定值是通用的,但前缀操作通常仍仅用以寻找字符串值,诸如SQL中的LIKE‘PREFIX%’结构。该LIKE结构可使用搜索索引结构中前缀的操作来有效地计算。
可使用这样的操作来搜索被编码的分层结构的类型和子类。例如,指令“LIKE‘1.2%’”将找出任意具有以“1.2”开始的编码的对象(假设‘%’是通配符)。因而在本示例中,该示例性指令将搜索并返回“法律文档”类型和“华盛顿法律文档”类型的所有对象。
需要搜索特定类型或类型分层结构的操作可在索引上操作以识别特定类型的所有对象或源自特定类型的所有对象。索引结构上的相等匹配用于前者,而前缀匹配满足后者。该编码使得能够基于类型或类型分层结构位置的对象进行快速查找。数据库系统中的B-树通常支持这两种操作(以用于满足LIKE‘aaa%’查询的前缀能力)。
根据本发明诸方面,可有效检索数据表格的行。类型路径列上的索引可以B-树形式创建。例如,所有标识类型路径“1.2”的行都被存储在叶节点中。这些叶节点都对应于具有行的表格。当响应于例如“seek”命令沿B-树而下时可作比较。预期可使用“seek”操作来根据特定值以及特定前缀进行搜索。
可以预期可使用存储器内结构而不是数据库结构。可创建逆向索引并可使用前缀操作。此外,对每个分层结构层次可使用长度可变的编码。此外,可使用带有相同属性的一些非数字表示。
使用类型可替换性,可存储所有类型的对象,并可使用“IS OF(Type)”操作符由对象类型和子类过滤搜索。根据本发明诸方面,诸如“IS OF”的操作谓词可被映射到类型路径列中。可使用诸如“IS OF ONLY”的其它操作谓词。因而,可避免昂贵的对象水合或例示。
可使用基于类型分层结构而预先计算的值来避免水合对象以确定其类型。假设对象水合/例示是昂贵的,而按类型查询是一般的,则需要避免不符合类型限定的类型例示。如果类型以避免对象例示并仍使能全保真过滤的方法进行编码,则可改进性能。
此外,可能截取用户的类型检查请求并在内部重写它们以根据预先计算的值来执行等效操作。对存在预先计算值的所有对象可这样做。
对于在数据库系统中实现的基于类型的快速对象辨别的实施例,需要确定对象为给定类型或从该类型导出的任意类型的表格中的行数。用于解决该估算问题的常规技术包括推测、假设所有值是等概率的(即平直分布)、使用表格基数来创建估算、或使用直方图来跟踪较常出现的值和较少出现的值的范围。通常,直方图对确定有多少给定类型的值的存在是有用的。本发明的各方面估算这个直方图上的选择性。
可建立直方图来估算查询要花多长时间。直方图示出了每类对象的数量。示例性直方图如图7所示。其中,“文档”、“法律文档”、“再审文档”以及“华盛顿法律文档”类对象的示例性数量以直方图格式示出。然而,直方图并不提供类型分层结构。类型分层结构可由困难和昂贵的查找技术来确定。
本发明的诸方面涉及直方图的编码技术,使无需查找技术就可辨别类型分层结构。根据该编码技术,给予每个类型数字或其它标识符,如图6的经标注类型分层结构所示。因而,可产生一直方图,其中可使用该长度可变的编码方案来标识分层结构。例如,如图8所示以及每一个类型/子类的数字,可轻易地标识出1.2.4是1.2的子类,而1.2是1的子类。
图9示出了根据本发明产生选择性估算的示例性方法的流程图。为了估算一组对象上类型分层结构查询的选择性,需要在步骤900使用在此所述的编码,在步骤910将该编码结果存储为列,以及在步骤920在该列上创建直方图(单独在列上或者作为在列上创建索引的结果)。
然后,在步骤930,编码查询类型,描述要从类型或该类型的任意子类中检索哪些对象。对于直方图中的每个元素,在步骤940确定已编码的查询类型是否是直方图条目的前缀。如果是,则在步骤950与该直方图步骤相关联的元素数量被添加到来自直方图的其它“匹配元素”的数量中。如果它不是前缀,则在步骤960与该直方图步骤不关联的元素数量被添加到来自直方图的其它“非匹配元素”的数量中。
当处理了所有的直方图步骤时,在步骤990通过取“匹配元素”数量并除以“匹配元素”数量和“非匹配元素”数量之和来确定该分层结构的类型匹配查询的选择性估算。
因而,可能在这种二进制编码上使用直方图以确定类型分层结构中有关UDT分布的统计信息。通过在用该分层结构编码进行选择性估算期间遍历直方图,可产生相当精确的基数估算。注意,如果使用固有函数来估算所述每种算法的可选择性,应当有可能完全移除对IS OF的CLR调用而仅作固有函数上的基数估算。
根据本发明,实现了从UDT返回一类型-id的函数。另一函数则从类型-id返回分层结构的类型-id编码。诸如WinFS的存储系统最好在每个UDT-提供表格(例如对象表格)上创建一已计算列。在一实施例中,预期IS OF标量包含一附加/替换谓词。例如,可使用UDT valref来寻找包含该UDT的基表。然后可使用基表的已计算列来确定包括一标量表达式的已计算列的存在性。如果发现了这样的一个列,则可添加隐式谓词。
假设每个UDT类型都是一小(例如4字节)固定长度值。此外,分层结构的类型-id也可被定义为父类型-id串联到字符串或二进制字段。如果包含UDT的每一行还具有标识该分层结构编码的已计算列,则在该新列上可创建一索引。可使用范围前缀操作来实现返回给定类型分层结构中所有UDT的操作,并可使用类型-id上的精确匹配来解决非分层结构匹配。
示例性分层结构类型id可提供为以下函数:
  函数   参数   结论
  HIERARCHICAL_TYPE_ID   (UDT_expression)   包含沿从类型分层结构的根到最特别类型的UDT_expression的路径上类型的类型id串联的varchar值。该varchar值可包含非印刷字符。
UDT_expression可以是任意的用户定义类型值的表达式。HIERARCHICAL_TYPE_ID函数最好是确定并精确的。这提供了在使用分层结构类型id导出的已计算列上建立索引的能力。预期该已计算列不必是持续的。
要确定类型路径是否是另一路径的前缀,系统在内部使用利用现有的LIKE前缀扫描能力建立的HAS_PREFIX运算符。该前缀扫描能力被用来实现形式为“character_expression LIKE‘prefix_string%’”的条件匹配,其中prefix_string是某些不包含任意诸如%的通配符的恒定字符串。该HAS_PREFIX运算符最好不是用户可见的。如果索引可用,则HAS_PREFIX可使用一索引扫描。
分层结构类型id值最好较短以减少必须存储在索引中的数据量。对于WinFS模式中的类型,分层结构类型id最好小于100个字符。
给定一内部类型id而检索一分层结构类型id的函数最好比较快,因为它是在索引创建期间使用的。
当其实例仍然保留在数据库中(即如果在表格定义中使用仍然存在的它或其祖先)时,最好不要丢弃或以其它方式删除一类型。否则,包含被丢弃类型的分层结构类型id的索引条目可能保留在索引中,但将不可能解释它们。此外,在丢弃一类型后添加新类型可导致与现有实例相同的分层结构类型id,从而出现错误。
分层结构类型id的内部格式最好应是长度为4字节倍数的可变二进制值,包含沿从类型分层结构的根到最特别类型的UDT_expression的路径上类型的类型id(例如在内部存储为4字节整数)串联。
在带有其值为用户定义类型的属性的较大表格的情形中,最好是支持对其属性值具有特定类型或是给定类型的子类的行的快速检索。为了支持该情形中的快速搜索,可在使用HIERARCHICAL_TYPE_ID创建的已计算列上创建一索引。
假设UDT的类型分层结构如下:
  CREATE TYPE person_t EXTERNAL NAME[asm]:[Person]
  CREATE TYPE employee_t EXTERNAL NAME[asm]:[Employee]UNDER person_t
  CREATE TYPE hourly_employee_t EXTERNAL NAME[asm]:[HourlyEmployee]
UNDER employee_t
  CREATE TYPE salaried_employee_t EXTERNAL NAME[asm]:[SalariedEmployee]
    UNDER employee_t
此外,有表格定义如下:
CREATE TABLE person(pcol person_t)
为了启用person行的快速查找而使用IS OF操作符在pcol类型上过滤,可如下添加在person表格的person.pcol的分层结构类型id上的已计算列和索引:
ALTER TABLE person ADD pcol_htid AS HIERARCHICAL_TYPE_ID(pcol)
CREATE INDEX person_htid_idx ON person(pcol_htid)
这将例如使用户在即使“person”表格很大时仍能快速找到有关计时雇员的所有信息。
如果对一给定类型所有值的快速检索有较高优先级,则可创建HIERARCHICAL_TYPE_ID上的CLUSTERED(聚类)索引。使索引CLUSTERED将分组相同类型的值、或在类型分层结构的同一子树中的值、在同一页面或盘上邻近页面上的值。
对于查询重写,预期包括通用语句,即通过HIERARCHICAL_TYPE_ID内部地实现IS OF谓词,以及从HIERARCHICAL_TYPE_ID导出的已计算列上的索引可有助于加速对使用IS OF操作符在类型上的查询。
系统在内部使用查询重写以处理被称为类型谓词的IS[NOT]OF谓词。类型谓词的所需格式定义如下:
Type_predicate∷=UDT_expression IS[NOT]OF(Type_list)
Type_list∷=user_defined_type_specification[,...n]
User_defined_type_specification∷=
Inclusive_UDT_specification|Exclusive_UDT_specification
Inclusive_UDT_specifcation∷=UDT_name
Exclusive_UDT_specification∷=ONLY UDT_name
形式为UDT_expression IS NOT OF(type_list)的表达式等于NOT(UDT_expression IS OF(type_list))。
形式为UDT_expression IS OF(type_list)的类型谓词被重写为UDT_expression是否与type_list中的条目相匹配的谓词测试的逻辑和。
要确定UDT_expression IS OF是否为Inclusive_UDT_specification的测试在重写查询中被表达为:
HIERARCHICAL_TYPE_ID(UDT_expression)HAS_PREFIX
<<constant hierarchical type id of UDT_name>>
在此,<<constant hierarchical type id of UDT_name>>是表示UDT_name的分层结构类型id的可变二进制常数。
要确定UDT_expression IS OF是否为Exclusive_UDT_specification的测试在重写查询中被表达为:
HIERARCHICAL_TYPE_ID(UDT_expression)=
<<constant hierarchical type id of UDT_name>>
应注意在以上重写条件中的HIERARCHICAL_TYPE_ID(UDT_expression)表达式将匹配从同一表达式上建立的已计算列上的索引,诸如person_htid_idx。
以下例子表示上述用于支持IS OF和IS OF(ONLY...)谓词重写规则的应用。
--寻找是任意类雇员的所有人
SELECT*FROM person WHERE pcol IS OF employee_t
--重写查询:
SELECT*FROM person
WHERE HIERARCHICAL_TYPE_ID(pcol)
            HAS_PREFIX<<constant hierarchical type id of employee_t>>
--寻找所有是种类employee_t但不是其子类之一的人:
SELECT*FROM person WHERE pcol IS OF(ONLY employee_t)
--重写查询:
SELECT*FROM person
WHERE HIERARCHICAL_TYPE_ID(pcol)=<<constant hierarchical type id of employee_t>>
--寻找所有领薪雇员或计时雇员:
SELECT*FROM person WHERE pcol IS OF(hourly_employee_t,salaried_employee_t)
--重写查询:
SELECT*FROM person
WHERE
   (HIERARCHICAL_TYPE_ID(pcol)
HAS_PREFIX<<constant hierarchical type id of hourly_employee_t>>
   OR
   HIERARCHICAL_TYPE_ID(pcol)
HAS_PREFIX<<constant hierarchical type id of salaried_employee_t>>)
预期可添加函数TYPE_ID()的过载版本以返回UDT表达式的内置类型id。
还预期可添加函数TYPE_NAME()的单个可变二进制分层结构类型id(htid)变量的过载版本以返回带有该htid的类型的字符串名。以下例子表示如何对表格的分层结构中每个不同类型的出现计数:
--计每种类型的人数:
SELECT TYPE_NAME(TYPE_ID(pcol)),TYPE_ID(pcol),count(*)
FROM person
GROUP BY TYPE_NAME(TYPE_ID(pcol)),TYPE_ID(pcol)
对分层结构类型id可提供压缩方案。这会减小从分层结构类型id的索引关键值大小。例如将它们编码为基-254整数(0-254字节为小数)并使用字节255为分隔符。则分层结构类型id将为以下形式:
<typeid><separator><typeid><separator>...<separator><typeid>在许多情形中,这将导致路径上每个typeid仅为2或3个字节而不是4个字节。
当类型谓词中的type_list具有一个以上条目时可将类型包容能力添加到查询重写中。例如,UDT_expression IS OF(person_t,employee_t)等于UDT_expression IS OF(person_t),因为employee_t是person_t的子类。
结论
在此描述的各种技术可结合硬件、软件、或适当时两者的组合实现。因而,本发明的各种方法和装置,或其中的某些方面或部分,可取包括在诸如软盘、CD-ROM、硬盘、或任何其它机器可读存储介质的有形介质中的程序代码(即指令)形式,其中当程序代码由诸如计算机的机器载入和执行时该机器成为实践本发明的装置。在程序代码在可编程计算机上执行的情形中,计算机一般将包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置以及至少一个输出装置。一个或多个程序最好用高级过程或面向对象的编程语言来实现,以与计算机系统通信。然而如果需要,程序也可以用汇编或机器语言实现。在任意情形中,语言可以是编译或解释语言,并与硬件实现相结合。
本发明的各方法和装置也可通过以程序代码形式体现的通信来实践,这些程序代码经诸如电线或电缆、光纤的某些传输介质或任意其它形式的传输来传送,其中当程序代码由诸如EPROM、门阵列、可编程逻辑装置(PLD)、客户计算机、录影机等的机器执行时,机器成为实践本发明的装置。当在通用处理器上实现时,程序代码结合处理器提供操作以调用本发明索引功能的唯一装置。
尽管本发明已结合各个附图的较佳实施例进行了描述,应该理解也可使用其它类似实施例,或者可对所述实施例作更改和添加用于执行本发明的相同功能而不背离本发明。例如,尽管本发明的示例性实施例在仿真个人计算机功能的数字装置的环境中描述,本发明技术人员将理解本发明并不限于本申请中所述的数字装置,而可应用于任意数量的现有或新兴的计算装置或环境,诸如有线或为无线的游戏控制台、手持式计算机、便携式计算机等,并可应用于任意数量的经通信网络连接或在网络上交互的计算装置。此外,应强调特别是随着无线网络装置的数量持续增长,可在此预期各种计算机平台,包括手持式装置操作系统和其它应用程序专用操作系统。因此,本发明不应限于任何单个实施例,而应根据所附权利要求书在幅度和范围中作解释。

Claims (24)

1.一种计算机系统,其特征在于,包括:
一数据存储器,包括多个对象,每个对象具有相关联类型,每个类型具有一标识符;以及
一硬件/软件接口系统,用于操纵所述众多对象。
2.如权利要求1所述的计算机系统,其特征在于,每个类型是用户定义类型(UDT)。
3.如权利要求1所述的计算机系统,其特征在于,类型是另一类型的子类型。
4.如权利要求1所述的计算机系统,其特征在于,所述数据存储器还包括每个对象的类型路径。
5.如权利要求4所述的计算机系统,其特征在于,所述数据存储器包括用于存储每个类型路径的已计算的列。
6.如权利要求4所述的计算机系统,其特征在于,每个类型路径包括可变长度的被编码值。
7.如权利要求6所述的计算机系统,其特征在于,每个可变长度的被编码值对应于所述相关联对象的类型的一分层结构层。
8.一种能够操纵多个对象的硬件/软件接口系统,其特征在于,每个对象具有一相关联类型,每个类型具有一标识符。
9.如权利要求8所述的硬件/软件接口系统,其特征在于,每个类型是用户定义类型(UDT)。
10.如权利要求8所述的硬件/软件接口系统,其特征在于,类型是另一类型的子类型。
11.如权利要求8所述的硬件/软件接口系统,其特征在于,每个对象具有相关联的类型路径。
12.如权利要求11所述的硬件/软件接口系统,其特征在于,每个类型路径属于数据存储中的已计算列。
13.如权利要求11所述的硬件/软件接口系统,其特征在于,每个类型路径包括可变长度的被编码值。
14.如权利要求13所述的硬件/软件接口系统,其特征在于,每个可变长度的被编码值对应于所述相关联对象的类型的一分层结构层。
15.一种具有存储其上的数据结构的计算机可读介质,其特征在于,包括:
包含一对象的第一数据字段;以及
包含与所述对象相关联的数据类型的第二数据字段,所述数据类型具有一标识符。
16.如权利要求15所述的计算机可读介质,其特征在于,所述类型是用户定义类型(UDT)。
17.如权利要求15所述的计算机可读介质,其特征在于,所述类型是另一类型的子类。
18.如权利要求15所述的计算机可读介质,其特征在于,还包括包含所述对象的类型路径的第三数据字段。
19.如权利要求18所述的计算机可读介质,其特征在于,所述类型路径包括可变长度的被编码值。
20.如权利要求19所述的计算机可读介质,其特征在于,所述可变长度的被编码值源自所述数据类型。
21.一种产生对多个对象上查询的选择性估算的方法,每个对象具有带有标识符的类型,其特征在于,包括:
用源自所述标识符的类型路径来编码每个对象;
对每个对象,确定其类型路径是否将满足所述查询;以及
确定具有将满足所述查询的类型路径的对象与所述所有对象的比例。
22.如权利要求21所述的方法,还包括接收所述查询并确定哪些类型路径将满足所述查询。
23.如权利要求21所述的方法,还包括编码所述查询使得所述查询具有可满足的一种类型。
24.如权利要求21所述的方法,还包括使用所述被编码对象创建一直方图。
CNB2004800015603A 2003-10-23 2004-07-29 类型路径索引 Expired - Fee Related CN100557605C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/692,350 2003-10-23
US10/692,350 US7480646B2 (en) 2003-10-23 2003-10-23 Type path indexing

Publications (2)

Publication Number Publication Date
CN1846207A true CN1846207A (zh) 2006-10-11
CN100557605C CN100557605C (zh) 2009-11-04

Family

ID=34522101

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800015603A Expired - Fee Related CN100557605C (zh) 2003-10-23 2004-07-29 类型路径索引

Country Status (6)

Country Link
US (3) US7480646B2 (zh)
EP (1) EP1604261B1 (zh)
JP (1) JP4653106B2 (zh)
KR (1) KR101086575B1 (zh)
CN (1) CN100557605C (zh)
WO (1) WO2005045590A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102253967A (zh) * 2011-06-03 2011-11-23 用友软件股份有限公司 数据查找系统和数据查找方法
CN101772766B (zh) * 2007-08-08 2016-06-08 Nhn株式会社 以用户为中心的信息搜索的方法和系统
CN110489516A (zh) * 2019-08-15 2019-11-22 厦门铅笔头信息科技有限公司 一种快速为海量结构化数据建立前缀索引的方法

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4222600B2 (ja) * 2003-01-07 2009-02-12 日本碍子株式会社 セラミックハニカム構造体の焼成方法
US8694510B2 (en) 2003-09-04 2014-04-08 Oracle International Corporation Indexing XML documents efficiently
US7480646B2 (en) * 2003-10-23 2009-01-20 Microsoft Corporation Type path indexing
US7213015B1 (en) * 2003-12-31 2007-05-01 Ncr Corporation Storing and delivering program code for manipulation of a user-defined data type
US7480670B1 (en) * 2004-03-19 2009-01-20 Teradata Us, Inc. Activation of native operations for distinct-user defined types
US8090698B2 (en) 2004-05-07 2012-01-03 Ebay Inc. Method and system to facilitate a search of an information resource
US7849106B1 (en) * 2004-12-03 2010-12-07 Oracle International Corporation Efficient mechanism to support user defined resource metadata in a database repository
US7478083B2 (en) * 2006-04-03 2009-01-13 International Business Machines Corporation Method and system for estimating cardinality in a database system
US7502807B2 (en) * 2006-06-30 2009-03-10 Microsoft Corporation Defining and extracting a flat list of search properties from a rich structured type
US7921104B2 (en) * 2006-08-31 2011-04-05 Red Hat, Inc. Invoking actions on data via LDAP requests
US7908252B1 (en) 2008-03-19 2011-03-15 Crossroads Systems, Inc. System and method for verifying paths to a database
US8713048B2 (en) * 2008-06-24 2014-04-29 Microsoft Corporation Query processing with specialized query operators
US8364751B2 (en) 2008-06-25 2013-01-29 Microsoft Corporation Automated client/server operation partitioning
US8407196B1 (en) * 2009-02-28 2013-03-26 Kaspersky Lab, Zao Object-oriented database for file system emulator
US11487707B2 (en) * 2012-04-30 2022-11-01 International Business Machines Corporation Efficient file path indexing for a content repository
EP2901334B1 (en) * 2012-09-28 2022-03-02 Sqream Technologies Ltd A system and a method for executing sql-like queries with add-on accelerators
US10635674B2 (en) * 2012-09-28 2020-04-28 Oracle International Corporation Migrating a pluggable database between database server instances with minimal impact to performance
US8914356B2 (en) 2012-11-01 2014-12-16 International Business Machines Corporation Optimized queries for file path indexing in a content repository
US9323761B2 (en) 2012-12-07 2016-04-26 International Business Machines Corporation Optimized query ordering for file path indexing in a content repository
US10360269B2 (en) 2015-10-23 2019-07-23 Oracle International Corporation Proxy databases
WO2017095364A1 (en) * 2015-11-30 2017-06-08 Hewlett Packard Enterprise Development Lp Managing access of objects of a plurality of types
US10366082B2 (en) * 2016-12-09 2019-07-30 Oracle International Corporation Parallel processing of queries with inverse distribution function
US10614064B2 (en) * 2017-05-03 2020-04-07 Servicenow, Inc. Class path based database operations
US11487758B2 (en) 2020-01-30 2022-11-01 Adobe Inc. Query processing using hybrid inverted index of predicates
US11354290B2 (en) * 2020-01-30 2022-06-07 Adobe Inc. Query processing using inverted index of predicate statements
US11550848B2 (en) 2020-01-30 2023-01-10 Adobe Inc. Query processing using matrix and reduced predicate statements

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209040B1 (en) * 1992-10-09 2001-03-27 Microsoft Corporation Method and system for interfacing to a type library
US5864862A (en) * 1996-09-30 1999-01-26 Telefonaktiebolaget Lm Ericsson (Publ) System and method for creating reusable components in an object-oriented programming environment
US6088028A (en) * 1997-12-16 2000-07-11 At&T Corp. Method for enabling rapid modification of a display controlled by a computer program
US6016497A (en) * 1997-12-24 2000-01-18 Microsoft Corporation Methods and system for storing and accessing embedded information in object-relational databases
US6345126B1 (en) * 1998-01-29 2002-02-05 Xerox Corporation Method for transmitting data using an embedded bit stream produced in a hierarchical table-lookup vector quantizer
US6499036B1 (en) * 1998-08-12 2002-12-24 Bank Of America Corporation Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation
US6366934B1 (en) * 1998-10-08 2002-04-02 International Business Machines Corporation Method and apparatus for querying structured documents using a database extender
US6246403B1 (en) * 1998-10-08 2001-06-12 Hewlett-Packard Company Method and apparatus for generating a graphical user interface
US6279007B1 (en) * 1998-11-30 2001-08-21 Microsoft Corporation Architecture for managing query friendly hierarchical values
US6587856B1 (en) * 1998-12-07 2003-07-01 Oracle International Corporation Method and system for representing and accessing object-oriented data in a relational database system
US6704743B1 (en) * 1999-09-13 2004-03-09 Copernus, Inc. Selective inheritance of object parameters in object-oriented computer environment
US6721727B2 (en) * 1999-12-02 2004-04-13 International Business Machines Corporation XML documents stored as column data
US6591260B1 (en) * 2000-01-28 2003-07-08 Commerce One Operations, Inc. Method of retrieving schemas for interpreting documents in an electronic commerce system
US6457020B1 (en) * 2000-03-20 2002-09-24 International Business Machines Corporation Query optimization using a multi-layered object cache
US6883137B1 (en) * 2000-04-17 2005-04-19 International Business Machines Corporation System and method for schema-driven compression of extensible mark-up language (XML) documents
WO2002063775A2 (en) * 2001-02-05 2002-08-15 Expway Method and system for compressing structured documents
US6804677B2 (en) * 2001-02-26 2004-10-12 Ori Software Development Ltd. Encoding semi-structured data for efficient search and browsing
US7036072B1 (en) * 2001-12-18 2006-04-25 Jgr Acquisition, Inc. Method and apparatus for declarative updating of self-describing, structured documents
US20030018616A1 (en) * 2001-06-05 2003-01-23 Wilbanks John Thompson Systems, methods and computer program products for integrating databases to create an ontology network
EP1407386A2 (en) * 2001-06-21 2004-04-14 ISC, Inc. Database indexing method and apparatus
US7363310B2 (en) * 2001-09-04 2008-04-22 Timebase Pty Limited Mapping of data from XML to SQL
JP2003150424A (ja) * 2001-11-16 2003-05-23 Fujitsu Ltd ファイルシステム、制御方法及びプログラム
US6917969B2 (en) * 2002-01-03 2005-07-12 International Business Machines Corporation Portable bean-based content rendering
US7457810B2 (en) * 2002-05-10 2008-11-25 International Business Machines Corporation Querying markup language data sources using a relational query processor
GB2394800A (en) * 2002-10-30 2004-05-05 Hewlett Packard Co Storing hierarchical documents in a relational database
US7089266B2 (en) * 2003-06-02 2006-08-08 The Board Of Trustees Of The Leland Stanford Jr. University Computer systems and methods for the query and visualization of multidimensional databases
US7478100B2 (en) * 2003-09-05 2009-01-13 Oracle International Corporation Method and mechanism for efficient storage and query of XML documents based on paths
US7480646B2 (en) * 2003-10-23 2009-01-20 Microsoft Corporation Type path indexing

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101772766B (zh) * 2007-08-08 2016-06-08 Nhn株式会社 以用户为中心的信息搜索的方法和系统
CN102253967A (zh) * 2011-06-03 2011-11-23 用友软件股份有限公司 数据查找系统和数据查找方法
CN102253967B (zh) * 2011-06-03 2013-03-27 用友软件股份有限公司 数据查找系统和数据查找方法
CN110489516A (zh) * 2019-08-15 2019-11-22 厦门铅笔头信息科技有限公司 一种快速为海量结构化数据建立前缀索引的方法

Also Published As

Publication number Publication date
EP1604261B1 (en) 2012-09-19
US7379927B2 (en) 2008-05-27
US20060064412A1 (en) 2006-03-23
US20060041574A1 (en) 2006-02-23
KR101086575B1 (ko) 2011-11-23
EP1604261A4 (en) 2008-08-06
WO2005045590A3 (en) 2005-11-10
CN100557605C (zh) 2009-11-04
WO2005045590A2 (en) 2005-05-19
EP1604261A2 (en) 2005-12-14
KR20060123027A (ko) 2006-12-01
US20050091183A1 (en) 2005-04-28
US7480646B2 (en) 2009-01-20
JP4653106B2 (ja) 2011-03-16
US7516143B2 (en) 2009-04-07
JP2007509431A (ja) 2007-04-12

Similar Documents

Publication Publication Date Title
CN1846207A (zh) 类型路径索引
CN1759397A (zh) 对数据的函数应用的结果进行结构化索引
US6801904B2 (en) System for keyword based searching over relational databases
CN100336059C (zh) 智能使用用户数据以抢先阻止违反访问控制的查询的执行
CN107111617B (zh) 数据库中的图处理
CA2938638C (en) Interactive case management system
US20100299367A1 (en) Keyword Searching On Database Views
CN1705945A (zh) 全局查询相关属性
US20050203940A1 (en) Database System with Methodology for Automated Determination and Selection of Optimal Indexes
CN101036141A (zh) 具有持久性、用户可访问的位图值的数据库管理系统
CN1725219A (zh) 管理多用户存取预定义查询的系统与方法
CN1361890A (zh) 观察改变索引对查询优化方案的影响的数据库系统
CN1606300A (zh) 数据处理系统中分配图像的方法与系统
CN1653452A (zh) 管理数据库系统中的表达式
CN1713179A (zh) 在对象模型中的影响分析
CN1224875A (zh) 数据库管理系统的动态修改
CN1573753A (zh) 数据库对象脚本生成方法和系统
CN1666196A (zh) 存储和访问数据,以及提高数据库查询语言语句性能的方法和机制
CN1896994A (zh) 用于显示零件信息的装置、系统和方法
EP2577508B1 (en) Systems and methods for providing multilingual support for data used with a business intelligence server
CN1176430A (zh) 在不同尺寸显示器上展现信息的方法
CN1723463A (zh) 用于将可扩展标记语言映射到n维数据结构的方法和系统
CN1177291C (zh) 数据库系统以及更新数据库的方法
CN1707496A (zh) 基于活动的知识管理方法及系统
Zhang et al. Enabling information integration and workflows in a grid environment with automatic wrapper generation

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: 20150515

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

Effective date of registration: 20150515

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091104

Termination date: 20200729