CN102364464B - 对象实例版本化 - Google Patents

对象实例版本化 Download PDF

Info

Publication number
CN102364464B
CN102364464B CN201110290454.3A CN201110290454A CN102364464B CN 102364464 B CN102364464 B CN 102364464B CN 201110290454 A CN201110290454 A CN 201110290454A CN 102364464 B CN102364464 B CN 102364464B
Authority
CN
China
Prior art keywords
version
storage
request
data
instance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201110290454.3A
Other languages
English (en)
Other versions
CN102364464A (zh
Inventor
R·R·帕奇
D·K·林
R·S·乔汉
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 CN102364464A publication Critical patent/CN102364464A/zh
Application granted granted Critical
Publication of CN102364464B publication Critical patent/CN102364464B/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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • 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/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning

Landscapes

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

Abstract

本发明涉及对象实例版本化。将对象实例的对象数据的第一版本存储在可以是分布式存储的对象持久存储中。在存储了对象数据的第一版本后,可将对象数据的第二版本存储在该存储中,而无需删除对象数据的第一版本。可将标识对象数据的第一版本和对象数据的第二版本的对象数据版本化信息与对象实例的方法版本化信息分开存储。在存储了对象数据的第二版本后,可接收检索对象实例的第一版本的请求,并且作为响应可从存储中检索对象数据的第一版本。还可搜索对象实例数据的多个版本。

Description

对象实例版本化
技术领域
本发明涉及用于版本化对象实例的方法和系统。
背景技术
对计算机文件的历史版本进行维护是已知的。对历史版本的维护被称为版本化。如此处所使用地,对版本、版本化及类似的术语的引用指的是历史版本、历史版本化等,其中以与版本的历史次序相对应的顺序次序来维护版本。在一些系统中,对文件的版本化默认是关闭的,但是可被打开以启用版本化。还完成了汇编版本化。汇编版本化可在开发软件时维护并跟踪的计算机代码汇编的历史版本。例如,这可在对软件部署的汇编进行封装时完成。
发明内容
无论先前的版本化工具和技术有何优点,它们都既未能认识到本文描述和要求保护的对象实例版本化工具和技术,也未认识到这些工具和技术所产生的优点。如此处所使用地,对象实例是可包括数据(例如,对象属性的实例)和方法(其可包括一个或多个子方法)的计算机可读信息的单位。此处所使用的对象方法是涉及对象的程序信息。例如,方法可以是涉及对象实例的类或其他信息,诸如演示信息、与涉及该对象实例的例程有关的信息等。对象实例可以是对象而非文件的实例。对象实例的示例包括.NET对象实例,这些.NET对象实例是在.NET软件框架之内的对象的实例。
在一个实施例中,工具和技术可包括接收将对象实例的第一版本存储在对象持久存储中的请求。技术还可包括响应于该请求,将针对对象实例的对象数据的第一版本存储在对象持久存储中。在存储了对象数据的第一版本后,可接收将对象实例的第二版本存储在对象持久存储中的请求。响应于存储对象实例的第二版本的请求,可将对象数据的第二版本存储在该存储中,而无需删除对象数据的第一版本。可将标识对象数据的第一版本和对象数据的第二版本的对象数据版本化信息与对象实例的方法版本化信息分开存储。在存储了对象数据的第二版本后,可接收检索对象实例的第一版本的请求,并且作为响应,可从存储中检索对象数据的第一版本。
如在此所使用地,在维护对象数据版本化信息和对象方法版本化信息这两种类型的信息时,将这两种类型的信息彼此分开存储,使得方法和数据版本不仅仅是彼此相同。因此,单个方法版本可对应于多个数据版本和/或反之亦然。可将数据和方法版本化信息分开地存储在相同的数据结构中或将数据和方法版本化信息存储在分开的数据结构中,或者可不存储方法版本化信息。
在工具和技术的另一实施例中,分布式对象持久存储可被配置来响应于接收存储对象实例的请求而存储对象实例的对象数据的多个版本。在接收到检索对象实例的请求后,该存储可被配置来响应于该请求而标识对象数据的一版本并返回所标识的版本。客户端可被配置来请求将对象实例存储在分布式对象持久存储中,以及请求从所述分布式对象持久存储中检索对象实例。
在工具和技术的再一实施例中,可响应于接收到存储一个或多个对象实例的请求而将一个或多个对象实例的对象数据的多个版本存储在对象持久存储中。可接收请求搜索对象数据的查询,其中该查询标识要被搜索的对象数据的一组版本。可根据查询来执行对该组版本的搜索,并且可返回搜索的结果。
提供本发明内容是为了以简化的形式介绍一些概念。这些概念将在以下具体实施方式中进一步描述。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。类似地,本发明不限于解决在背景技术、具体实施方式、或附图中讨论的特定技术、工具、环境、缺点、或优点的实现。
附图说明
图1是其中可实现所描述的各实施例中的一个或多个的合适的计算环境的框图。
图2是对象实例版本化系统的示意图。
图3是对象实例版本化技术的流程图。
图4是另一对象实例版本化技术的流程图。
具体实施方式
本文描述的各实施例涉及用于对象实例版本化的技术和工具。这样的改进可源于分开或组合地使用各种技术和工具。
这些技术和工具可包括将对象实例的版本存储在对象持久存储中。可向客户端应用程序提供版本,这些客户端应用程序可请求存储对象实例的版本以及可请求从存储返回对象实例的当前和/或历史版本。
存储可维护对象实例的版本化信息。这可包括对象数据版本化信息,该信息可以与对象方法版本化信息分开。因此,客户端应用程序可改变对象方法(例如,通过增加或改变对象类定义)和/或对象数据,并且存储仍然可以使对象实例的历史版本可用。对象持久存储可在运行时间执行版本改变,而将不同的对象实例版本存储到持久存储中。对象持久存储可提供对象实例的历史,该历史可列出对象实例的各历史版本。存储在被客户端请求时还返回当前对象实例版本和/或一个或多个历史对象实例版本。
因此,在此描述的工具和方法可允许:将不同的对象实例版本存储在分布式数据存储中、检索对象实例的先前版本、检索对象实例的版本历史、基于所指定的对象数据的历史和/或当前版本来搜索对象实例、和/或使对象实例数据的版本化与对象实例方法的版本化分开进行。
所附权利要求中定义的主题不必限于本文描述的益处。本发明的特定实现可提供本文描述的益处的全部、一些、或未提供本文描述的益处。尽管本文出于呈现的目的以特定的顺序次序描述了用于各种技术的操作,但应理解除非要求特定的排序,否则这种描述方式涵盖了操作顺序上的重新安排。例如,在一些情况下,可重新安排或同时执行顺序地描述的操作。本文参照流程图描述的技术可被用于本文描述的一个或多个系统和/或用于一个或多个其他系统。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。此外,为了简单起见,流程图可能未示出可结合其他技术来使用特定技术的各种方式。
1.示例性计算环境
图1示出其中可实现所描述的各实施例中的一个或多个的合适的计算环境(100)的通用示例。例如,可将一个或多个此类计算环境用作数据存储或客户端环境。一般而言,可使用各种不同的通用或专用计算系统配置。适用于此处所描述的工具和技术的公知计算系统配置的示例包括,但不限于,服务器场和服务器群集、个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子产品、网络PC、小型机、大型计算机、包括上述系统或设备中的任一个的分布式计算环境等。
计算环境(100)不旨在对本发明的使用范围或功能提出任何限制,因为本发明可以在完全不同的通用或专用计算环境中实现。
参考图1,计算环境(100)包括至少一个处理单元(110)和存储器(120)。在图1中,这一最基本的配置(130)被包括在虚线内。处理单元(110)执行计算机可执行指令,并且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。存储器(120)可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存)、或两者的某种组合。存储器(120)存储实现对象实例版本化的软件(180)。
尽管为了清楚起见用线条示出了图1的各框,但是,实际上,描绘各组件并不是那样清楚,并且用比喻方法,图1以及下文讨论的其他附图的线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备等的呈现组件认为是I/O组件。而且,处理器具有存储器。本发明人认识到,这是本领域的特性,并且重申,图1的图示只是例示可结合本发明的一个或多个实施例来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等类别之间不做区分,它们全部都被认为是在图1的范围之内的并且被称为“计算机”、“计算环境”、或“计算设备”。
计算环境(100)可具有附加特征。在图1中,计算环境(100)包括存储(140)、一个或多个输入设备(150)、一个或多个输出设备(160)以及一个或多个通信连接(170)。诸如总线、控制器或网络等互连机制(未示出)将计算环境(100)的各组件互连。通常,操作系统软件(未示出)为在计算环境(100)中执行的其它软件提供操作环境,并协调计算环境(100)的各组件的活动。
存储(140)可以是可移动或不可移动的,并可包括诸如磁盘、磁带或磁带盒、CD-ROM、CD-RW、DVD之类的非瞬态计算机可读存储介质,或者可用于储存信息并可在计算环境(100)内访问的任何其它介质。存储(140)存储用于软件(180)的指令。
输入设备(150)可以是诸如键盘、鼠标、笔或跟踪球等触摸输入设备;语音输入设备;扫描设备;网络适配器;CD/DVD读取器;或可向计算环境(100)提供输入的另一设备。输出设备(160)可以是显示器、打印机、扬声器、CD/DVD刻录机、网络适配器、或从计算环境(100)提供输出的另一设备。
通信连接(170)允许通过通信介质与另一计算实体进行通信。因此,计算环境(100)可使用通往诸如个人计算机、服务器、路由器、网络PC、对等设备或另一常见网络节点等一个或多个远程计算设备的逻辑连接而工作在联网环境中。通信介质以已调制数据信号的形式传达诸如数据或计算机可执行指令或请求等信息。已调制数据信号是以在信号中编码信息的方式来设置或改变其一个或更多个特征的信号。作为示例而非限制,通信介质包括利用电、光、射频(RF)、红外线、声音或其他载体实现的有线或无线技术。
各种工具和技术可以在计算机可读介质的一般上下文中描述。计算机可读介质是可以在计算环境内被访问的任何可用介质。作为示例而非局限,对于计算环境(100),计算机可读介质包括存储器(120)、存储(140)、和以上的组合。
这些工具和技术可在诸如程序模块中所包括的在目标真实或虚拟处理器上的计算环境中执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等等。程序模块的功能可以按需在各个实施例中进行组合或在程序模块之间拆分。程序模块的计算机可执行指令可以在本地或分布式计算环境内执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质中。
出于表示的目的,具体实施方式使用了如“确定”、“选择”、“调整”和“操作”等术语来描述计算环境中的计算机操作。这些以及其他类似术语是对计算机执行的操作的高层抽象,并且不应与人类执行的动作相混淆,除非明确指出人类(诸如“用户”)的动作执行。对应于这些术语的实际的计算机操作取决于实现而不同。
II.对象实例版本化系统
图2是结合使用其可实现所描述的各实施例中的一个或多个实施例的对象实例版本化系统(200)的框图。版本化系统(200)可包括一组客户端(210),所述客户端可被主存在客户机器上。客户端(210)可连接至网络(220),诸如全球计算机网络(例如,因特网)、外联网、和/或一些其他网络。可以诸如通过使用标准的消息收发技术(例如,使用TCP/IP、HTTP等)等各种方式中的任一种来通过网络(220)发送诸如请求和响应等消息。另外,版本化系统(200)可包括对象持久存储(230),该对象持久存储可以是主存在多个机器(232)上的分布式对象持久存储。存储(230)可诸如在一个或多个数据库(例如,SQL
Figure BSA00000584203100052
数据库)中存储对象实例(240)。对于每一对象实例(240),存储(230)可存储对象数据(242)和对象方法(244)(例如,对象实例所属的对象类)的单个版本。另外,存储(230)可存储每一对象实例(240)的对象数据(242)的多个版本和/或对象方法(244)的多个版本。
存储(230)还可存储跟踪多个对象版本的版本化信息(250)。例如,版本化信息(250)可用列出数据(242)的各版本以及与数据(242)的每一版本相对应的方法(244)的版本表的形式。然而,版本化信息(250)可采用各种不同的形式,诸如针对存储(230)中的所有版本化的对象实例的单个表、针对每一对象实例的不同的表、或某一其他类型的数据结构。版本化信息(250)可包括跟踪数据(242)的不同版本的数据版本化信息(252),以及跟踪各方法(244)的不同版本并将数据(242)的各版本与由数据(242)的版本所使用的方法(244)的相应版本相关的方法版本化信息(254)。
例如,在
Figure BSA00000584203100061
.NET框架可用并且存储(230)中存储的对象是.NET对象的情况下,方法(244)可以是对象类,并且方法版本化信息(254)可指示该对象类的版本。每一被版本化的对象类都可以具有名称,该名称包括完整的名字空间和类的版本标识符,这两者都可以是该类的方法版本化信息的一部分。例如,名字空间可以是“Microsoft.Partner.Customer”,且类的版本标识符可以是“Version=2.0.0.0”。可以使用该强名称和版本标识符来标识版本化的对象类。对象持久存储(230)可具有存储该信息的元数据模式。每当检测到对象类的新版本时,可在将对象实例写入存储(230)前调整类中的每一对象实例的新模式。因此,对象持久存储(230)可记录正在使用不同的类版本,并且对象持久存储(230)可存储类定义以及方法版本化信息(254)(例如,版本号)。
另外,如果启用了版本化(版本化默认是关闭的)并且存储(230)从客户端(210)处接收了存储更新后的对象实例的请求,则存储(230)可存储对象数据(242)的新版本而无需删除现有的数据。而且,存储(230)可存储针对该新版本的数据版本化信息(252)(例如版本化表中存储的数据(242)的版本号),并且存储(230)还可存储针对该新版本的方法版本化信息(例如,对象数据(242)所使用的方法的对象类版本号)。对象持久存储(230)可使用版本化信息(250)来检索合适的对象实例,其包括将对象数据(242)与合适的相应对象方法(244)相匹配。
对象持久存储(230)可被配置来在存储或不存储对象实例版本历史的情况下存储对象实例(240)。如果启用了对象实例历史或版本化,则客户端(210)可通过向存储(230)提供对象数据版本号来请求历史版本。可通过以下各项来请求当前版本:请求所存储的对象实例(240)而不提供版本号(默认版本可以是当前版本),或者请求所存储的对象实例并提供对象数据(242)的版本号。
存储(230)可以是分布式的,并且可通过向该存储(230)提供标识符来标识对象实例(240),该标识符不必与具体的物理位置或机器绑定。例如,客户端(210)可在请求对象时向该对象提供统一资源标识符或统一资源定位符。
以下是用于版本化对象类“Microsoft.Partner.Customer”的伪代码,该伪代码可包括形成针对类中的各对象实例的方法的类定义:
当启用版本化时,存储(230)可保存对象类的版本1、版本2和版本3。因此,在(诸如通过请求具体的对象数据实例来)请求历史对象版本时,可使用合适的历史对象类版本以及历史对象实例数据版本。例如,在保存了类中的对象实例的版本,同时对象类版本1是活动版本时,存储(230)可用来自该对象实例版本的数据来填充类版本1。
以下是用于版本化作为前述的类“Microsoft.Partner.Customer”的成员的对象实例“/Microsoft/Customers/Fred”的对象数据的伪代码:
Figure BSA00000584203100082
在该伪代码中,将对象实例“Fred”的两个版本写入存储(230)中,检索第一版本,以及然后检索第二版本。在“Fred”的两个版本中,都使用了“Microsoft.Partner.Customer”类的版本3,使得将用来自对象实例“Fred”的合适版本的数据来填充类版本(对象实例Fred的方法)。
可通过存储针对每一版本的数据或方法的完整集合或通过使用一些其他的技术来完成存储对象实例数据和方法的不同版本。例如,可通过仅存储已从之前版本的改变了的数据来存储多个版本。
因此,所描述的版本化系统(200)包括可被配置来响应于接收存储对象实例(240)的请求而存储对象实例(240)的对象数据(242)的多个版本的分布式对象持久存储(230)。还可对存储(230)进行配置,使得在接收到检索对象实例(240)的请求后,该存储(230)可响应于该请求而标识对象数据(242)的版本并返回所标识的版本。另外,客户端(210)可被配置来请求将对象实例(240)存储在分布式对象持久存储(230)中,以及请求从该分布式对象持久存储(230)中检索对象实例(240)。
而且,存储(230)可被配置来在检索对象实例(240)的请求没有指定对象实例版本时,响应于检索对象实例(240)的请求而返回对象实例(240)的当前版本。以及,存储(230)可被配置来在检索对象实例(240)的请求指定了历史对象实例版本时,响应于该请求而返回所指定的历史对象实例版本(即,早于当前版本的对象实例(240)的版本)。
存储(230)还可被配置来响应于从客户端(210)中的一个接收到的查询而搜索一个或多个对象实例(240)中的每一个的数据(242)的历史和当前版本。例如,客户端(210)可向存储(230)发送请求搜索对当前驻留在西雅图的所有雇员的查询,而请求搜索雇员对象实例的“城市”属性的当前版本。或者,查询可请求搜索驻留在或曾经驻留在西雅图的雇员,而请求搜索对雇员对象实例的“城市”属性的当前和历史版本。还可执行更复杂的搜索。例如,客户端(210)可发送请求搜索改变了驻留城市的所有雇员的查询。响应于该查询请求,可在每一客户端对象的各版本之间的作出比较以确定驻留城市是否改变。当然,这些只是示例,可在对象示例数据的当前和/或历史版本上执行许多其他类型的搜索。可使用现有类型的搜索技术来执行这些搜索本身,诸如通过使用现有的数据库搜索引擎来对存储有对象实例(240)的存储(230)中的SQL数据库(诸如
Figure BSA00000584203100091
SQL
Figure BSA00000584203100092
数据库)执行搜索。
如之前已描述地,存储(230)可被配置来维护作为跟踪在持久存储(230)中存储的对象实例的数据版本的数据结构的版本化信息(250)。例如,该数据结构可以是版本化表的形式。这种版本化表可另外包括方法版本化信息(254)。
版本化默认是被关闭的,使得仅在存储(230)接收到维护对象数据的多个版本的请求时,持久存储(230)才如在此描述地被配置来维护对象数据的多个版本。
III.对象实例版本化技术
在此将描述若干个对象实例版本化技术。可以在计算环境中执行这些技术中的每一个。例如,可在包括至少一个处理器和存储器的计算机系统中执行每个技术,该存储器包括存储于其上的、在由该至少一个处理器执行时使该至少一个处理器执行该技术的指令(存储器存储指令(例如,对象代码)),并且在处理器执行这些指令时,处理器执行该技术。类似地,一个或多个计算机可读存储介质可具有收录于其上的计算机可执行指令,该些指令在由至少一个处理器执行时使该至少一个处理器执行该技术。
参照图3,将讨论对象实例版本化技术。在该技术中,可接收(310)将对象实例的第一版本存储在对象持久存储中的请求。响应于该请求,可将对象实例的对象数据的第一版本存储(320)在对象持久存储中。在存储了(320)对象数据的第一版本后,可接收(330)将对象实例的第二版本存储在对象持久存储中的请求。响应于存储对象实例的第二版本的请求,可将对象数据的第二版本存储(340)在存储中,而无需删除对象数据的第一版本。这可包括存储对象数据的整个第二版本,或者仅存储对象数据的第二版本的某些部分,诸如仅存储第二版本中与第一版本中的数据不同的数据。另外,可通过将它们两者存储在同一存储内部的方式,来将第一和/或第二版本存储在存储中。或者,在这些版本中的一个或两个被存储在外部位置,且位置信息(例如,指针)被存储在存储中时,可认为这些版本被存储在存储中。
图3的技术还可包括存储(350)对象数据版本化信息。该版本化信息可与对象实例的方法版本化信息分开地标识对象数据的第一版本和对象数据的第二版本。该技术还可包括将对象实例的方法版本化信息与对象数据版本化信息分开存储(355)。可接收(360)对于对象实例的历史的请求,并且作为响应,可返回(365)对象实例的历史(其可以是对象实例的数据版本的列表)。所列出的对象实例的数据版本可包括第一和第二版本,并且还可以包括其他版本。
可诸如通过从所显示的历史列表中选择各版本中的一个的用户输入来请求在历史中列出的版本中的一个或多个。作为响应,可从存储中检索所请求的版本。例如,在存储了(340)对象数据的第二版本后,该技术可包括接收(370)检索对象实例的第一版本的请求。这可在返回(365)历史后(例如,通过处理在该历史中选择条目的用户输入)完成,或者可在没有请求或返回历史的情况下完成。响应于检索第一版本的请求,可从存储中检索(375)对象数据的第一版本。
方法版本化信息可包括与对象实例的对象数据的第一版本相对应的对象方法版本的第一组方法版本化信息,以及与对象实例的对象数据的第二版本相对应的对象方法版本的第二组方法版本化信息。方法版本化信息可以是各种不同类型的信息中的任何一种,诸如方法本身、或标识和/或定位所存储的方法的一些信息。
响应于检索对象实例的第一版本的请求,该技术还可包括使用第一组方法版本化信息来将对象数据的第一版本和与该对象数据的第一版本相对应的对象方法版本相匹配(380)。
第一和第二组方法版本化信息各自可包括对于对象实例的至少一个版本所属的类的版本的指示。与对象数据的第一版本相对应的对象方法版本可以和与对象数据的第二版本相对应的对象方法版本不同,或者相同。对象实例可以是商业对象的实例。如此处所使用地,商业对象是表示诸如发票、定购单、顾客、雇员、会议室等一个或多个商业项目的对象。
对象持久存储可被配置来存储软件框架之内的多个对象类型中的任何一个的多个版本。例如,该存储可被配置来存储在诸如
Figure BSA00000584203100111
.NET软件框架等软件框架内的任何对象。而且,对象持久存储可以是分布式对象持久存储,并且检索对象实例的第一版本的请求可指示该对象实例而无需指定存储该对象实例的物理位置(物理机器等)。
现参照图4,将讨论另一对象实例版本化技术。该技术可包括响应于接收到存储对象实例的请求而将一个或多个对象实例的对象数据的多个版本存储(410)在对象持久存储中。对象持久存储可以是分布式对象持久存储。该技术还可包括接收(420)请求搜索对象数据的查询,该查询标识要被搜索的对象数据的一组版本。例如,查询可标识对象数据的所有历史版本、或所有版本(当前的和历史的)。可执行(430)对该组版本的搜索,并且可以返回(440)结果。该技术还可包括在接收到(450)检索在搜索结果中标识的对象实例的请求后,响应于该请求,标识并返回(460)对象数据的版本。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但是可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式而公开的。

