存储和发布内容存储设备的内容的制作方法

文档序号:6442043阅读:184来源:国知局
专利名称:存储和发布内容存储设备的内容的制作方法
存储和发布内容存储设备的内容背景技术
通过背景技术,内容存储设备为原始内容提供存储,其中这些原始内容随后被变换并在经由服务器的变换处理之后作为网页被显示给网站用户。对于其中服务大量内容的网页来说,通过具有内容存储设备的多个实例(instance),可以负载平衡对内容存储设备的读请求。例如,每一个实例可以具有能够处理请求负载的子集的整个集合的内容。
虽然多实例设计可以解决网站的读负载问题,但是这可能对于添加、更新或除去内容而言产生问题。常规地,内容发布者依靠具有若干不合需要限制的文件复制工具。例如,常规的内容发布者并不保证跨越(across)内容存储设备的实例的数据完整性(S卩,一些内容可能在存储设备的特定实例上是可用的,而在其他实例上是不可用的)。此外,由于常规的内容发布者不支持并行发布(publishing),所以每次一个请求、以任意的顺序不合需要地处理同时的发布请求。为此,由于同时的发布请求一次一个地、任意地进行处理,所以发布时间通常是不可预测的。此外,如果内容正在被更新,则这样的内容对于更新的时长而言是不可用于读取的。
上面描述的当前方法的缺陷仅用于提供常规系统的一些问题的概述,而不打算是详尽的。依据以下详细描述的回顾,现有技术具有的其他问题以及各种非限制实施例中的一些实施例的相应益处可能变得进一步明显的。发明内容
在这里提供简化的发明内容部分,以有助于能够基本或一般理解在更详细的描述部分和附图中跟随的示例的非限制实施例的各方面。然而,这个发明内容部分并不打算作为广泛或详尽的概述。相反,这个发明内容部分的唯一目的是以简化的形式介绍与一些示例的非限制实施例相关的一些概念作为随后的各种实施例的更详细描述的前奏。
根据一个或多个实施例及其相应的披露,各个方面结合发布数据存储设备的内容来描述。在一个这样的方面中,公开了一种设备,其包括被配置成执行在存储器中存储的计算机可执行组件的处理器。在这样的实施例内,计算机可执行组件包括内容存储组件、检测组件以及发布组件。内容存储组件被配置成执行存储操作,而检测组件被配置成检测存储操作的完成。对于这个实施例来说,存储操作将内容集的内容冗余地存储在与数据存储设备相关联的多个实例上。发布组件则被配置成响应于存储操作的完成来发布存储在多个实例中的内容。
在另一个方面中,公开一种便于发布数据存储设备的内容的方法。这个方法包括执行存储操作以及检测存储操作的完成。在这里,存储操作冗余地将内容集的内容存储在与数据存储设备相关联的多个实例上。该方法进一步包括发布存储在多个实例中的内容集的内容,以响应存储操作的完成。
在还一个方面中,公开一种便于管理数据集表中的内容的发布的方法。这个实施例包括生成数据集表,以便于存储内容集的内容,其中所述内容包括净荷和元数据。该方法也包括将内容的净荷存储在净荷表上,以及将内容的元数据存储在元数据表上。在这里,数据集表包括指向净荷表的外部键(foreign key),而元数据表包括指向数据集表的外 部键。该方法进一步包括监视数据集表以确定这些内容的存储状态,以及基于存储状态来 发布这些内容。在下面更详细地描述其他的实施例以及各种非限制示例、情景和实现方式。


