CN1723461A - 用于数据库存储中的对象持久存储的系统和方法 - Google Patents
用于数据库存储中的对象持久存储的系统和方法 Download PDFInfo
- Publication number
- CN1723461A CN1723461A CNA2004800016979A CN200480001697A CN1723461A CN 1723461 A CN1723461 A CN 1723461A CN A2004800016979 A CNA2004800016979 A CN A2004800016979A CN 200480001697 A CN200480001697 A CN 200480001697A CN 1723461 A CN1723461 A CN 1723461A
- Authority
- CN
- China
- Prior art keywords
- type
- field
- storage
- attribute
- value
- 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
Links
- 238000000034 method Methods 0.000 title claims description 55
- 230000002688 persistence Effects 0.000 title abstract description 7
- 238000003860 storage Methods 0.000 claims abstract description 117
- 230000036571 hydration Effects 0.000 claims abstract description 14
- 238000006703 hydration reaction Methods 0.000 claims abstract description 14
- 230000002085 persistent effect Effects 0.000 claims description 38
- 230000004044 response Effects 0.000 claims description 7
- 238000013519 translation Methods 0.000 claims description 4
- 230000014759 maintenance of location Effects 0.000 claims 4
- 238000005457 optimization Methods 0.000 abstract description 4
- 230000006399 behavior Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000006855 networking Effects 0.000 description 9
- 238000013500 data storage Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 230000008520 organization Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000000887 hydrating effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24557—Efficient disk access during query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/953—Organization of data
- Y10S707/955—Object-oriented
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99936—Pattern matching access
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99937—Sorting
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于在数据库存储中储存用户定义类型的对象的新的持久存储格式使得关于类型的结构的信息可以被传递给存储。这种信息使得可以进行多种存储优化,包括对类型的成员的直接结构化访问。特别地,元数据在类型实现器和数据存储之间交换。该存储使用该元数据来确定用于类型的实例的存储布局。有了这种信息,该存储能够检测可以被优化的访问模式,以便在存储表示上直接操作而不用对该对象进行水合(反序列化)。
Description
相关申请的参照
本申请要求提交于2003年10月24日的序列号为10/693,302的美国申请的优先权,通过参考将该申请公开的内容整体结合在本说明书中。
版权公告和许可
本专利文档的一部分公开内容可能包含受版权保护的内容。如同它出现在专利商标部门的专利文件或记录中,版权的所有者对任何人对该专利文档或专利公开的复制没有异议,但是在其他方面保留所有的版权。下面的公告适用于这个文档:Copyright2003,Microsoft Corp。
发明领域
本发明涉及计算机系统中的数据存储,尤其涉及用于在数据库存储中持久存储(persist)对象的系统和方法。
背景
MICROSOFT SQL SERVER是一种综合性数据库管理平台,它提供了广泛的管理和开发工具、强大的提取、转换及加载(ETL)工具、商业智能和分析服务以及其他性能。最近实现了对SQL SERVER的两种改进。首先,Microsoft Windows.NET框架公共语言运行库(CLR)最近被集成到SQL SERVER数据库中,其次,现在可用CLR环境中的受管代码创建被称为用户定义类型(UDT)的新对象,并将其持久存储在数据库存储中。
CLR是Microsoft.NET框架的中心内容,它为所有.NET代码提供执行环境。因而,在CLR内运行的代码被称为“受管代码”。CLR提供程序执行所需的各种函数及服务,包括即时(JIT)编译、分配和管理存储器、强制类型安全、异常处理、线程管理和安全。如今,在首次调用.NET例程时,CLR由SQL SERVER加载。
在SQL SERVER早先的版本中,数据库程序员在编写服务器方代码时仅限于使用Transact-SQL。Transact-SQL是由国际标准组织(ISO)和美国国家标准化组织(ANSI)定义的结构化查询语言的扩展。使用Transact-SQL,数据库开发者能够创建、修改及删除数据库和表,也能够插入、检索、修改及删除储存在数据库内的数据。Transact-SQL是专为直接结构性数据访问和操纵而设计的。尽管Transact-SQL擅长结构性数据访问和管理,它并不是象Visual Basic.NET和C#那样成熟的编程语言。例如,Transact-SQL不支持数组、集合、对每个循环、位移位或类。
随着CLR被集成到SQL SERVER数据库中,数据库开发者现在能够完成单用Transact-SQL不可能或很难完成的任务。Visual Basic.NET和C#都是提供对数组、结构化异常处理和汇编的完全支持的现代编程语言。开发者可充分利用CLR集成来编写具有更复杂逻辑且更合适使用例如Visual Basic.NET和C#语言的计算任务代码。
除了CLR集成之外,SQL SERVER还增加了对用户定义类型(UDT)-一种使得开发者能够扩展数据库的标量类型系统的新的机制的支持。从应用程序体系结构的角度来说,UDT提供了两种关键的益处:它们提供了内部状态和外部行为之间的坚固的封装(在客户机和服务器两者内),并且它们提供了与其它相关服务器特性的深度集成。一旦定义了UDT,它就可以用于系统类型能够在SQL SERVER中使用的所有环境中使用,包括在列定义、变量、参数、函数结果、游标、触发器和复制(replication)。
在数据库服务器上定义UDT的过程如下完成:
a)在受管代码中创建类,所述的类符合UDT创建规则;
b)使用CREATE ASSEMBLY语句将包含该UDT的程序集(Assembly)装入服务器上的数据库中;以及
c)使用CREATE TYPE语句在数据库中创建一个揭示所述受管代码UDT的类型。
此时,该UDT可以用于表定义中。
当在受管代码中创建UDT定义时,类型必须满足下面的要求:
a)它必须被标记为是Serializable(可序列化);
b)它必须被以SqlUserDefinedTypeAttribute(SQL用户定义类型属性)修饰;
c)通过实现Inullable(不可为空)接口,该类型应该明白NULL;
d)该类型必须具有不带参数的公有构造函数;以及
e)通过实现以下的方法,该类型应当支持转换到串和从串转换:
1.Public String ToString();以及
2.Public Shared<type>Parse(SqlString s)。
图1是根据上面所述的过程定义UDT的一个类的例子。根据上面所述的步骤,这个类然后被编译成动态链接库(dll)。然后使用下面的T-SQL脚本命令来创建包含所编译的类的程序集:
create assembly test
from‘c:\test.dll’
go
然后使用下面的T-SQL脚本命令在服务器上创建UDT:
create type BaseItem
external name[test]:[BaseItem]
go
一旦在服务器上创建了UDT,一个表(例如“MyTable”)可以被如下创建,将该表的一个属性定义为UDT类型:
create table MyTable
(
Item BaseItem,
ItemId as item::ID
)
go
新的项目可以被如下那样添加到该表内:
declare@I BaseItem
set@I=convert(BaseItem,”)
insert into MyTable values(@i)
go然后该UDT表示可以用于诸如:SELECT Item.Name FROM MyTable的查询中。
随着CLR集成到SQL SERVER中,以及从受管代码中的类定义来定义UDT的能力,应用程序现在可以实例化由所述受管代码类所定义的类型的对象,并且将这些对象作为所述UDT的实例持久存储在关系型数据库存储中。此外,定义所述UDT的类还可以包括在该类型的对象上实现特定行为的方法。因此应用程序可以实例化被定义为UDT的类型的对象,开且可以在它们之上调用受管的行为。
当在CLR中实例化被定义为UDT的类的对象时,该对象可以通过对象序列化过程被持久存储在数据库存储内,其中所述类的变量的值被传递到物理存储(例如,硬盘)。图2示出了存储器中的一个对象到它的磁盘上的持久存储形式的序列化。该对象可以以图3中示出的格式的传统关系型数据库表持久存储在数据库存储中。如图所示,该表包含被指定为UDT的一列。所指定的UDT的持久存储对象的序列化的值占据该UDT列的一个单元。
再次参考图2,当应用程序生成包括引用已经被持久存储在数据库存储内的UDT对象的受管行为(例如,返回所述UDT对象的一个字段的值的行为)的谓词或表达式的查询时,该持久存储的对象必须被反序列化(某些时候也被称为“水合(hydrating)”),并且CLR必须为整个对象分配存储器以便接收其被存储的值。然后CLR必须调用实现该应用程序所希望的行为的实际方法。不幸的是,与在运行时分配存储器以便存储完整的对象、反序列化并填充该对象的所有部分、以及调用实现所请求的行为的方法相关联的处理开销会是繁重的。因此,需要提供被持久存储在数据库存储中的对象的更有效的存储和检索的系统和方法。本发明满足这种需要。
概述
本发明针对一种提供用于数据库存储中的用户定义类型(UDT)的新的持久存储格式的系统和方法,所述新的持久存储格式能够使得关于UDT的结构的信息被传递到底层数据存储。这种信息使得能够进行多种存储优化,包括对类型的成员的直接结构化访问。特别地,本发明能够在类型实现器和数据存储之间进行元数据交换。该存储使用元数据来确定用于该类型的实例的存储布局。使用这种信息,该存储能够检测可以被优化的访问模式,以便直接在该存储表示上进行操作而不用进行对象的水合(反序列化)。此外,通过了解仅能进行结构化访问的操作,该系统可以构件数据分布统计和各个成员上的索引,而不需所计算的值的冗余的持久存储。
通过下面对本发明以及附图的详细说明,本发明的其它特征和优点将变得显而易见。
附图简要说明
当结合所附的附图进行阅读时,将会更好地理解上面的概述以及下面对本发明的详细描述。出于说明本发明的目的,在附图中示出了本发明的各个方面的示例性实施例;然而,本发明不限于所公开的特定方法和手段。在附图中:
图1是示出了用于用户定义类型的受管代码类定义的示例性代码段;
图2是示出了已经在受管代码中实例化的用户定义类型的实例的序列化和反序列化的框图;
图3是示出了其中持久存储用户定义类型的对象的数据库表的示意图;
图4A是示出了本发明的方法的一个方面的一个实施例的流程图;
图4B是示出了本发明的方法的另一个方面的一个实施例的流程图;
图5是示出了已经根据本发明注释的用户定义类型的受管代码类定义的示例性代码段;
图6是其中可实现本发明的系统的方框图,并且示出了根据本发明的方法对UDT的持久存储对象的结构化访问和返回值;
图7是表示具有可在其中实现本发明的多个计算设备的示例性网络环境的框图;以及
图8是表示其中可实现本发明的示例性计算设备的框图。
发明的详细描述
为了满足法定要求,以细节描述了本发明的主题。然而,本描述本身并不旨在对这个专利的范围进行限制。相反,发明人构想,结合其它当前的或未来的技术,所提出的主题也可以用其它的方式来表达,以便包括不同的步骤或与本文档中所描述的相类似的元素。此外,虽然此处可以使用术语“步骤”暗示所采用的方法的不同的方面,然而除非明确地说明了各个步骤的顺序,否则该术语不应被解释为暗示着此处公开的各个步骤之中或之间的任何特定顺序。
如上所述,本发明针对一种提供数据库存储中的用户定义类型(UDT)的新的持久存储格式的系统和方法,该新的持久存储格式能够使得关于UDT的结构的信息被传递到底层数据存储。这种信息使得能够进行多种存储优化,包括对类型的成员的直接结构化访问。特别地,本发明能够在类型实现器和数据存储之间交换元数据。该存储使用元数据来确定用于类型的实例的存储布局。有了这种信息,存储能够检测可以被优化的访问模式以便在存储表示上进行直接操作,而不需进行对象的水合(反序列化)。此外,通过了解仅可进行结构化访问的操作,该系统能够构件数据分布统计和关于各个成员的索引,而不需所计算值的冗余的持久存储。术语“直接结构化访问”是指数据库存储通过直接访问数据存储的表中的对象的持久存储值来执行对于对象的查询,而不必进行对象的水合(反序列化)的能力。
图4A是示出了本发明的方法的一个实施例的流程图。如所示出的,该方法在步骤400以用户定义类型的定义开始。对于大多数UDT,类型使用(例如)诸如VisualBasic.NET或C#等高级编程语言被定义为受管代码中的一个CLR类。然而根据本发明,为了将本发明的新的持久存储格式应用于这个类定义,在步骤402对类定义进行了注释,以便提供描述该UDT的存储布局的元数据。较佳地,该元数据描述了类型的字段(field)的存储方面(facet),诸如大小、精度、数值范围等等,并且表示了类型的每个行为的等效结构化访问路径。图5是一个示例性代码清单,其中注释了根据本发明在图1所示的CLR类。在本实施例中,该注释有三个方面。
首先,该类被注释为将UDT标识为应用本发明的新持久存储格式的UDT。在本实施例中,如图5的示例性类定义的第2行所示,这是通过向类定义的[SqlUserDefinedType()]属性添加参数“Format.Strutred”来实现的。这为数据存储将UDT标识为应用本发明的持久存储格式的UDT。
第二,类的每个字段用控制该类型的存储方面的存储属性来注释,存储属性诸如大小、精度、数值范围等。在本实施例中,这是通过用名为SqlUdtField()的自定义存储属性注释每个字段来实现的。这个属性用附加的存储伪指令注释字段。当对象被序列化到磁盘上时,这些伪指令被实施。在本实施例中,SqlUdtField()自定义属性的性质(即,可以被发出的伪指令)如下:
名称 | 描述 | 默认值 |
IsFixedLength | 这是固定长度的字段? | False |
MaxSize | 最大的大小,以用于底层字段类型的逻辑单位,对于二进制字段类型为字节,并且对于字符字段类型为字符 | X |
Precision | 精度,仅对数值类型有意义 | X |
Scale | 数值范围,仅对数值类型有意义 | X |
IsNullable | 该字段的值可以为空? | True |
然而,应当理解,本发明决不是限于示出的属性。相反,在其它的实施例中,可以用该属性指定附加的或其它的属性。
在本实施例中,在Format.Strctured UDT中允许下面的字段类型:SqlBoolean、SqlByte、SqlInt16、SqlInt32、SqlInt64、SqlSingle、SqlDouble、SqlDateTime、SqlMoney、SqlGuid、SqlDecimal、SqlString、SqlBinary、SqlXmlReader、SqlByte、SqlChar、SqlUtcDateTime、SqlDate、SqlTime和嵌入的UDT。当然,在其它实施例中,这些字段类型中的某些可以不被允许,并且可以允许其它的字段类型。下面的表反映了特定字段类型的各个属性的有效值矩阵。“Y”意味着该属性有效,“N”意味着该属性无效,“R”意味着该属性是被要求的。如果该属性是无效的,则如果没有为该属性指定默认值,则类型注册将报告一个错误。在其它实施例中,这些限制和约束可以不同。
类型 | IsFixedLength | MaxSize | Precision | Scale | IsNullable |
SqlBoolean | N | N | N | N | Y |
SqlByte | N | N | N | N | Y |
SqlInt16 | N | N | N | N | Y |
SqlInt32 | N | N | N | N | Y |
SqlInt64 | N | N | N | N | Y |
SqlSingle | N | N | N | N | Y |
SqlDouble | N | N | N | N | Y |
SqlDateTime | N | N | N | N | Y |
SqlMoney | N | N | N | N | Y |
SqlGuid | N | N | N | N | Y |
SqlDecimal | N | N | Y | Y | Y |
SqlString | Y | R | N | N | Y |
SqlBinary | Y | R | N | N | Y |
SqlXmlReader | Y | Y | N | N | Y |
SqlByte | Y | R | N | N | Y |
SqlChar | Y | R | N | N | Y |
SqlUtcDateTime | N | N | N | N | Y |
SqlDate | N | N | N | N | Y |
SqlTime | N | N | N | N | Y |
嵌入的UDT | N | N | N | N | Y |
参考图5的示例性代码清单,在第5、8、37和49行添加了SqlUdtField()自定义属性,以便注释示例性UDT类定义的相应字段。
作为类定义注释的第三方面,在CLR类中定义的每个受管行为(例如,可以在该UDT对象上被调用以便返回一个字段的值的方法)用指出该受管行为的等效结构化访问路径的属性来注释。在本实施例中,用于这个目的的自定义属性名为SqlUdtProperty(),并且数据库服务器(例如,SQL SERVER)假设以这种自定义属性注释的性质的实现将作为属性定义的一部分委派给指定的字段。这允许服务器结构化地优化对属性的访问而不用创建实例并且调用其上的行为。SqlUdtProperty()自定义属性的性质如下:
名称 | 描述 |
FieldName | 被用于存储这个属性的值的字段的名称 |
SqlUdtProperty的存在表示该属性的主体可以被忽视,并且该字段的名称用作结构化访问路径。在本实施例中,属性取值器(accessor)仅是可以被结构化地访问的行为。然而,在其它实施例中,其它类型的方法可以进行结构化访问。
参考图5的示例性代码清单,在行11和24添加了SqlUdtProperty()自定义属性以便注释该类的相应受管行为。
再次参考图4A,在步骤404,在数据库服务器上创建由UDT作者定义的UDT,并且在类定义注释中反映出的元数据被导入到数据库存储中,数据库存储使用该元数据来确定用于该类型的实例的存储布局。特别地,SqlUdtProperty属性与给定字段的实际类型相结合,用于控制该字段的持久存储值的存储布局。例如,如果该属性指出一个字段可为空,则处理存储的数据库系统组件可以在用于为这个字段存储空值的区域内保留一个比特。作为另一个例子,如果字段是一个大小变化的类型(例如串),则该属性可以指出该字段实际上具有固定的大小。这个信息还可以被数据库系统用于通过将字段存储在值的固定大小部分内来优化对该字段的访问。对于SqlUdtProperty属性的方面如何影响存储布局的细节取决于数据库系统的特定存储布局选择。因此应当理解,上面的讨论仅提供了这种属性可以如何控制UDT的实例的存储布局的两个例子;本发明决不限于这些例子。
在本实施例中,通过(1)将定义UDT的CLR类文件编译成动态链接库(.dll),(2)创建包含该UDT的程序集,并且向存储注册该程序集,并且然后(3)在受管类型上创建UDT,来执行该方法的步骤404。作为步骤(3)的一部分,该类型的存储方面被确认,并且在对CLR类定义的注释中反映出的元数据被导入到描述该类型的结构的数据库系统目录中。在本实施例中,可以使用如下的T-SQL脚本命令来执行这些步骤:
--create the assemably
create assembly test
from‘c:\test.dll’
go
--create the UDT
create type BaseItem
external name [test]:[BaseItem]
go
然后,该UDT的实例可以在受管代码中被实例化,并且如同任意的UDT那样,这些对象可以被持久存储在数据库存储的表中。应当理解,在其它的实施例中,尤其是在使用其它数据库服务器而不是SQL SERVER的实施例中,UDT如何被注册并且如何与数据库存储交换元数据信息的细节可以是不同的。
图4B是示出了访问已应用本发明的新持久存储格式的UDT,例如用上述“Format.Structured”属性注释的UDT的值的方法的流程图。根据本发明的方法,如步骤406中所示,数据库服务器接收包括引用了被持久存储在数据库存储中的已应用本发明的对象的受管行为的谓词或表达式的查询。例如,假设已经创建了名为“Person”的Format.Structured UDT,并且它包括被称为“Name”的SqlString类型的字段,该字段已经如上所述用SqlUdtField()属性正确地注释了。还假设Person类型具有一受管行为,它返回该类型的一个实例的“Name”字段的值,并且该行为已经用SqlUdtProperty()属性正确地注释了。数据库服务器可以接收对于Person对象的如下的查询:
SELECT Person.Name FROM T
其中T是包含被称为Person的UDT列的表。
如上面在背景部分中说明的,在SQL SERVER的情况下,对于未应用本发明的新持久存储格式的UDT而言,该查询将被如下处理。在查询编译时,检查该UDT的汇编元数据,以便确定Name是该类型上的一个有效的属性。然后匆忙地(on the fly)创建一个助手函数,以便调用Person对象的反序列化的实例上的Name属性。通过也是匆忙生成的类型专用反序列化器来实现反序列化。如上所述,反序列化的处理涉及使用盘上表示的内容以便填充新的受管对象的内部。在内部,查询:
SELECT Person.Name FROM T被转换为:
SELECTdeserializeInto(newperson(),personDatum)->invokeFunction(Name)
FROM T所生成的所有新代码被封装在函数InvokeUdfExternal中,该函数在运行时用于求解这个表达式的值。
然而,根据本发明,如步骤408所示,该查询被不同地处理。特别地,基于存储在数据库的系统目录内的元数据,查询操作被翻译为其等效结构化访问路径。在当前描述的实施例中,其中本发明在SQL SERVER数据库中实现,在查询编译时,检查用于UDT的汇编元数据以便确定Name是一个可以为结构化访问而重写的属性。如果它可以被结构化地执行,则sql元数据和汇编元数据用于确定物理访问信息(位置、值的类型和大小、以及到达它的访问路径)。这种结构化的元数据用于编译取值器,并且将这种信息存储在编译后的表达式中。因此在本实施例中,与上面相同的查询取而代之被编译为:
Select binding.GetData(personDatum,NameOrdinal)from T
接着,在步骤410,所请求的字段的值现在可以被结构化地访问,并且返回给用户而不需对象水合并且不必调用受管代码中的任何行为。特别地,在本实施例中,取值器在运行时使用以便取得该字段。内部地,取值器的实现对序列化的形式进行语法分析并且返回属性。
图6是示出了实现图4B中示出的方法的系统的框图。如(1)所示,应用程序生成包括引用持久存储在数据库存储中的已应用本发明的对象的受管行为的谓词或表达式的查询。如(2)所示,数据库服务器的查询处理系统使用与该UDT相关联的存储的元数据,以便将该查询翻译为等效结构化访问路径。然后如(3)所示,该值被结构化地访问并且返回给应用程序而不需对象水合,而且不用调用该对象上的行为。
开发者可以依赖本发明的功能以便提供对UDT的字段的结构化访问而不用进行对象水合,以便能够进行附加的优化。例如,采用本发明,开发者能够通过可结构化地访问的UDT的操作构建计算出的列的索引,而不需该列被冗余地持久存储。由本发明提供的对值的直接结构化访问可以用于从值中检索感兴趣的信息,诸如该值的实际类型,或该值是否包含嵌入的大值。本发明还可以用于响应于服务和数据更新情形,提供对值的结构化转换。此外,本发明可以用于更有效地从一个域(存储)向另一个域移植和导入/导出值。
如从上述可以清楚了解的,本发明的各种系统、方法和方面的全部或部分可以用硬件、软件或两者的结合来实施。当用软件实施时,本发明的方法和装置或其某些方面或部分可以用程序代码(即,指令)的形式来实施。这种程序代码可以被存储在诸如磁的、电子的或光学存储介质的计算机可读介质上,包括但不限于软盘、CD-ROM、CD-RW、DVD-RW、DVD-ROM、DVD-RAM、磁带、闪存、硬盘驱动器或任何机器可读存储介质,其中当程序代码被装入并由机器(诸如计算器或服务器)执行时,该机器成为实现本发明的装置。程序代码在其上执行的计算机通常包括处理器、处理器可读的存储介质(包括易失/非易失存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。程序代码可以用高级过程语言或面向对象编程语言来实现。可替换地,程序代码可以用汇编语言或机器语言实现。在任何情况下,所述的语言可以是编译或解释语言。
本发明还可以用程序代码的形式来实施,该程序代码通过某种传输介质传输,诸如通过电线或电缆、通过光纤、通过包括局域网、广域网、因特网或内联网的网络、或通过任何其它的传输形式,其中当程序代码被接收并被装入且由机器(诸如计算机)执行时,该机器成为实现本发明的装置。
当在通用处理器上实现时,程序代码可以与处理器相结合,以便提供与专用逻辑电路相类似地运行的唯一装置。
此外,本发明可以结合任何计算机或其它客户机或服务器设备来实现,这些计算机或其它客户机或服务器设备可以作为计算机网络的一部分部署,或部署在分布式计算环境中。就此而言,本发明适合于具有任何数目的存储器或存储单元,以及发生在任何数目的存储单元或卷上的任何数目的应用程序和进程的任何计算机系统或环境,所述的存储单元或卷可以被用于与根据本发明在数据库存储中持久存储对象有关的处理。本发明可以适用于具有被部署在网络环境或分布式计算环境中的服务器计算机或客户机计算机的环境,所述的环境具有远程或本地存储。本发明还适用于独立的计算设备,所述的独立的计算设备具有用于生成、接收和发送关于远程或本地服务的信息的编程语言功能、解释和执行功能。
分布式计算设备通过在计算设备和系统之间进行交换便于计算机资源和服务的共享。这些资源和服务包括,但不限于,信息交换、高速缓存存储和用于文件的盘存储。分布式计算利用了网络互连,允许客户机发挥它们的集体能力,以便使整个企业受益。就此而言,各种设备可以具有可以牵涉到结合本发明的对象持久存储方法所执行的处理的应用程序、对象或资源。
图7提供了示例性的联网或分布式计算环境的示意图。该分布式计算环境包括计算对象10a、10b等,以及计算对象或设备110a、110b、110c等。这些对象可以包括程序、方法、数据存储、可编程逻辑等。这些对象可以包括一部分相同的或不同的设备,诸如PDA、电视机、MP3播放器、个人计算机等。每个对象可以通过通信网络14与另一个对象通信。网络本身包括为图7的系统提供服务的其它计算对象和计算设备,并且本身可以代表多个互连的网络。根据本发明的一个方面,每个对象10a、10b等或110a、110b、110c等可以包含可利用API或其它对象、软件、固件和/或硬件来请求使用用于实现本发明的对象持久存储方法的过程的应用程序。
还应当理解,诸如110c等对象可以被主宿在另一个计算设备10a、10b等或110a、110b、110c等之上。因此,虽然给出的物理环境可以将连接的设备示为计算机,但是这种说明仅是示例性的,并且可替换地,该物理环境可以被描绘或描述为包含诸如PDA、电视机、MP3播放器等的各种数字设备,以及诸如接口、COM对象等的软件对象。
存在各种支持分布式计算环境的系统、组件和网络配置。例如,计算系统可以被通过有线或无线系统、通过局域网或广泛地分布的网络连接在一起。当前,许多网络被耦合到因特网,因特网提供了广泛分布的计算的基础结构并且包含许多不同的网络。任何基础设施可以用于附属于本发明的示例性通信。
因特网一般指使用计算机联网领域内公知的TCP/IP协议套件的网络和网关的集合。TCP/IP是“传输控制协议/互联网协议”的首字母缩写。因特网可以被描述为由执行联网协议的计算机互连的在地理上分布的远程计算机网络,该联网协议允许用户通过网络进行交互或共享信息。因为这种广泛的信息共享,因此诸如因特网等远程网络迄今已发展为一种开放系统,开发者可以为它设计软件应用程序以便执行专门的操作或服务,基本上没有限制。
因此,网络基础结构启用了大量的网络拓扑,如客户机/服务器、对等或混合体系结构。“客户机”是它所不相关的另一类或组的服务的类或组的成员。因此在计算中,客户机是一个进程,即粗略地说是一组指令或任务,它请求由另一程序提供的服务。客户机进程使用所请求的服务而不用“了解”关于其它程序或该服务本身的任何工作细节。在客户机/服务器体系结构中,特别是联网的系统中,客户机通常是访问由另一计算机(例如,服务器)提供的共享网络资源的计算机。在图7的例子中,计算机110a、110b等可以被认为是客户机,而计算机10a、10b等可以被认为是服务器,尽管取决于环境,任何计算机可以被认为是客户机、服务器或是这两者。任何这些计算设备可以用牵涉本发明的对象持久存储技术的方式来处理数据。
服务器通常是可以通过远程或本地网络(诸如因特网)访问的远程计算机系统。客户机进程可以在第一计算机系统中是活动的,并且服务器进程可以在第二计算机系统中是活动的,它们通过通信介质彼此通信,因此提供了分布式的功能并且允许多个客户机利用服务器的信息聚集能力。按照本发明的持久存储机制使用的任何软件对象可以分布在多个计算设备上。
(多个)客户机和(多个)服务器可以使用由协议层提供的功能彼此通信。例如,超文本传输协议(HTTP)是与万维网(WWW)或“Web”结合使用的常见的协议。典型地,诸如互联网协议(IP)地址等计算机网络地址或诸如统一资源定位器(URL)等其它引用可以用于彼此标识服务器或客户机。网络地址可以被称为URL地址。可以通过任何可用的通信介质提供通信。
因此,图7示出了一种其中可使用本发明的示例性联网或分布式环境,其中服务器通过网络/总线与客户机计算机通信。根据本发明,网络/总线14可以是LAN、WAN、内联网、因特网或某些其它的网络介质,它具有依照本发明的多个客户机或远程计算机设备110a、110b、110c、110d、110e等,诸如便携计算机、手持计算机、瘦客户机、联网设备或其它设备,诸如VCR、TV、烤箱、电灯、加热器等。因此可以构想本发明可以适用于任何这样的计算设备,对所述的计算设备而言希望保持持久存储的对象。
例如,在通信网络/总线14是因特网的网络环境中,服务器10a、10b等可以是客户机110a、110b、110c、110d、110e等通过多种已知协议中的任意一种(诸如HTTP)与其通信的服务器。如可以是分布式计算环境的特征,服务器10a、10b等还可以用作客户机110a、110b、110c、110d、110e等。
通信可以是(在适合的地方)有线的或无线的。客户机设备110a、110b、110c、110d、110e等可以通过或可以不通过通信网络/总线14通信,并且可以具有与它相关联的独立的通信。例如,在TV或VCR的情况下,可以有或没有关于其控制的联网的方面。每个客户计算机110a、110b、110c、110d、110e等和服务器10a、10b等可以配备有各种应用程序模块或对象135,并且具有到各种类型的存储元件或对象的连接或访问,文件或数据流可以跨所述的存储元件或对象被存储,或是部分的文件或数据流可以被下载到、传输到或移往所述的存储元件或对象。任何计算机10a、10b、110a、110b等可以负责用于存储根据本发明处理的数据的数据库、存储器或其它存储元件20的维护和更新。因此,本发明可以用于这样的计算机网络环境中,它具有可以访问计算机网络/总线14并与其交互的客户计算机110a、110b等,以及可以与客户计算机110a、110b等交互的服务器10a、10b等,以及其它类似的设备和数据库20。
图7和下面的讨论旨在提供对可结合其实现本发明的适合的计算设备的简要的概括描述。例如,图7中示出的任何客户机和服务器计算机或设备都可以采用这种形式。然而应当理解,手持的、便携的和其它的计算设备和各种类型的计算对象也被构想用于本发明,即,计算环境中可以生成、处理、接收和/或发送数据的任何地方。虽然下面描述了通用计算机,但这只是例子,并且本发明可以用具有网络/总线协同工作能力和交互作用的瘦客户机来实现。因此,本发明可以在联网主宿的服务的环境中实现,其中只涉及非常少的或最少的客户机资源,例如,一种联网的环境,其中客户设备仅起到网络/总线的接口的作用,诸如被放置在设备中的一个对象。本质上,可以存储数据的任何地方或可以从中检索数据或将其发送到另一计算机的任何地方都是用于运行本发明的对象持久存储方法的理想的或适合的环境。
虽然没有要求,本发明可以通过操作系统实现,以便由设备或对象的服务开发者使用,和/或被包括在根据本发明运行的应用程序或服务器软件中。软件可以在计算机可执行指令的一般上下文中描述,所述的计算机可执行指令诸如由一个或多个计算机(诸如客户工作站、服务器或其它设备)执行的程序模块。一般地,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定的任务或实现特定的抽象数据类型。典型地,程序模块的功能可以按照所希望的被结合进或分布到各种实施例中。此外,本发明可以用其它计算机系统配置和协议来实现。适用于本发明的其它的公知的计算系统、环境和/或配置包括,但是不限于,个人计算机(PC)、自动柜员机、服务器计算机、手持或膝上设备、多处理器系统、基于微处理器的系统、可编程消费者电子设备、网络PC、电器、电灯、环境控制元件、小型计算机、大型机等。
因此,图8给出了其中可实现本发明的适合的计算系统环境100的一个例子,虽然如上所述可以清楚了解的,计算系统100仅是适合的计算环境的一个例子,并且不旨在暗示着对本发明的使用范围或功能的任何限制。计算环境100也不应被解释为具有与示例的操作环境100中示出的组件中的任意一个或其组合相关的任何依赖性或要求。
参考图8,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可以包括但不限于处理单元120、系统存储器130和系统总线121,系统总线121将包括系统存储器在内的各种系统组件耦合到处理单元120。系统总线121可以是多种总线结构中的任意一种,包括存储器总线或存储器控制器、外围总线和使用多种总线体系结构中的任何一种的局部总线。作为例子而不是限制,这种体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围组件互连(PCI)总线(也被称为Mezzanine总线)。
计算机110典型地包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任何可用介质,并且包括易失和非易失介质,可移动和非可移动介质。作为例子而不是限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失和非易失介质,可移动和非可移动介质。计算机存储介质包括,但是不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储或其它磁存储设备,或可以被用于存储所希望的信息并且可以由计算机110访问的任何其它介质。通信介质典型地包括已调制数据信号(诸如载波或其它传输机制)形式的计算机可读指令、数据结构、程序模块或其它数据,并且包括任意的信息传递介质。术语“已调制数据信号”的含义是它的一个或多个特征以在信号中对信息进行编码的方式被设置或改变的信号。作为例子,并且不是限制,通信介质包括诸如有线网络或直接连线连接的有线介质,和诸如声学、RF、红外线或其它无线介质的无线介质。上面所述的任何的组合也应被包括在计算机可读介质的范围内。
系统存储器130包括诸如只读存储器(ROM)131和随机访问存储器(RAM)132的易失和非易失存储器形式的计算机存储介质。包含(诸如在启动过程中)帮助在计算机110内的元件之间传递信息的基本例程的基本输入/输出系统133(BIOS)典型地被存储在ROM 131中。RAM 132典型地包含可以立即由处理单元120访问的和/或当前正由处理单元120处理的数据和/或程序模块。作为例子但不是限制,图8示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可以包括其它的可移动/不可移动,易失/非易失的计算机存储介质。仅作为例子,图8示出了从不可移动、非易失磁介质读或向其写的硬盘驱动器141,从可移动、非易失磁盘152读或向其写的磁盘驱动器151,以及从可移动、非易失光盘156诸如CD-RW、DVD-RW或其它光学介质读或向其写的光盘驱动器155。可以被用于该示例性操作环境中的其它可移动/不可移动、易失/非易失计算机存储介质包括,但是不限于,磁带、盒式磁带、闪存卡、数字多功能盘、数字视频带、固态RAM、固态ROM等。硬盘驱动器141通常通过不可移动存储器接口,诸如接口140连接到系统总线121,而磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,诸如接口150连接到系统总线121。
上面讨论并且在图8中示出的驱动器和它们相关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。在图8中,例如,硬盘驱动器141被示出为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。此处给予操作系统144、应用程序145、其它程序模块146和程序数据147不同的标号以便示出,至少它们是不同的副本。用户可以通过输入设备,诸如键盘162和定位设备161(诸如鼠标、轨迹球或触摸垫)向计算机110输入命令和信息。其它输入设备(没有示出)可以包括麦克风、游戏杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常被通过耦合到系统总线121的用户输入接口160连接到处理单元120,但是也可以通过其它接口和总线结构连接,诸如并行端口、游戏端口或通用串行总线(USB)。一个或多个图形处理单元(GPU)184可以与图形接口182通信。监视器191或其它类型的显示设备也可以通过诸如视频接口190的接口连接到系统总线121,所述接口进而与视频存储器186通信。除了监视器191之外,计算机还可以包括其它的外围输出设备,诸如扬声器197、打印机196,它们可以通过输出外部接口195连接。
使用到一个或多个远程计算机,诸如远程计算机180的逻辑连接,计算机110可以在联网的或分布式环境中运行。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它的普通网络节点,并且通常包括上面关于计算机110所描述的许多或全部元件,虽然在图8中仅示出了存储器存储设备181。图8中给出的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是还可以包括其它网络/总线。这种联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见的。
当用于LAN联网环境中时,计算机110通过网络接口或适配器170连接到LAN171。当用于WAN联网环境中时,计算机110通常包括调制解调器172或用于通过WAN173(诸如因特网)建立连接的其它装置。调制解调器172(可以是内置的或外置的)可以通过用户输入接口160或其它适合的机制连接到系统总线121。在联网的环境中,就计算机110给出的程序模块或其部分可以存储在远程存储器存储设备内。作为例子,但是不是限制,图8示出了驻留在存储器设备181上的远程应用程序185。应当理解,示出的网络通信是示例性的,并且可以使用在计算机之间建立通信链路的其它装置。
如前所示,本发明针对用于数据库管理系统中的用户定义类型的新的持久存储格式。应当理解,可以对上述的实施例进行修改而不脱离本发明的宽泛的发明性概念。例如,虽然本发明的一个实施例在上面已经以描述为在Microsoft的SQL SERVER数据库管理系统中实现,然而,应当理解,本发明可以在支持用户定义类型的创建的任意数据库管理系统内实施。因此,应当理解,本发明不限于所公开的特定实施例,而是旨在覆盖落入所附权利要求所定义的本发明的精神和范围内的所有修改。
Claims (20)
1.一种在数据库存储中持久存储对象的方法,包括:
定义可以被持久存储在数据库存储中的对象的类型,其中,所述类型定义包括字段和行为;以及
用定义用于所述类型的实例的所述数据库存储中的存储布局的属性注释所述的类型定义,其中,所述数据库存储使用所述类型定义中的注释来控制数据库存储中的所述类型的实例的存储布局。
2.如权利要求1所述的方法,其特征在于,注释类型定义的所述步骤包括:
用控制字段的一个或多个存储方面的第一属性注释所述类型的每个字段;以及
用表示等效结构化访问路径的第二属性注释每个行为。
3.如权利要求1所述的方法,其特征在于,由所述第一属性控制的所述字段的存储方面包括字段的最大大小、字段是否为固定长度字段、字段的精度、字段的数值范围以及字段的值是否可以为空中的至少一个。
4.如权利要求2所述的方法,其特征在于,所述第二属性指定了所述类型的一个字段的名称,所述名称是所述行为的主题。
5.如权利要求1所述的方法,其特征在于,所述对象类型被定义为受管代码中的类。
6.一种系统,其中对象被持久存储在数据库存储中,所述对象是用户定义类型的实例,其中,用户定义类型的定义包括一个或多个字段和行为,并且包括控制所述数据库存储中的类型的实例的存储布局的注释,并且其中,所述数据库存储维持反映由对所述类型定义的注释所提供的存储布局的信息,一种在对象上执行查询的方法,所述对象是类型的实例,所述方法包括:
接收对一对象的查询,所述对象是类型的实例,其中,所述查询的执行可能需要所述对象的水合;
访问由所述数据库存储维持的信息,以便确定所述类型的实例的存储布局;
基于关于所述类型的实例的存储布局的信息,将所述查询翻译成所述类型的字段的值的等效访问路径,所述值将响应于所述查询而被返回;
结构化地访问所述值,而不必对所述对象进行水合;以及
响应于所述查询返回所述值。
7.如权利要求6所述的方法,其特征在于,所述类型的每个字段用控制所述字段的一个或多个存储方面的第一属性来注释,并且其中,每个行为用表示等效结构化访问路径的第二属性来注释。
8.如权利要求6所述的方法,其特征在于,由所述第一属性控制的所述字段的存储方面包括字段的最大大小、字段是否为固定长度字段、字段的精度、字段的数值范围以及字段的值是否可以为空中的至少一个。
9.如权利要求7所述的方法,其特征在于,所述第二属性指定了所述类型的一个字段的名称,所述名称是所述行为的主题。
10.如权利要求6所述的方法,其特征在于,所述对象类型被定义为受管代码中的类。
11.一种系统,包括:
一数据库存储,对象被持久存储在其中,所述对象是用户定义类型的实例,其中,用户定义类型的定义包括一个或多个字段和行为,并且包括控制所述数据库存储中的类型的实例的存储布局的注释,并且其中,所述数据库存储维持反映由对所述类型定义的注释所提供的存储布局的信息;以及
一数据库服务器,它(i)接收对所述对象的查询,所述对象是用户定义类型的实例,其中,所述查询的执行可能需要所述对象的水合;(ii)访问由所述数据库存储维持的信息,以便确定所述类型的实例的存储布局;(iii)基于关于所述类型的实例的存储布局的信息,将所述查询翻译成所述类型的字段的值的等效访问路径,所述值将响应于所述查询被返回;(iv)结构化地访问所述值,而不必对所述对象进行水合;以及(v)响应于所述查询返回所述值。
12.如权利要求11所述的系统,其特征在于,所述类型的每个字段用控制所述字段的一个或多个存储方面的第一属性来注释,并且其中,每个行为用表示等效结构化访问路径的第二属性来注释。
13.如权利要求12所述的系统,其特征在于,由所述第一属性控制的所述字段的存储方面包括字段的最大大小、字段是否为固定长度字段、字段的精度、字段的数值范围以及字段的值是否可以为空中的至少一个。
14.如权利要求12所述的系统,其特征在于,所述第二属性指定了所述类型的一个字段的名称,所述名称是所述行为的主题。
15.如权利要求11所述的方法,其特征在于,所述对象类型被定义为受管代码中的类。
16.一种具有存储在其上以便在对象被持久存储在数据库存储中的系统中使用的程序代码的计算机可读介质,所述对象是用户定义类型的实例,其中,用户定义类型的定义包括一个或多个字段和行为,并且包括控制所述数据库存储中的类型的实例的存储布局的注释,并且其中,所述数据库存储维持反映由对所述类型定义的注释所提供的存储布局的信息,当被在计算机上执行时,所述程序代码使得所述计算机:
接收对一对象的查询,所述对象是所述类型的实例,其中,所述查询的执行可能需要所述对象的水合;
访问由所述数据库存储维持的信息,以便确定所述类型的实例的存储布局;
基于关于所述类型的实例的存储布局的信息,将所述查询翻译为所述类型的字段的值的等效访问路径,所述值将响应于所述查询被返回;
结构化地访问所述值,而不必对所述对象进行水合;以及
响应于所述查询返回所述值。
17.如权利要求16所述的计算机可读介质,其特征在于,所述类型的每个字段用控制所述字段的一个或多个存储方面的第一属性来注释,并且其中,每个行为用表示等效结构化访问路径的第二属性来注释。
18.如权利要求16所述的计算机可读介质,其特征在于,由所述第一属性控制的所述字段的存储方面包括字段的最大大小、字段是否为固定长度字段、字段的精度、字段的数值范围以及字段的值是否可以为空中的至少一个。
19.如权利要求17所述的计算机可读介质,其特征在于,所述第二属性指定了所述类型的一个字段的名称,所述名称是所述行为的主题。
20.如权利要求16所述的计算机可读介质,其特征在于,所述对象类型被定义为受管代码中的类。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/692,225 | 2003-10-23 | ||
US10/692,225 US6941316B2 (en) | 2003-10-23 | 2003-10-23 | System and method for object persistence in a database store |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1723461A true CN1723461A (zh) | 2006-01-18 |
CN100501727C CN100501727C (zh) | 2009-06-17 |
Family
ID=34522060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800016979A Expired - Lifetime CN100501727C (zh) | 2003-10-23 | 2004-07-29 | 用于数据库存储中的对象持久存储的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US6941316B2 (zh) |
EP (1) | EP1593059B1 (zh) |
JP (1) | JP4604042B2 (zh) |
KR (1) | KR101183356B1 (zh) |
CN (1) | CN100501727C (zh) |
WO (1) | WO2005045707A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092905A (zh) * | 2011-11-07 | 2013-05-08 | Sap股份公司 | 使用虚拟文件数据对象的列式数据库 |
CN103176974A (zh) * | 2011-12-20 | 2013-06-26 | 国际商业机器公司 | 优化数据库中访问路径的方法和装置 |
CN112148795A (zh) * | 2020-09-27 | 2020-12-29 | 上海依图网络科技有限公司 | 一种数据处理方法、装置、设备及介质 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7472107B2 (en) * | 2003-06-23 | 2008-12-30 | Microsoft Corporation | Integrating horizontal partitioning into physical database design |
US8166101B2 (en) | 2003-08-21 | 2012-04-24 | Microsoft Corporation | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system |
US8238696B2 (en) | 2003-08-21 | 2012-08-07 | Microsoft Corporation | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system |
US6941316B2 (en) * | 2003-10-23 | 2005-09-06 | Microsoft Corporation | System and method for object persistence in a database store |
US20050091231A1 (en) * | 2003-10-24 | 2005-04-28 | Shankar Pal | System and method for storing and retrieving XML data encapsulated as an object in a database store |
US7213015B1 (en) * | 2003-12-31 | 2007-05-01 | Ncr Corporation | Storing and delivering program code for manipulation of a user-defined data type |
US6976029B2 (en) * | 2004-02-10 | 2005-12-13 | Microsoft Corporation | System and method for providing user defined types in a database system |
US20050234986A1 (en) * | 2004-04-09 | 2005-10-20 | Microsoft Corporation | Systems and methods for fragment-based serialization |
US7730041B2 (en) * | 2004-08-25 | 2010-06-01 | Microsoft Corporation | Data abstraction based serialization |
US20060230016A1 (en) * | 2005-03-29 | 2006-10-12 | Microsoft Corporation | Systems and methods for statistics over complex objects |
US7555506B2 (en) * | 2005-04-05 | 2009-06-30 | Microsoft Corporation | Partial deserialization of complex type objects |
US7680013B2 (en) * | 2005-11-29 | 2010-03-16 | Canon Kabushiki Kaisha | Optical information recording and reproducing apparatus |
US7945596B2 (en) | 2006-06-20 | 2011-05-17 | Microsoft Corproation | Programming model for customized data objects |
US20080027958A1 (en) * | 2006-07-31 | 2008-01-31 | Microsoft Corporation | Data Cleansing for a Data Warehouse |
US7565376B2 (en) * | 2006-12-22 | 2009-07-21 | Sap Ag | Dynamic assessment and persistence of object instances |
US7779037B2 (en) * | 2007-03-27 | 2010-08-17 | International Business Machines Corporation | Sharing a single instance of a user defined type |
US9256654B2 (en) * | 2007-12-07 | 2016-02-09 | Microsoft Technology Licensing, Llc | Dynamic schema content server |
US7917547B2 (en) * | 2008-06-10 | 2011-03-29 | Microsoft Corporation | Virtualizing objects within queries |
US9274773B2 (en) | 2011-06-23 | 2016-03-01 | Microsoft Technology Licensing, Llc | Translating programming language patterns into database schema patterns |
KR101436874B1 (ko) * | 2013-10-18 | 2014-09-11 | 한국전자통신연구원 | 침입 탐지 시스템의 탐지 성능 향상 장치 및 방법 |
JP6044960B2 (ja) * | 2013-12-26 | 2016-12-14 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | シリアライザを特化する方法、装置及びコンピュータプログラム |
US10565187B2 (en) * | 2016-11-17 | 2020-02-18 | Sap Se | Management of transactions spanning different database types |
CN110019081B (zh) * | 2017-07-20 | 2023-04-07 | 中兴通讯股份有限公司 | 数据持久化处理方法、装置、系统及可读存储介质 |
US10796013B2 (en) * | 2017-11-13 | 2020-10-06 | Veeva Systems Inc. | User programmatic interface for supporting data access control in a database system |
CN115563638B (zh) * | 2022-11-15 | 2023-04-18 | 阿里云计算有限公司 | 数据处理方法、系统、设备及存储介质 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1337132C (en) * | 1988-07-15 | 1995-09-26 | Robert Filepp | Reception system for an interactive computer network and method of operation |
US5900870A (en) | 1989-06-30 | 1999-05-04 | Massachusetts Institute Of Technology | Object-oriented computer user interface |
US5297279A (en) | 1990-05-30 | 1994-03-22 | Texas Instruments Incorporated | System and method for database management supporting object-oriented programming |
US6708196B1 (en) * | 1994-04-15 | 2004-03-16 | Microsoft Corporation | Method and system for caching presentation data |
US6078925A (en) | 1995-05-01 | 2000-06-20 | International Business Machines Corporation | Computer program product for database relational extenders |
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 |
US6785690B1 (en) | 1996-03-18 | 2004-08-31 | Hewlett-Packard Development Company, L.P. | Method and system for storage, retrieval, and query of objects in a schemeless database |
JP3747525B2 (ja) | 1996-08-28 | 2006-02-22 | 株式会社日立製作所 | 並列データベースシステム検索方法 |
US6112024A (en) | 1996-10-02 | 2000-08-29 | Sybase, Inc. | Development system providing methods for managing different versions of objects with a meta model |
US6070174A (en) | 1997-09-30 | 2000-05-30 | Infraworks Corporation | Method and apparatus for real-time secure file deletion |
US6108004A (en) | 1997-10-21 | 2000-08-22 | International Business Machines Corporation | GUI guide for data mining |
US6263342B1 (en) | 1998-04-01 | 2001-07-17 | International Business Machines Corp. | Federated searching of heterogeneous datastores using a federated datastore object |
US6223344B1 (en) * | 1998-06-11 | 2001-04-24 | Internationl Business Machines Corporation | Apparatus and method for versioning persistent objects |
US6519597B1 (en) | 1998-10-08 | 2003-02-11 | International Business Machines Corporation | Method and apparatus for indexing structured documents with rich data types |
US6338056B1 (en) | 1998-12-14 | 2002-01-08 | International Business Machines Corporation | Relational database extender that supports user-defined index types and user-defined search |
US6505211B1 (en) * | 1999-01-26 | 2003-01-07 | International Business Machines Corporation | Method for providing for persistence of java classes where the persistence semantics may be orthogonal to the class definition |
US6199195B1 (en) | 1999-07-08 | 2001-03-06 | Science Application International Corporation | Automatically generated objects within extensible object frameworks and links to enterprise resources |
US6370541B1 (en) | 1999-09-21 | 2002-04-09 | International Business Machines Corporation | Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores |
US6556983B1 (en) | 2000-01-12 | 2003-04-29 | Microsoft Corporation | Methods and apparatus for finding semantic information, such as usage logs, similar to a query using a pattern lattice data space |
US7007037B2 (en) * | 2000-07-31 | 2006-02-28 | Oracle International Corporation | Opaque types |
US6671687B1 (en) | 2000-09-29 | 2003-12-30 | Ncr Corporation | Method and apparatus for protecting data retrieved from a database |
US6999956B2 (en) | 2000-11-16 | 2006-02-14 | Ward Mullins | Dynamic object-driven database manipulation and mapping system |
US6877111B2 (en) | 2001-03-26 | 2005-04-05 | Sun Microsystems, Inc. | Method and apparatus for managing replicated and migration capable session state for a Java platform |
US6697818B2 (en) | 2001-06-14 | 2004-02-24 | International Business Machines Corporation | Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database |
US6772178B2 (en) | 2001-07-27 | 2004-08-03 | Sun Microsystems, Inc. | Method and apparatus for managing remote data replication in a distributed computer system |
US6941316B2 (en) | 2003-10-23 | 2005-09-06 | Microsoft Corporation | System and method for object persistence in a database store |
-
2003
- 2003-10-23 US US10/692,225 patent/US6941316B2/en not_active Expired - Lifetime
-
2004
- 2004-07-29 KR KR1020057010614A patent/KR101183356B1/ko active IP Right Grant
- 2004-07-29 WO PCT/US2004/024537 patent/WO2005045707A1/en active Application Filing
- 2004-07-29 JP JP2006536593A patent/JP4604042B2/ja not_active Expired - Lifetime
- 2004-07-29 EP EP04779551.3A patent/EP1593059B1/en not_active Expired - Lifetime
- 2004-07-29 CN CNB2004800016979A patent/CN100501727C/zh not_active Expired - Lifetime
-
2005
- 2005-01-04 US US11/028,783 patent/US7356546B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092905A (zh) * | 2011-11-07 | 2013-05-08 | Sap股份公司 | 使用虚拟文件数据对象的列式数据库 |
CN103092905B (zh) * | 2011-11-07 | 2017-12-19 | Sap欧洲公司 | 使用虚拟文件数据对象的列式数据库 |
CN103176974A (zh) * | 2011-12-20 | 2013-06-26 | 国际商业机器公司 | 优化数据库中访问路径的方法和装置 |
CN103176974B (zh) * | 2011-12-20 | 2016-01-13 | 国际商业机器公司 | 优化数据库中访问路径的方法和装置 |
CN112148795A (zh) * | 2020-09-27 | 2020-12-29 | 上海依图网络科技有限公司 | 一种数据处理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US7356546B2 (en) | 2008-04-08 |
CN100501727C (zh) | 2009-06-17 |
EP1593059B1 (en) | 2020-08-05 |
WO2005045707A1 (en) | 2005-05-19 |
KR20060121653A (ko) | 2006-11-29 |
US6941316B2 (en) | 2005-09-06 |
US20050091228A1 (en) | 2005-04-28 |
JP4604042B2 (ja) | 2010-12-22 |
KR101183356B1 (ko) | 2012-09-14 |
JP2007509425A (ja) | 2007-04-12 |
EP1593059A1 (en) | 2005-11-09 |
US20050120048A1 (en) | 2005-06-02 |
EP1593059A4 (en) | 2008-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1723461A (zh) | 用于数据库存储中的对象持久存储的系统和方法 | |
CN1230754C (zh) | 多平台环境下的字符码转换系统 | |
CN1735890A (zh) | 存储和检索在定义类型的数据库存储外的用户定义类型的字段的系统和方法 | |
US9317554B2 (en) | SQL generation for assert, update and delete relational trees | |
CN101223522B (zh) | 调用表值函数的查询的有效评估系统和方法 | |
CN100585589C (zh) | 用以支持用户定义类型的继承的系统和方法 | |
US7376656B2 (en) | System and method for providing user defined aggregates in a database system | |
US10318753B2 (en) | Semantic data structure and method | |
CN1811767A (zh) | 用于提供带有自动搜索菜单的用户界面的系统和方法 | |
US7536406B2 (en) | Impact analysis in an object model | |
CN1821957A (zh) | 关系建模 | |
CN1786950A (zh) | 处理抽象查询的方法和系统 | |
CN1794232A (zh) | Crm数据库的安全视图 | |
CN1784680A (zh) | 搜索条件的逐渐放宽 | |
US20130318068A1 (en) | Method for serial and condition-based execution of operators by parallel processes | |
CN1716249A (zh) | 延迟取出用户定义类型的指定成员的系统和方法 | |
CN100350381C (zh) | 用于以一种语言独立语法记录宏的方法和系统 | |
JP2009525533A (ja) | Xna関係管理 | |
CN1734448A (zh) | 对用户指定电子表格函数的支持 | |
CN110647316B (zh) | 通用业务对象的生成方法、装置、计算机设备及存储介质 | |
CN1274886A (zh) | 用于发送表构造的方法和装置 | |
CN1140500A (zh) | 分布式数据库系统 | |
CN1856784A (zh) | 用于存储平台中的锁定和隔离的系统和方法 | |
CN113704300A (zh) | 供数据检索方法使用的数据印记技术 | |
CN1768319A (zh) | 用于构建对象和实体的呈现的方法和装置 |
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: MICROSOFT TECHNOLOGY LICENSING, LLC Address before: Washington State Patentee before: Microsoft Corp. |
|
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20090617 |