Claims (10)

1.一种计算机实现的方法,包括:
接收将对象实例(240)的第一版本存储在对象持久存储(230)中的请求;
响应于存储所述对象实例(240)的第一版本的请求,将对象实例(240)的对象数据(242)的第一版本存储在所述对象持久存储(230)中;
在存储了所述对象数据(242)的第一版本后,接收将所述对象实例(240)的第二版本存储在所述对象持久存储(230)中的请求;
响应于存储所述对象实例(240)的第二版本的请求,将所述对象数据(242)的第二版本存储在所述存储(230)中,而无需删除所述对象数据(242)的第一版本;
将标识所述对象数据(242)的第一版本和所述对象数据(242)的第二版本的对象数据版本化信息(252)与所述对象实例(240)的方法版本化信息(254)分开存储;
在存储了所述对象数据(242)的第二版本后,接收检索所述对象实例(240)的第一版本的请求;以及
响应于检索所述对象实例(240)的第一版本的请求,从所述存储(230)中检索所述对象数据(242)的第一版本。
2.如权利要求1所述的方法,其特征在于,还包括:
接收对所述对象实例的历史的请求;以及
响应于对所述历史的请求,返回所述对象实例的数据版本的列表,所列出的所述对象实例的数据版本包括所述第一版本和所述第二版本。
3.如权利要求1所述的方法,其特征在于,还包括将所述对象实例的方法版本化信息与所述对象数据版本化信息分开存储。
4.如权利要求3所述的方法,其特征在于,所述方法版本化信息包括与所述对象实例的对象数据的第一版本相对应的对象方法版本的第一组方法版本化信息,以及与所述对象实例的所述对象数据的第二版本相对应的对象方法版本的第二组方法版本化信息。
5.如权利要求1所述的方法,其特征在于:
所述方法还包括:
存储与所述对象实例的对象数据的第一版本相对应的对象方法版本的第一组版本化信息;
存储与所述对象实例的所述对象数据的第二版本相对应的对象方法版本的第二组版本化信息;
响应于检索所述对象实例的第一版本的请求,使用所述第一组版本化信息来将所述对象数据的第一版本和与所述对象数据的第一版本相对应的所述对象方法版本相匹配;以及
所述第一和第二组版本化信息各自包括对所述对象实例的至少一个版本所属的类的版本的指示;
所述对象持久存储被配置来存储软件框架内的多个对象类型中的任一个的多个版本,而无需所述对象类型的类包括启用版本化的代码;以及
所述对象持久存储是分布式对象持久存储,并且其中检索所述对象实例的第一版本的请求指示所述对象实例而无需指定存储所述对象实例的物理位置。
6.一种计算机系统,包括:
分布式对象持久存储(230),其被配置来响应于接收存储对象实例(240)的请求而存储所述对象实例(240)的对象数据(242)的多个版本,以及在接收到检索对象实例(240)的请求后,响应于所述请求而标识所述对象数据(242)的版本并返回所标识的版本;以及
一组一个或多个的客户端(210),其被配置来请求将对象实例(240)存储在所述分布式对象持久存储(230)中,以及请求从所述分布式对象持久存储(230)中检索所述对象实例(240)。
7.如权利要求6所述的计算机系统,其特征在于,所述存储被配置来在检索对象实例的请求没有指定对象实例版本时,响应于所述检索对象实例的请求而返回当前对象实例版本。
8.如权利要求6所述的计算机系统,其特征在于,所述存储被配置来在检索对象实例的请求指定了历史对象实例版本时,响应于该请求而返回所指定的历史对象实例版本。
9.如权利要求6所述的计算机系统,其特征在于,所述存储被配置来响应于从所述客户端的一个发送的查询而搜索一个或多个对象实例的数据的多个版本。
10.一种用于对象实例版本化的方法,包括:
响应于接收存储一个或多个对象实例(240)的请求,将所述一个或多个对象实例(240)的对象数据(242)的多个版本存储在对象持久存储(230)中;
接收请求搜索所述对象数据(242)的查询,所述查询标识要被搜索的所述对象数据(242)的一组版本;
根据所述查询来执行对该组版本的搜索;以及
返回所述搜索的结果。
CN201110290454.3A 2010-09-17 2011-09-16 对象实例版本化 Expired - Fee Related CN102364464B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/884,185 US20120072449A1 (en) 2010-09-17 2010-09-17 Object instance versioning
US12/884,185 2010-09-17