图1是根据本主题说明书的方面用于发布数据存储设备的内容的示例系统的概 述。图2是根据一个实施例用于发布内容存储设备的内容的示例处理的图示。图3是根据一个实施例包括多个内容版本的示例实例的图示。图4示出根据本主题说明书的示例发布单元的框图。图5是根据一个实施例、实行发布内容存储设备的内容的组件的示例耦合的图示。图6是根据一个实施例、便于发布内容存储设备的内容的示例表格的图示。图7是根据本主题说明书的方面的示例发布管理单元的框图。图8是根据一个实施例、实行管理数据集表中的内容的发布的组件的示例耦合的 图示。图9是示出根据一个实施例用于存储内容的示例方法的流程图。图10是示出根据一个实施例用于发布内容的示例方法的流程图。图11是代表其中能够实现在这里描述的各个实施例的示例的非限制联网环境的 框图。图12是代表其中能够实现在这里描述的各个实施例的一个或多个方面的示例的 非限制计算系统或操作环境的框图。
具体实施例方式现在参考附图来描述各种实施例,其中相同的参考数字始终用于指示相同的元 素。在以下描述中,为了解释的目的,阐述许多具体细节,以便提供一个或多个实施例的全 面理解。然而,这样的一个或多个实施例可以在没有这些具体细节的情况下进行实践,这可 能是明显的。在其他的实例中,为了便于描述一个或多个实施例,众所周知的结构和设备以 框图形式来显示。概述
如前所述,对于其中服务大容量内容的网页的读请求可以通过将这样的内容存储在多 个实例中进行负载平衡。例如,与特别流行的网页相关联的内容可以冗余地跨越多个实例 进行存储,以便于从这样的网页接收的请求的飙升(spike)。但是,这个内容可能包括被频 繁添加和/或更新的内容。例如,流行电视节目的视频可能在播放新的剧集时定期地被添 力口。在这里,为了满足对于这样的剧集的大容量需求,相应视频数据的多个实例可以跨越各 个机器进行存储。然而,如果确实将新的剧集冗余地跨越多个机器进行存储的话,那么同步 这些剧集的可用性将是合乎需要的。例如,同步可用性可以确保新添加的剧集同时一致地 可用于所有的用户。如果没有这样的同步,那么将因而难以确定是否以及何时已成功地将特定的实例更新为包括用于新添加剧集的视频。此外,由于新的剧集可能尚未成功地存储在多个实例中的一些实例上,所以将难以确定应该使得多个实例中的哪一个(一些)实例可用于用户,如果有的话。
为此,本主题说明书公开便于存储和发布与多实例设计相关联的内容的各个方面。如在这里所描述的,“存储”内容被定义成跨越多个实例冗余地添加、更新或除去数据的处理,而“发布”内容被定义成使得这样的数据的添加、更新或除去同时可用于对于这些实例中的每一个实例的读访问的处理。例如,“存储”内容可以指的是跨越多个实例添加、 更新或除去与特定电视剧集相对应的视频,而“发布”内容可以指的是使得这样的视频的添加、更新或除去可用于这些实例中的每一个实例的读访问。此外,如在这里使用的,“内容存储设备”被定义成与特定的存储/发布处理相关联的实例的集合。
为了实现有效的多实例设计,期望研制展现特定特性的存储和发布机制。例如,期望实现一种机制,其能够将内容发布给多个实例,同时保证跨越内容存储设备的多个实例的数据完整性。此外,期望内容存储设备的所有实例具有相同的确切内容。也期望该机制是快速的,使得跨越所有实例的发布性能不会随着发布实例的数量而线性地降级。
其他期望的方面也被预期。例如,允许并行发布请求给内容存储设备是合乎需要的,以及实现在发布处理期间不阻止内容存储设备服务内容的机制也是合乎需要的。也期望该机制指示发布处理完成并且所发布的内容在内容存储设备的所有实例上是可用的。而且,期望每个发布请求包括多个内容片,其中所有的内容片同时是原子(atomically)可用的。
在一个方面,跨越多个实例在两个不同的步骤中存储和发布内容。首先,执行存储步骤,在该存储步骤中将要发布的数据被并行存储在内容存储设备的所有实例上。为此,这样的存储步骤包括对于最终存储设备,添加、更新或除去数据,其中这样的数据的添加、更新或除去还不可用于消费者。依据存储步骤的完成,执行发布步骤,其中使得存储的内容同时在存储设备的所有实例上可用于消费者。在下面,这样的发布步骤被定义成其中同时使得经由存储步骤存储的数据在所有端点上是可用的步骤。
接下来参考图I,显示根据一个方面用于存储和发布内容的示例系统的概述。如所示的,系统100包括经由网络110通信地耦合的数据消费者120、内容提供者130、内容存储设备140以及发布单元150。在一个方面中,数据消费者120经由网络110向内容提供者 130请求内容,其中这样的请求可以包括对于网页及其对应内容的请求。在这样的实施例内,内容提供者130提供由内容存储设备140服务的内容。此外,预期内容存储设备140 托管(host)内容,其中这样的内容基于由发布单元150提供的指令来存储和发布。
接下来参考图2,提供根据一个实施例用于经由发布单元150存储和发布内容的示例处理。如所示的,这样的机制可以被分成两个不同的步骤。首先,执行存储步骤,在该存储步骤中,内容被并行存储在多个实例上。对于这个特定示例来说,内容被存储在K个实例上,这些实例包括实例200、实例210、实例220直至实例K 230。在一个方面中,预期重试将内容存储在实例200、实例210、实例220和/或实例K 230中的任一实例上的失败尝试。在这样的实施例内,如果存储内容的后续尝试继续失败,则从存储操作中除去失败的实例。
依据完成存储步骤,发布步骤开始。在这里,应该注意这样的发布步骤可以被实现为包括K个个别的发布事务尝试的分布式事务(transaction)。即,这样的分布式事务通过个别地确定是否每一个实例能够发布经由存储步骤存储的内容来链接实例。例如,假设实例200和实例210确实能够发布存储的内容,那么第一分布式发布事务链接实例200和实例210,如所示的。为此,预期能够重试发布实例200、实例210、实例220和/或实例K 230中的任一实例的内容的失败尝试。应意识到例如,多个原因中的任一原因可能导致发布尝试失败,这包括在与特定实例相关联的机器上缺少资源。如果发布内容的后续尝试继续失败,则从分布式事务中除去失败的实例。一旦已完成了分布式事务,同时提交在分布式事务中包括的每一个实例,以便发布给消费者。
在进一步方面中,注意多个内容版本可能跨越多个实例在任何指定时间存在。例如,如图3所示,实例300、实例310和实例K 320中的每一个包括旧内容和新内容,其中旧内容指的是在存储操作之前的内容,并且其中新内容指的是在存储操作之后的内容。在这里,预期这样的旧内容和新内容继续共存,直至执行“清理(clear-up)”操作。此外,预期 实施清理操作,其中旧内容根据需要周期性地从实例300、实例310和/或实例K 320中删除(例如,在每日基础上、依照资源的可用性等等来删除)。
应该注意甚至在已存储了新内容之后,有时也可能期望发布旧内容。对于实时发布体育统计数据来说,例如,由于时常通过进一步检查来取消统计数据(例如,通过即时回放),所以这样的特征可能是特别合乎需要的。为此,由于所公开的机制被分成两个步骤,所以只要旧内容保持在内容存储设备中,就能够在存储步骤完成之后执行旧内容的发布。即, 只要前述的清理操作还没有发生,则多个内容版本将继续驻留在内容存储设备中。相应地, 在一个方面中,发布步骤可以指向较新版本的内容或较旧版本的内容。
接下来参考图4,提供根据一个实施例便于存储和发布内容的示例发布单元的框图。如所示的,发布单元400可以包括处理器组件410、存储器组件420、存储组件430、检测组件440以及发布组件450。在这里,应该注意发布单元400 —般与图I所示的发布单元 150相类似。
在一个方面中,处理器组件410被配置成运行与执行多个功能中的任何一个功能相关的计算机可读指令。处理器组件410可以是单个处理器或多个处理器,其专用于分析将从发布单元400传送的信息和/或生成能够被存储器组件420、存储组件430、检测组件 440和/或发布组件450利用的信息。附加地或可选择地,处理器组件410可以被配置成控制发布单元400的一个或多个组件。
在另一个方面中,存储器组件420耦合到处理器组件410,并且被配置成存储由处理器组件410运行的计算机可读指令。存储器组件420也可以被配置成存储多个其他类型的数据中的任一数据,其包括由存储组件430、检测组件440和/或发布组件450中的任一组件生成的数据。存储器组件420可以采用多种不同的配置来配置,这包括被配置成随机存取存储器、电池供电的存储器、硬盘、磁带等等。在存储器组件420上也能够实现各种特征,诸如压缩和自动备份(例如,独立驱动器冗余阵列配置的使用)。
如所示的,发布单元400也能够包括被配置成执行存储操作的存储组件430。在一个方面中,这样的存储操作冗余地将内容存储在与诸如图I所示的内容存储设备140之类的内容存储设备相关联的多个存储位置上。在特定实施例中,存储操作是并行的存储操作,其并行地将内容冗余存储在多个实例上。在这样的实施例内,存储组件430被配置成重试将内容存储在特定实例上的失败尝试,其中这样的失败可能由于多个原因中的任一原因 (例如,在与特定实例相关联的机器上缺少资源)而引起,并且其中将内容存储在特定实例上的尝试次数可以基于各种因素(例如,实例的量相对于处理时间的权衡)而改变。在这里, 预期存储组件430可以进一步被配置成基于将内容存储在特定实例上的重复失败而从并行的存储操作中除去特定实例。进一步预期存储组件430可以被配置成实现其中周期性地(例如,在每日基础上、依照资源的监视等等)删除先前存储版本的内容的“清理”特征。 在另一个方面中,应该注意存储组件430可以被配置成对至少一个结构化查询语言(SQL) 数据库执行存储操作。
如所示的,发布单元400也包括检测组件440和发布组件450。在这样的实施例内, 检测组件440被配置成检测前述的存储操作的完成(S卩,跨越多个实例添加、更新或除去内容的结束),而发布组件450被配置成发布存储在多个实例中的内容,以响应存储操作的完成。在一个方面中,发布组件450被配置成经由分布式事务来发布内容,其中分布式事务尝试发布多个实例中的每一个实例的内容。预期发布组件450可以被配置成重试发布(SP, 使之可用)来自特定实例的内容的失败尝试。在这里,类似于存储操作,应该注意这样的失败可能是由于多个原因中的任一原因(例如,在与特定实例相关联的机器上缺少资源)而引起的。对于这个特定实施例来说,发布组件450可以进一步被配置成基于发布特定实例中的内容的后续失败而从分布式事务中除去特定实例。此外,在另一个方面中,发布组件450 被配置成根据需要来发布先前存储版本的内容,而不是新近存储版本的内容。实际上,对于这个特定实施例来说,发布组件450可以被配置成与存储组件430协作来在周期性“清理” 操作之前发布先前存储的版本,其中在周期性“清理”操作中这样的版本可以被删除和/或被引导到档案(archive)。
转到图5,不出的是根据一个实施例便于发布内容存储设备的内容的系统500。例如,系统500和/或用于实现系统500的指令可以驻留在计算设备(例如,发布单元400)或计算机可读存储介质内。如所述的,系统500包括能够代表由处理器、软件或其组合(例如, 固件)实现的功能的功能块。系统500包括能够一起行动的组件的逻辑分组502。如所示的,逻辑分组502能够包括用于执行冗余地将内容集的内容存储在多个实例510上的存储操作的组件。逻辑分组502也能够包括用于检测存储操作512的完成的组件。进一步,逻辑分组502可以包括用于响应于存储操作514的完成而发布存储在多个实例中的内容的组件。此外,系统500还能够包括保持用于执行与组件510、512和514相关联的功能的指令的存储器520,其中组件510、512和514中的任一组件能够存在于存储器520之内或之外。
接下来参考图6,提供根据一个实施例便于存储和发布内容存储设备的内容的示例表格的图示。如所示的,这样的示例表格可以包括数据集表610、净荷表620、元数据表 630、发布表640以及内容表650。在这里,在特定的方面中,预期内容发布者(Content Publisher)对于是内容集(Content Set)的一部分的所有内容调用存储内容(Store Contents)处理。对于将被存储的每一个内容,内容发布者调用存储内容(StoreContent) 应用编程接口(API)来便于存储内容处理。例如,这样的API可以用于在数据集表610中创建内容数据集(Content Data Set)行,其中内容数据作为各种其他表格中的行、利用与内容数据集行的关系进行存储。在一个方面中,如果这是新内容(即,将被添加的内容),那么在内容表650中利用空的内容数据集Id (ContentDataSetId)来创建新的行。为此,预期跨越内容存储设备的所有实例,并行完成这样的处理。
如图6所示,存储在内容数据集表610中的内容与相应的净荷(Payload)以及元数据(Metadata)相关联。在特定实施例中,只有一个净荷与特定内容相关联。在这样的实施例内,内容数据集-净荷关系利用数据集表610中的外部键612来描述。在这里,应该注意诸如外部键612之类的外部键识别一个(引用)表格中的列或列的集合,并且所述一个 (引用)表格涉及另一个(被引用)表格中的列的集合。为此,外部键也能够用于描述内容数据的其他任何的一对一关系。对于元数据表630,进一步注意多个元数据部分可以与特定内容相关联。对于这个实施例来说,内容数据集-元数据(ContentDataSet-Metadata)关系利用元数据表630中的外部键632来描述,其中这样的描述能够用于内容数据的任何的一对多关系。
在一个方面中,数据集表610中的每一个内容数据集行与发布表640中的行相关联。在这里,预期发布表640能够用于跟踪已被存储但尚未被发布的所有的内容片。为了便于这样的跟踪,发布表640内的每一个发布项(PublishItem)可以与数据集表610内的内容数据集(ContentDataSet)相关联,其随后在完成发布内容处理时可作为(例如,由 ContentSetId来定义)集合来利用。为此,注意发布表640可以包括外部键642来描述发布表640与数据集表610之间的关系以及包括外部键644来描述发布表640与内容表650 之间的关系。进一步注意内容表650与数据集表610之间的关系被用作发布内容处理的一部分,并利用内容表650中的外部键652来描述。
在一个方面中,在集合中的所有内容被存储在数据集表610时,发布内容处理随后使得所有那些存储的内容可用于消费。为了便于这样的处理,利用特定的内容集Id (ContentSetId)来调用发布内容(PublishContent)API。在这样的实施例内,发布内容API 横跨内容存储设备的所有有效的实例来创建分布式事务。此外,利用存储内容处理先前存储的内容在单个事务中被“激活”。例如,对于属于内容集Id的行,可以监视发布表640。随后能够在内容表650与数据集表610之间创建关系。一旦对于集合中的所有内容以及对于内容存储设备中的所有实例完成这个处理,跨越所有有效的实例提交分布式事务,这使得整个内容集是可用的。
接下来参考图7,框图示出根据各个方面被配置成管理数据集表中的内容的发布的示例的发布管理单元。如所示的,发布管理单元700可以包括处理器组件710、存储器组件720、生成组件730、净荷组件740、元数据组件750、监视组件760以及发布组件770。在这里,应该注意发布管理单元700可以驻留在图I所示的发布单元150内。
与发布单元400中的处理器组件410相类似,处理器组件710被配置成运行与执行多个功能中的任一功能相关的计算机可读指令。处理器组件710可以是单个处理器或多个处理器,其专用于分析将从发布管理单元700传送的信息和/或生成能够由存储器组件 720、生成组件730、净荷组件740、元数据组件750、监视组件760和/或发布组件770使用的信息。附加地或可选择地,处理器组件710可以被配置成控制发布管理单元700的一个或多个组件。
在另一个方面中,存储器组件720被耦合到处理器组件710,并且被配置成存储由处理器组件710运行的计算机可读指令。存储器组件720也可以被配置成存储多个其他类型的数据中的任一数据,其包括由生成组件730、净荷组件740、元数据组件750、监视组件760和/或发布组件770生成的数据。在这里,应该注意存储器组件720与发布单元400 中的存储器组件420相类似。相应地,应该意识到存储器组件420的任一前述的特征/配置也适用于存储器组件720。
在还一个方面中,发布管理单元700包括被配置成生成数据集表(例如,数据集表 610)的生成组件730。例如,生成组件730可以被配置成生成便于存储内容集的内容的数据集表。在这里,应该注意这样的内容可以被复制到多个位置(例如,多个SQL数据库)中的任一位置上,其中这些内容的存储和发布能够通过由生成组件730生成的数据集表来管理。
对于一些实施例来说,预期内容可以与相应的净荷以及元数据相关联。如所示的,为了促进这样的实施例,发布管理单元700可以包括净荷组件740以及元数据组件750。 在一个方面中,净荷组件740可以被配置成将这些内容的净荷存储在净荷表(例如,净荷表 620)中,而元数据组件750能够被配置成将这些内容的元数据存储在元数据表(例如,元数据表630)上。在这里,如先前结合图6所述的,表格之间的关系借助外部键是可描述的。例如,由生成组件730生成的数据集表可以包括指向净荷表的外部键(即,以便于描述内容表与净荷表之间潜在的一对一关系),而元数据表可以包括指向数据集表的外部键(即,以便于描述内容表与元数据表之间潜在的一对多关系)。
如所示的,发布管理单元700也可以包括监视组件760。在这样的实施例内,监视组件760可以被配置成监视由生成组件730生成的数据集表。特别地,监视组件760可以被配置成确定这些内容的存储状态(例如,确定存储操作是否完成)。发布组件770随后可以被配置成基于存储状态来发布这些内容。例如,发布组件770能够被配置成放弃(forego)发布内容,直至接收到跨越多个所需实例提交了这些内容的存储的确认。为此,应该注意发布组件770能够被配置成经由分布式事务来发布多个实例中的内容。在这样的实施例内, 发布组件770进一步被配置成重试发布特定实例中的内容的失败尝试。实际上,由于后续发布尝试也可能失败,所以发布组件770可以被配置成基于发布特定实例中的内容的后续失败而从分布式事务中除去该特定实例。依据完成分布式事务,发布组件770随后可以被配置成同时发布存储在该事务中包括的多个实例中的内容。
转到图8,示出的是根据一个实施例、便于管理数据集表中的内容的发布的系统 800。例如,系统800和/或用于实现系统800的指令可以驻留在计算设备(例如,发布管理单元700)或计算机可读存储介质内。如所述的,系统800包括代表由处理器运行的功能的功能块。此外,系统800包括与系统500中的逻辑分组502相似的能够一起行动的组件的逻辑分组802。如所示的,逻辑分组802能够包括用于生成数据集表以便于存储内容集810 的内容的组件以及用于将内容的净荷存储在净荷表812上的组件。逻辑分组802也能够包括用于将内容的元数据存储在元数据表814上的组件。进一步,逻辑分组802能够包括用于监视数据集表以确定内容816的存储状态的组件以及用于基于存储状态818来发布内容的组件。此外,系统800还可以包括保持用于执行与组件810、812、814、816和818相关联的功能的指令的存储器820。虽然被显示在存储器820的外部,但是将明白组件810、812、 814,816和818组件能够存在于存储器820内。
如先前所述的,预期跨越多个实例在两个不同的步骤中存储和发布内容。接下来参考图9,提供示出根据一个实施例、便于存储内容的示例方法900的流程图。如所示的,根9据本主题说明书的一个方面,方法900包括可以由计算设备执行的一系列动作。例如,通过采用处理器执行存储在计算机可读存储介质上的计算机可执行指令以实现这一系列动作, 可以实现方法900。在另一个实施例中,公开包括用于实现这一系列动作的代码的计算机可读存储介质。
如所示的,方法900通过在动作905调用存储算法来开始。对于这个特定示例,在动作910检索内容存储实例的列表,并且随后在动作915选择该列表内的实例的子集。在一个方面,内容随后在动作920开始经由并行事务而被存储在每一个选择的实例上。
为此,预期方法900可以在动作925确定特定内容是否包括净荷。如果该内容包括净荷,则在动作930创建新的内容净荷记录,其后面跟随着在动作935创建新的内容数据集(ContentDataSet)记录。否则,如果在动作925确定该内容并不包括净荷,则方法900直接进行到动作935。
一旦在动作935已创建了内容数据集记录,则随后在动作940创建描述内容数据集记录的新的内容元数据记录。方法900随后在动作945确定是否特定内容包括记录。如果该内容尚未包括记录,则在动作950创建新的内容记录,其后面跟随着在动作955创建新的发布项(PublishItem)记录。否则,如果在动作945确定该内容确实已包括记录,则方法 900直接进行到动作955。
对这个特定示例来说,一旦创建了新的发布项记录,则方法900能够进行到动作 960,其中在动作960能够提交并行存储事务。此外,由于该事务并行地将内容存储在实例上,所以预期提交这样的并行事务包括同时提交其中已成功地存储了该内容的每一个实例。方法900随后在其中存储算法结束的动作965结束。
接下来参考图10,提供示出根据一个实施例、便于发布内容的示例方法1000的流程图。在这里,注意发布这样的内容的处理是在图9中所述的存储处理完成之后才开始的不同步骤。如所示的,根据本主题说明书的一个方面,方法1000包括可以由计算设备执行的一系列动作。例如,方法1000可以通过采用处理器执行存储在计算机可读存储介质上的计算机可执行指令以实现这一系列动作来实现。在另一个实施例中,预期包括用于实现这一系列动作的代码的计算机可读存储介质。
如所示的,在动作1010,方法1000通过调用发布算法来开始。对于这个特定示例, 在动作1020检索内容存储实例的列表,其中分布式发布事务随后在动作1030开始。此外, 预期在动作1040选择的多个实例上执行这样的分布式事务。
一旦选择实例,则在动作1050更新具有相应内容集Id (ContentSetId)的每一个内容,以包括合适的内容数据集Id。方法1000随后可以进行至其中执行是否在分布式事务中包括附加实例的确定的动作1060。如果确实包括附加实例,则方法1000环回到其中选择后续实例的动作1040。否则,如果在动作1060确定不包括附加实例,则方法1000进行至其中提交分布式发布事务的动作1070。为此,预期提交这样的分布式事务包括同时提交其中已成功地发布了内容的每一个实例。方法1000随后在其中发布算法结束的动作1080结束。依据发布算法的结束,使得分布式事务中包括的实例内的内容可用于读访问。
示例的联网和分布式环境本领域普通技术人员能够意识到这里描述的用于发布内容存储设备的内容的方法和设备的各个实施例以及相关的实施例能够结合任何的计算机或其他的客户机或服务器设备来实现。在这点上,这里描述的各个实施例能够在具有任意数量的存储器或存储单元以及跨越任意数量的存储单元发生的任意数量的应用和处理的任何计算机系统或环境中进行实现。这包括但不限于具有部署在网络环境或分布式计算环境中具有远程或本地存储设备的服务器计算机和客户机计算机的环境。
图11提供示例的联网或分布式计算环境的非限制示意图。分布式计算环境包括计算对象1110、1112等等以及计算对象或设备1120、1122、1124、1126、1128等等,其可以包括利用应用1130、1132、1134、1136、1138表示的程序、方法、数据存储设备、可编程逻辑等等。能够意识到对象1110、1112等等以及计算对象或设备1120、1122、1124、1126、1128等等可以包括不同的设备,诸如PDA、音频/视频设备、移动电话、MP3播放器、膝上型计算机等坐寸o
每一个对象1110,1112等等以及计算对象或设备1120、1122、1124、1126、1128等等能够通过通信网络1140或直接地或间接地与一个或多个其他对象1110、1112等等以及计算对象或设备1120、1122、1124、1126、1128等等通信。即使在图11中被图示为单个元件, 但是网络1140可以包括向图11的系统提供服务的其他的计算对象和计算设备,和/或可以代表多个未显示的互连网络。每一个对象1110、1112等等或1120、1122、1124、1126、1128 等等也能够包含应用,诸如应用1130、1132、1134、1136、1138,其可能利用API或其他的对象、软件、固件和/或硬件,其适合于与用于信息的基础架构通信或实现用于信息的基础架构作为根据各个实施例提供的来自任何平台的服务。
应该注意能够利用网络拓扑结构和网络基础架构中的主机,诸如客户机/服务器、对等或混合结构。在客户机/服务器结构中,尤其在联网系统中,客户机通常是访问由例如服务器之类的另一个计算机提供的共享网络资源的计算机。在图11的图示中,作为非限制示例,计算机1120、1122、1124、1126、1128等等可以被认为是客户机,而计算机1110、 1112等等可以被认为是服务器,其中服务器1110、1112等等提供数据服务,诸如接收来自客户计算机1120、1122、1124、1126、1128等等的数据、存储数据、处理数据、发送数据给客户计算机1120、1122、1124、1126、1128等等,但是取决于环境,任何的计算机可以被认为是客户机、服务器或这二者。这些计算设备之中的任何一个可能在处理数据或请求服务或任务,其可能暗指用于信息的基础架构为在这里针对一个或多个实施例描述的任何平台以及相关技术的服务。
服务器通常是通过诸如因特网或无线网络基础架构之类的远程或本地网络可访问的远程计算机系统。客户机处理可以在第一计算机系统中是激活的,而服务器处理可以在第二计算机系统中是激活的,其中这二个计算机系统通过通信介质彼此通信,从而提供分布式功能并允许多个客户机利用服务器的信息收集能力。依照用户简档(profiling)使用的任何软件对象可以被单独提供或跨越多个计算设备或对象被分布。
例如,在其中通信网络/总线1140是因特网的网络环境中,服务器1110、1112等等可以是Web (网络)服务器,其中客户机1120、1122、1124、1126、1128等等经由诸如HTTP 之类的许多已知协议中的任一协议与Web服务器通信。服务器1110、1112等等也可以用作客户机1120、1122、1124、1126、1128等等,因为这可能是分布式计算环境的特性。
示例计算设备如所提及的,这里描述的各种实施例适用于任何设备,其中可能期望实现基础架构之一或基础架构的某些部分来发布内容存储设备的内容。因此,应该明白预期所有类型的手持、便携和其他的计算设备以及计算对象与这里描述的各种实施例结合使用,即,无论何处设备可以结合用于信息的基础架构作为来自任何平台的服务来提供某些功能。相应地,下面在图12中描述的通用计算机仅仅是一个示例,并且本主题披露的实施例可以利用任何的具有网络/总线互操作性以及交互的客户机来实现。
参考图12,用于实现这里的一个或多个实施例的示例计算环境1200能够包括采用手持计算机1210的形式的通用计算设备。手持计算机1210的组件可以包括但不限于处理单元1220、系统存储器1230以及将包括系统存储器在内的各个系统组件耦合到处理单元1220的系统总线1221。
计算机1210通常包括各种计算机可读媒体并且可以是任何的能被计算机1210访问的可用媒体。系统存储器1230可以采用诸如只读存储器(ROM)和/或随机存取存储器 (RAM)之类的易失性和/或非易失性存储器的形式包括计算机存储媒体。通过示例而非限制,存储器1230也可以包括操作系统、应用程序、其他程序模块以及程序数据。
用户可以通过输入设备1240将命令和信息输入计算机1210。监视器或其他类型的显示设备也经由诸如输出接口 1250之类的接口连接到系统总线1221。除了监视器之外, 计算机还可以包括其他的外设输出设备,诸如扬声器和打印机,其可以通过输出接口 1250 进行连接。
计算机1210可以使用至诸如远程计算机1270之类的一个或多个远程计算机的逻辑连接而操作在联网或分布式环境中。远程计算机1270可以是个人计算机、服务器、路由器、网络PC、对等设备或其他的常用网络节点、或其他任何的远程媒体消费或传输设备,并且可以包括上面相对于计算机1210描述的任一或所有的元素。图12中描述的逻辑连接包括网络1271,诸如局域网(LAN)或广域网(WAN),但也可以包括其他的网络/总线。这样的联网环境在住宅、办公室、企业范围计算机网络、内部网和因特网中是司空见惯的。
如所提及的,这里描述的各种技术可以结合硬件或软件来实现,或者可以酌情结合软硬件二者的组合来实现。如在这里使用的,术语“组件”、“系统”等等同样用于指示计算机相关的实体,其可以是硬件、硬件与软件的组合、软件或运行中的软件。例如,组件可以是但不限于在处理器上运行的处理、处理器、对象、可执行文件、运行的线程、程序和/或计算机。通过示意,在计算机上运行的应用和计算机二者可以是组件。一个或多个组件可以驻留在处理和/或运行的线程内,并且组件可以位于一个计算机上和/或被分布在两个或更多计算机之间。
上述的系统已针对若干组件之间的交互进行描述了。能够意识到这样的系统和组件可以包括那些组件或指定的子组件、指定的组件或子组件中的一些、和/或附加组件, 并且依据前述的各种排列和组合。子组件也可以被实现为通信地耦合到其他组件的组件, 而不被包括在父组件(分等级)内。此外,应该注意一个或多个组件可以被组合成提供聚合功能的单个组件或者被分成若干个单独的子组件,并且诸如管理层之类的任何一个或多个中间层可以被提供来通信地耦合到这样的子组件,以便提供综合功能。这里描述的任何组件也可以与这里没有具体描述但是一般为本领域技术人员所知的一个或多个其他组件进行互动。
虽然结合各个附图的优选实施例描述了各个实施例,但是将明白在不偏离这些实施例的情况下,可以使用其他类似的实施例,或者可以对所描述的用于执行相同功能的实施例进行修改和补充。更进一步,上述实施例的一个或多个方面可以在多个处理芯片或设备中进行实现,或跨越多个处理芯片或设备来实现,并且存储可以类似地跨越多个设备来进行。因此,本发明不应限于任何单个实施例,而应该以根据所附的权利要求书的宽度和范围来解释。
权利要求
1.一种设备,包括处理器,被配置成执行存储在存储器中的计算机可执行组件,所述组件包括被配置成执行存储操作的存储组件,其中存储操作将内容集的内容冗余地存储在与数据存储设备相关联的多个实例上;检测组件,被配置成检测存储操作的完成;以及发布组件,被配置成发布存储在多个实例中的内容,以响应存储操作的完成。
2.权利要求I的设备,其中存储组件被配置成周期性地删除先前存储版本的内容。
3.权利要求I的设备,其中发布组件被配置成发布先前存储版本的内容而不是新近存储版本的内容。
4.权利要求I的设备,其中存储操作同时将内容冗余地存储在多个实例上。
5.权利要求4的设备,其中如果存储内容的先前尝试已失败,则存储组件被配置成重新开始尝试将内容存储在特定实例上,以及其中存储组件进一步被配置成基于将内容存储在特定实例上的后续失败而从并行存储操作中除去特定实例。
6.权利要求I的设备,其中发布组件被配置成经由分布式事务来发布内容,以及其中分布式事务尝试发布多个实例之中每一个实例中的内容。
7.权利要求6的设备,其中如果发布内容的先前尝试已失败,则发布组件被配置成重新开始尝试发布特定实例中的内容,以及其中发布组件进一步被配置成基于发布特定实例中的内容的后续失败而从分布式事务中除去特定实例。
8.权利要求I的设备,其中存储组件被配置成对至少一个结构化查询语言(SQL)数据库执行存储操作。
9.一种方法,包括采用处理器来执行存储在计算机可读存储介质上的计算机可执行指令,以实现包括以下的一系列动作执行存储操作,其中存储操作将内容集的内容冗余地存储在与数据存储设备相关联的多个实例上;检测存储操作的完成;以及发布存储在多个实例中的内容集的内容,以响应存储操作的完成。
10.权利要求9的方法,其中存储操作的执行包括周期性地删除先前存储版本的内容。
11.权利要求9的方法,其中发布包括发布先前存储版本的内容而不是新近存储版本的内容。
12.权利要求9的方法,其中存储操作的执行包括并行地将内容冗余地存储在多个实例上。
13.权利要求12的方法,进一步包括如果存储内容的先前尝试已失败,则重新开始尝试将内容存储在特定实例上,其中存储操作的执行包括基于将内容存储在特定实例上的后续失败而从存储操作中除去特定实例。
14.权利要求9的方法,其中发布包括经由分布式事务来发布内容,以及其中分布式事务尝试发布多个实例之中每一个实例的内容。
15.权利要求9的方法,其中发布包括同时提交多个实例的发布。
全文摘要
披露用于发布内容存储设备的内容的各方面。执行存储操作,并且检测存储操作的完成。在这里,存储操作将内容集的内容冗余地存储在与内容存储设备相关联的实例上。存储在实例中的内容随后响应于存储操作的完成而被发布。在另一方面,生成数据集表,以便于存储包括净荷和元数据的内容集的内容。净荷被存储在净荷表上,而元数据被存储在元数据表上。对于这个实施例,数据集表包括指向净荷表的第一外部键,而元数据表包括指向数据集表的第二外部键。监视数据集表,以确定这些内容的存储状态,并且这些内容随后基于存储状态而被发布。
文档编号G06F9/44GK102541542SQ20111042625
公开日2012年7月4日 申请日期2011年12月19日 优先权日2010年12月17日
发明者H.班德里奥, R.克勒, R.贝雷斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1