Publications (2)

Publication Number Publication Date
CN102364464A CN102364464A (zh) 2012-02-29
CN102364464B true CN102364464B (zh) 2014-06-11

Family

ID=45691030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110290454.3A Expired - Fee Related CN102364464B (zh) 2010-09-17 2011-09-16 对象实例版本化

Country Status (2)

Country Link
US (1) US20120072449A1 (zh)
CN (1) CN102364464B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8954385B2 (en) 2010-06-28 2015-02-10 Sandisk Enterprise Ip Llc Efficient recovery of transactional data stores
US8874515B2 (en) * 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
WO2014142908A1 (en) 2013-03-14 2014-09-18 Hewlett-Packard Development Company, L.P. Multiversioned nonvolatile memory hierarchy for persistent memory
US9531722B1 (en) 2013-10-31 2016-12-27 Google Inc. Methods for generating an activity stream
US9542457B1 (en) * 2013-11-07 2017-01-10 Google Inc. Methods for displaying object history information
US9614880B1 (en) 2013-11-12 2017-04-04 Google Inc. Methods for real-time notifications in an activity stream
US9509772B1 (en) 2014-02-13 2016-11-29 Google Inc. Visualization and control of ongoing ingress actions
US9536199B1 (en) 2014-06-09 2017-01-03 Google Inc. Recommendations based on device usage
US9507791B2 (en) 2014-06-12 2016-11-29 Google Inc. Storage system user interface with floating file collection
US10078781B2 (en) 2014-06-13 2018-09-18 Google Llc Automatically organizing images
US9792094B2 (en) * 2014-09-04 2017-10-17 Home Box Office, Inc. Factory identification system
US9870420B2 (en) 2015-01-19 2018-01-16 Google Llc Classification and storage of documents
CN111356996B (zh) * 2018-06-02 2023-07-21 西部数据技术公司 用于版本验证的系统和计算机实现的方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505212B2 (en) * 1998-02-04 2003-01-07 Interwoven Inc System and method for website development
US20020073110A1 (en) * 2000-12-12 2002-06-13 Edouard Duvillier Version collection technique implemented on an intrinsic versioning information storage and retrieval system
US20020073082A1 (en) * 2000-12-12 2002-06-13 Edouard Duvillier System modification processing technique implemented on an information storage and retrieval system
US7730450B2 (en) * 2004-08-12 2010-06-01 National Instruments Corporation Automatic versioning and data mutation of user-defined data types
US7506334B2 (en) * 2005-02-25 2009-03-17 Microsoft Corporation Common, multi-version interface that allows a distributed sybsystem to communicate with multiple versions of the distributed subsystem
US20080071806A1 (en) * 2006-09-20 2008-03-20 Microsoft Corporation Difference analysis for electronic data interchange (edi) data dictionary
US8589357B2 (en) * 2006-10-20 2013-11-19 Oracle International Corporation Techniques for automatically tracking and archiving transactional data changes
US7567992B1 (en) * 2006-12-29 2009-07-28 Unisys Corporation Replicating of plurality of instances of an object model in memory arrangement using portable object references where each object attribute assigned GUID
US8819164B2 (en) * 2007-08-31 2014-08-26 Microsoft Corporation Versioning management
US7870108B2 (en) * 2007-09-25 2011-01-11 Amadeus S.A.S. Method and apparatus for version management of a data entity
US7882110B2 (en) * 2008-04-30 2011-02-01 Enterprise Content Management Group Method and system for migrating documents

Also Published As

Publication number Publication date
US20120072449A1 (en) 2012-03-22
CN102364464A (zh) 2012-02-29

Similar Documents

Publication Publication Date Title
CN102364464B (zh) 对象实例版本化
CN100397398C (zh) 从多个格式不同的物理表创建逻辑表的方法和系统
CN102193973B (zh) 呈现回答
CN102906744B (zh) 无限浏览
CN103890709B (zh) 基于缓存的键值数据库映射和复制
CN101490677B (zh) 呈现搜索结果信息
CN111241387B (zh) 提高搜索结果的相关性
CN100501727C (zh) 用于数据库存储中的对象持久存储的系统和方法
CN102243646B (zh) 使用语句执行计划获取依赖性元数据
CN102193970B (zh) 知晓元数据的搜索引擎
US20090158161A1 (en) Collaborative search in virtual worlds
CN103620605A (zh) 将搜索历史组织成合集
CN107992514A (zh) 结构化信息卡的搜索和检索
CN104919453A (zh) 数据库内容的每用户汇总
CN109564573A (zh) 来自计算机应用元数据的平台支持集群
CN101308505A (zh) 提供对远程资源数据的访问的方法和数据处理系统
CN109074378B (zh) 模块化电子数据分析计算系统
CN103049565A (zh) 应用程序实例和查询存储
US10134067B2 (en) Autocomplete of searches for data stored in multi-tenant architecture
US8122002B2 (en) Information processing device, information processing method, and program
US11514054B1 (en) Supervised graph partitioning for record matching
CN102270220A (zh) 跨多个源标识主导概念
CN103534697A (zh) 使用web数据训练口述对话系统中的统计对话管理器
US20170147652A1 (en) Search servers, end devices, and search methods for use in a distributed network
US20090030880A1 (en) Model-Based Analysis

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

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

Effective date of registration: 20150428

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

Termination date: 20160916