亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

存儲和發(fā)布內容存儲設備的內容的制作方法

文檔序號:6442043閱讀:199來源:國知局
專利名稱:存儲和發(fā)布內容存儲設備的內容的制作方法
存儲和發(fā)布內容存儲設備的內容背景技術
通過背景技術,內容存儲設備為原始內容提供存儲,其中這些原始內容隨后被變換并在經由服務器的變換處理之后作為網頁被顯示給網站用戶。對于其中服務大量內容的網頁來說,通過具有內容存儲設備的多個實例(instance),可以負載平衡對內容存儲設備的讀請求。例如,每一個實例可以具有能夠處理請求負載的子集的整個集合的內容。
雖然多實例設計可以解決網站的讀負載問題,但是這可能對于添加、更新或除去內容而言產生問題。常規(guī)地,內容發(fā)布者依靠具有若干不合需要限制的文件復制工具。例如,常規(guī)的內容發(fā)布者并不保證跨越(across)內容存儲設備的實例的數(shù)據(jù)完整性(S卩,一些內容可能在存儲設備的特定實例上是可用的,而在其他實例上是不可用的)。此外,由于常規(guī)的內容發(fā)布者不支持并行發(fā)布(publishing),所以每次一個請求、以任意的順序不合需要地處理同時的發(fā)布請求。為此,由于同時的發(fā)布請求一次一個地、任意地進行處理,所以發(fā)布時間通常是不可預測的。此外,如果內容正在被更新,則這樣的內容對于更新的時長而言是不可用于讀取的。
上面描述的當前方法的缺陷僅用于提供常規(guī)系統(tǒng)的一些問題的概述,而不打算是詳盡的。依據(jù)以下詳細描述的回顧,現(xiàn)有技術具有的其他問題以及各種非限制實施例中的一些實施例的相應益處可能變得進一步明顯的。發(fā)明內容
在這里提供簡化的發(fā)明內容部分,以有助于能夠基本或一般理解在更詳細的描述部分和附圖中跟隨的示例的非限制實施例的各方面。然而,這個發(fā)明內容部分并不打算作為廣泛或詳盡的概述。相反,這個發(fā)明內容部分的唯一目的是以簡化的形式介紹與一些示例的非限制實施例相關的一些概念作為隨后的各種實施例的更詳細描述的前奏。
根據(jù)一個或多個實施例及其相應的披露,各個方面結合發(fā)布數(shù)據(jù)存儲設備的內容來描述。在一個這樣的方面中,公開了一種設備,其包括被配置成執(zhí)行在存儲器中存儲的計算機可執(zhí)行組件的處理器。在這樣的實施例內,計算機可執(zhí)行組件包括內容存儲組件、檢測組件以及發(fā)布組件。內容存儲組件被配置成執(zhí)行存儲操作,而檢測組件被配置成檢測存儲操作的完成。對于這個實施例來說,存儲操作將內容集的內容冗余地存儲在與數(shù)據(jù)存儲設備相關聯(lián)的多個實例上。發(fā)布組件則被配置成響應于存儲操作的完成來發(fā)布存儲在多個實例中的內容。
在另一個方面中,公開一種便于發(fā)布數(shù)據(jù)存儲設備的內容的方法。這個方法包括執(zhí)行存儲操作以及檢測存儲操作的完成。在這里,存儲操作冗余地將內容集的內容存儲在與數(shù)據(jù)存儲設備相關聯(lián)的多個實例上。該方法進一步包括發(fā)布存儲在多個實例中的內容集的內容,以響應存儲操作的完成。
在還一個方面中,公開一種便于管理數(shù)據(jù)集表中的內容的發(fā)布的方法。這個實施例包括生成數(shù)據(jù)集表,以便于存儲內容集的內容,其中所述內容包括凈荷和元數(shù)據(jù)。該方法也包括將內容的凈荷存儲在凈荷表上,以及將內容的元數(shù)據(jù)存儲在元數(shù)據(jù)表上。在這里,數(shù)據(jù)集表包括指向凈荷表的外部鍵(foreign key),而元數(shù)據(jù)表包括指向數(shù)據(jù)集表的外 部鍵。該方法進一步包括監(jiān)視數(shù)據(jù)集表以確定這些內容的存儲狀態(tài),以及基于存儲狀態(tài)來 發(fā)布這些內容。在下面更詳細地描述其他的實施例以及各種非限制示例、情景和實現(xiàn)方式。


圖1是根據(jù)本主題說明書的方面用于發(fā)布數(shù)據(jù)存儲設備的內容的示例系統(tǒng)的概 述。圖2是根據(jù)一個實施例用于發(fā)布內容存儲設備的內容的示例處理的圖示。圖3是根據(jù)一個實施例包括多個內容版本的示例實例的圖示。圖4示出根據(jù)本主題說明書的示例發(fā)布單元的框圖。圖5是根據(jù)一個實施例、實行發(fā)布內容存儲設備的內容的組件的示例耦合的圖示。圖6是根據(jù)一個實施例、便于發(fā)布內容存儲設備的內容的示例表格的圖示。圖7是根據(jù)本主題說明書的方面的示例發(fā)布管理單元的框圖。圖8是根據(jù)一個實施例、實行管理數(shù)據(jù)集表中的內容的發(fā)布的組件的示例耦合的 圖示。圖9是示出根據(jù)一個實施例用于存儲內容的示例方法的流程圖。圖10是示出根據(jù)一個實施例用于發(fā)布內容的示例方法的流程圖。圖11是代表其中能夠實現(xiàn)在這里描述的各個實施例的示例的非限制聯(lián)網環(huán)境的 框圖。圖12是代表其中能夠實現(xiàn)在這里描述的各個實施例的一個或多個方面的示例的 非限制計算系統(tǒng)或操作環(huán)境的框圖。
具體實施例方式現(xiàn)在參考附圖來描述各種實施例,其中相同的參考數(shù)字始終用于指示相同的元 素。在以下描述中,為了解釋的目的,闡述許多具體細節(jié),以便提供一個或多個實施例的全 面理解。然而,這樣的一個或多個實施例可以在沒有這些具體細節(jié)的情況下進行實踐,這可 能是明顯的。在其他的實例中,為了便于描述一個或多個實施例,眾所周知的結構和設備以 框圖形式來顯示。概述
如前所述,對于其中服務大容量內容的網頁的讀請求可以通過將這樣的內容存儲在多 個實例中進行負載平衡。例如,與特別流行的網頁相關聯(lián)的內容可以冗余地跨越多個實例 進行存儲,以便于從這樣的網頁接收的請求的飆升(spike)。但是,這個內容可能包括被頻 繁添加和/或更新的內容。例如,流行電視節(jié)目的視頻可能在播放新的劇集時定期地被添 力口。在這里,為了滿足對于這樣的劇集的大容量需求,相應視頻數(shù)據(jù)的多個實例可以跨越各 個機器進行存儲。然而,如果確實將新的劇集冗余地跨越多個機器進行存儲的話,那么同步 這些劇集的可用性將是合乎需要的。例如,同步可用性可以確保新添加的劇集同時一致地 可用于所有的用戶。如果沒有這樣的同步,那么將因而難以確定是否以及何時已成功地將特定的實例更新為包括用于新添加劇集的視頻。此外,由于新的劇集可能尚未成功地存儲在多個實例中的一些實例上,所以將難以確定應該使得多個實例中的哪一個(一些)實例可用于用戶,如果有的話。
為此,本主題說明書公開便于存儲和發(fā)布與多實例設計相關聯(lián)的內容的各個方面。如在這里所描述的,“存儲”內容被定義成跨越多個實例冗余地添加、更新或除去數(shù)據(jù)的處理,而“發(fā)布”內容被定義成使得這樣的數(shù)據(jù)的添加、更新或除去同時可用于對于這些實例中的每一個實例的讀訪問的處理。例如,“存儲”內容可以指的是跨越多個實例添加、 更新或除去與特定電視劇集相對應的視頻,而“發(fā)布”內容可以指的是使得這樣的視頻的添加、更新或除去可用于這些實例中的每一個實例的讀訪問。此外,如在這里使用的,“內容存儲設備”被定義成與特定的存儲/發(fā)布處理相關聯(lián)的實例的集合。
為了實現(xiàn)有效的多實例設計,期望研制展現(xiàn)特定特性的存儲和發(fā)布機制。例如,期望實現(xiàn)一種機制,其能夠將內容發(fā)布給多個實例,同時保證跨越內容存儲設備的多個實例的數(shù)據(jù)完整性。此外,期望內容存儲設備的所有實例具有相同的確切內容。也期望該機制是快速的,使得跨越所有實例的發(fā)布性能不會隨著發(fā)布實例的數(shù)量而線性地降級。
其他期望的方面也被預期。例如,允許并行發(fā)布請求給內容存儲設備是合乎需要的,以及實現(xiàn)在發(fā)布處理期間不阻止內容存儲設備服務內容的機制也是合乎需要的。也期望該機制指示發(fā)布處理完成并且所發(fā)布的內容在內容存儲設備的所有實例上是可用的。而且,期望每個發(fā)布請求包括多個內容片,其中所有的內容片同時是原子(atomically)可用的。
在一個方面,跨越多個實例在兩個不同的步驟中存儲和發(fā)布內容。首先,執(zhí)行存儲步驟,在該存儲步驟中將要發(fā)布的數(shù)據(jù)被并行存儲在內容存儲設備的所有實例上。為此,這樣的存儲步驟包括對于最終存儲設備,添加、更新或除去數(shù)據(jù),其中這樣的數(shù)據(jù)的添加、更新或除去還不可用于消費者。依據(jù)存儲步驟的完成,執(zhí)行發(fā)布步驟,其中使得存儲的內容同時在存儲設備的所有實例上可用于消費者。在下面,這樣的發(fā)布步驟被定義成其中同時使得經由存儲步驟存儲的數(shù)據(jù)在所有端點上是可用的步驟。
接下來參考圖I,顯示根據(jù)一個方面用于存儲和發(fā)布內容的示例系統(tǒng)的概述。如所示的,系統(tǒng)100包括經由網絡110通信地耦合的數(shù)據(jù)消費者120、內容提供者130、內容存儲設備140以及發(fā)布單元150。在一個方面中,數(shù)據(jù)消費者120經由網絡110向內容提供者 130請求內容,其中這樣的請求可以包括對于網頁及其對應內容的請求。在這樣的實施例內,內容提供者130提供由內容存儲設備140服務的內容。此外,預期內容存儲設備140 托管(host)內容,其中這樣的內容基于由發(fā)布單元150提供的指令來存儲和發(fā)布。
接下來參考圖2,提供根據(jù)一個實施例用于經由發(fā)布單元150存儲和發(fā)布內容的示例處理。如所示的,這樣的機制可以被分成兩個不同的步驟。首先,執(zhí)行存儲步驟,在該存儲步驟中,內容被并行存儲在多個實例上。對于這個特定示例來說,內容被存儲在K個實例上,這些實例包括實例200、實例210、實例220直至實例K 230。在一個方面中,預期重試將內容存儲在實例200、實例210、實例220和/或實例K 230中的任一實例上的失敗嘗試。在這樣的實施例內,如果存儲內容的后續(xù)嘗試繼續(xù)失敗,則從存儲操作中除去失敗的實例。
依據(jù)完成存儲步驟,發(fā)布步驟開始。在這里,應該注意這樣的發(fā)布步驟可以被實現(xiàn)為包括K個個別的發(fā)布事務嘗試的分布式事務(transaction)。即,這樣的分布式事務通過個別地確定是否每一個實例能夠發(fā)布經由存儲步驟存儲的內容來鏈接實例。例如,假設實例200和實例210確實能夠發(fā)布存儲的內容,那么第一分布式發(fā)布事務鏈接實例200和實例210,如所示的。為此,預期能夠重試發(fā)布實例200、實例210、實例220和/或實例K 230中的任一實例的內容的失敗嘗試。應意識到例如,多個原因中的任一原因可能導致發(fā)布嘗試失敗,這包括在與特定實例相關聯(lián)的機器上缺少資源。如果發(fā)布內容的后續(xù)嘗試繼續(xù)失敗,則從分布式事務中除去失敗的實例。一旦已完成了分布式事務,同時提交在分布式事務中包括的每一個實例,以便發(fā)布給消費者。
在進一步方面中,注意多個內容版本可能跨越多個實例在任何指定時間存在。例如,如圖3所示,實例300、實例310和實例K 320中的每一個包括舊內容和新內容,其中舊內容指的是在存儲操作之前的內容,并且其中新內容指的是在存儲操作之后的內容。在這里,預期這樣的舊內容和新內容繼續(xù)共存,直至執(zhí)行“清理(clear-up)”操作。此外,預期 實施清理操作,其中舊內容根據(jù)需要周期性地從實例300、實例310和/或實例K 320中刪除(例如,在每日基礎上、依照資源的可用性等等來刪除)。
應該注意甚至在已存儲了新內容之后,有時也可能期望發(fā)布舊內容。對于實時發(fā)布體育統(tǒng)計數(shù)據(jù)來說,例如,由于時常通過進一步檢查來取消統(tǒng)計數(shù)據(jù)(例如,通過即時回放),所以這樣的特征可能是特別合乎需要的。為此,由于所公開的機制被分成兩個步驟,所以只要舊內容保持在內容存儲設備中,就能夠在存儲步驟完成之后執(zhí)行舊內容的發(fā)布。即, 只要前述的清理操作還沒有發(fā)生,則多個內容版本將繼續(xù)駐留在內容存儲設備中。相應地, 在一個方面中,發(fā)布步驟可以指向較新版本的內容或較舊版本的內容。
接下來參考圖4,提供根據(jù)一個實施例便于存儲和發(fā)布內容的示例發(fā)布單元的框圖。如所示的,發(fā)布單元400可以包括處理器組件410、存儲器組件420、存儲組件430、檢測組件440以及發(fā)布組件450。在這里,應該注意發(fā)布單元400 —般與圖I所示的發(fā)布單元 150相類似。
在一個方面中,處理器組件410被配置成運行與執(zhí)行多個功能中的任何一個功能相關的計算機可讀指令。處理器組件410可以是單個處理器或多個處理器,其專用于分析將從發(fā)布單元400傳送的信息和/或生成能夠被存儲器組件420、存儲組件430、檢測組件 440和/或發(fā)布組件450利用的信息。附加地或可選擇地,處理器組件410可以被配置成控制發(fā)布單元400的一個或多個組件。
在另一個方面中,存儲器組件420耦合到處理器組件410,并且被配置成存儲由處理器組件410運行的計算機可讀指令。存儲器組件420也可以被配置成存儲多個其他類型的數(shù)據(jù)中的任一數(shù)據(jù),其包括由存儲組件430、檢測組件440和/或發(fā)布組件450中的任一組件生成的數(shù)據(jù)。存儲器組件420可以采用多種不同的配置來配置,這包括被配置成隨機存取存儲器、電池供電的存儲器、硬盤、磁帶等等。在存儲器組件420上也能夠實現(xiàn)各種特征,諸如壓縮和自動備份(例如,獨立驅動器冗余陣列配置的使用)。
如所示的,發(fā)布單元400也能夠包括被配置成執(zhí)行存儲操作的存儲組件430。在一個方面中,這樣的存儲操作冗余地將內容存儲在與諸如圖I所示的內容存儲設備140之類的內容存儲設備相關聯(lián)的多個存儲位置上。在特定實施例中,存儲操作是并行的存儲操作,其并行地將內容冗余存儲在多個實例上。在這樣的實施例內,存儲組件430被配置成重試將內容存儲在特定實例上的失敗嘗試,其中這樣的失敗可能由于多個原因中的任一原因 (例如,在與特定實例相關聯(lián)的機器上缺少資源)而引起,并且其中將內容存儲在特定實例上的嘗試次數(shù)可以基于各種因素(例如,實例的量相對于處理時間的權衡)而改變。在這里, 預期存儲組件430可以進一步被配置成基于將內容存儲在特定實例上的重復失敗而從并行的存儲操作中除去特定實例。進一步預期存儲組件430可以被配置成實現(xiàn)其中周期性地(例如,在每日基礎上、依照資源的監(jiān)視等等)刪除先前存儲版本的內容的“清理”特征。 在另一個方面中,應該注意存儲組件430可以被配置成對至少一個結構化查詢語言(SQL) 數(shù)據(jù)庫執(zhí)行存儲操作。
如所示的,發(fā)布單元400也包括檢測組件440和發(fā)布組件450。在這樣的實施例內, 檢測組件440被配置成檢測前述的存儲操作的完成(S卩,跨越多個實例添加、更新或除去內容的結束),而發(fā)布組件450被配置成發(fā)布存儲在多個實例中的內容,以響應存儲操作的完成。在一個方面中,發(fā)布組件450被配置成經由分布式事務來發(fā)布內容,其中分布式事務嘗試發(fā)布多個實例中的每一個實例的內容。預期發(fā)布組件450可以被配置成重試發(fā)布(SP, 使之可用)來自特定實例的內容的失敗嘗試。在這里,類似于存儲操作,應該注意這樣的失敗可能是由于多個原因中的任一原因(例如,在與特定實例相關聯(lián)的機器上缺少資源)而引起的。對于這個特定實施例來說,發(fā)布組件450可以進一步被配置成基于發(fā)布特定實例中的內容的后續(xù)失敗而從分布式事務中除去特定實例。此外,在另一個方面中,發(fā)布組件450 被配置成根據(jù)需要來發(fā)布先前存儲版本的內容,而不是新近存儲版本的內容。實際上,對于這個特定實施例來說,發(fā)布組件450可以被配置成與存儲組件430協(xié)作來在周期性“清理” 操作之前發(fā)布先前存儲的版本,其中在周期性“清理”操作中這樣的版本可以被刪除和/或被引導到檔案(archive)。
轉到圖5,不出的是根據(jù)一個實施例便于發(fā)布內容存儲設備的內容的系統(tǒng)500。例如,系統(tǒng)500和/或用于實現(xiàn)系統(tǒng)500的指令可以駐留在計算設備(例如,發(fā)布單元400)或計算機可讀存儲介質內。如所述的,系統(tǒng)500包括能夠代表由處理器、軟件或其組合(例如, 固件)實現(xiàn)的功能的功能塊。系統(tǒng)500包括能夠一起行動的組件的邏輯分組502。如所示的,邏輯分組502能夠包括用于執(zhí)行冗余地將內容集的內容存儲在多個實例510上的存儲操作的組件。邏輯分組502也能夠包括用于檢測存儲操作512的完成的組件。進一步,邏輯分組502可以包括用于響應于存儲操作514的完成而發(fā)布存儲在多個實例中的內容的組件。此外,系統(tǒng)500還能夠包括保持用于執(zhí)行與組件510、512和514相關聯(lián)的功能的指令的存儲器520,其中組件510、512和514中的任一組件能夠存在于存儲器520之內或之外。
接下來參考圖6,提供根據(jù)一個實施例便于存儲和發(fā)布內容存儲設備的內容的示例表格的圖示。如所示的,這樣的示例表格可以包括數(shù)據(jù)集表610、凈荷表620、元數(shù)據(jù)表 630、發(fā)布表640以及內容表650。在這里,在特定的方面中,預期內容發(fā)布者(Content Publisher)對于是內容集(Content Set)的一部分的所有內容調用存儲內容(Store Contents)處理。對于將被存儲的每一個內容,內容發(fā)布者調用存儲內容(StoreContent) 應用編程接口(API)來便于存儲內容處理。例如,這樣的API可以用于在數(shù)據(jù)集表610中創(chuàng)建內容數(shù)據(jù)集(Content Data Set)行,其中內容數(shù)據(jù)作為各種其他表格中的行、利用與內容數(shù)據(jù)集行的關系進行存儲。在一個方面中,如果這是新內容(即,將被添加的內容),那么在內容表650中利用空的內容數(shù)據(jù)集Id (ContentDataSetId)來創(chuàng)建新的行。為此,預期跨越內容存儲設備的所有實例,并行完成這樣的處理。
如圖6所示,存儲在內容數(shù)據(jù)集表610中的內容與相應的凈荷(Payload)以及元數(shù)據(jù)(Metadata)相關聯(lián)。在特定實施例中,只有一個凈荷與特定內容相關聯(lián)。在這樣的實施例內,內容數(shù)據(jù)集-凈荷關系利用數(shù)據(jù)集表610中的外部鍵612來描述。在這里,應該注意諸如外部鍵612之類的外部鍵識別一個(引用)表格中的列或列的集合,并且所述一個 (引用)表格涉及另一個(被引用)表格中的列的集合。為此,外部鍵也能夠用于描述內容數(shù)據(jù)的其他任何的一對一關系。對于元數(shù)據(jù)表630,進一步注意多個元數(shù)據(jù)部分可以與特定內容相關聯(lián)。對于這個實施例來說,內容數(shù)據(jù)集-元數(shù)據(jù)(ContentDataSet-Metadata)關系利用元數(shù)據(jù)表630中的外部鍵632來描述,其中這樣的描述能夠用于內容數(shù)據(jù)的任何的一對多關系。
在一個方面中,數(shù)據(jù)集表610中的每一個內容數(shù)據(jù)集行與發(fā)布表640中的行相關聯(lián)。在這里,預期發(fā)布表640能夠用于跟蹤已被存儲但尚未被發(fā)布的所有的內容片。為了便于這樣的跟蹤,發(fā)布表640內的每一個發(fā)布項(PublishItem)可以與數(shù)據(jù)集表610內的內容數(shù)據(jù)集(ContentDataSet)相關聯(lián),其隨后在完成發(fā)布內容處理時可作為(例如,由 ContentSetId來定義)集合來利用。為此,注意發(fā)布表640可以包括外部鍵642來描述發(fā)布表640與數(shù)據(jù)集表610之間的關系以及包括外部鍵644來描述發(fā)布表640與內容表650 之間的關系。進一步注意內容表650與數(shù)據(jù)集表610之間的關系被用作發(fā)布內容處理的一部分,并利用內容表650中的外部鍵652來描述。
在一個方面中,在集合中的所有內容被存儲在數(shù)據(jù)集表610時,發(fā)布內容處理隨后使得所有那些存儲的內容可用于消費。為了便于這樣的處理,利用特定的內容集Id (ContentSetId)來調用發(fā)布內容(PublishContent)API。在這樣的實施例內,發(fā)布內容API 橫跨內容存儲設備的所有有效的實例來創(chuàng)建分布式事務。此外,利用存儲內容處理先前存儲的內容在單個事務中被“激活”。例如,對于屬于內容集Id的行,可以監(jiān)視發(fā)布表640。隨后能夠在內容表650與數(shù)據(jù)集表610之間創(chuàng)建關系。一旦對于集合中的所有內容以及對于內容存儲設備中的所有實例完成這個處理,跨越所有有效的實例提交分布式事務,這使得整個內容集是可用的。
接下來參考圖7,框圖示出根據(jù)各個方面被配置成管理數(shù)據(jù)集表中的內容的發(fā)布的示例的發(fā)布管理單元。如所示的,發(fā)布管理單元700可以包括處理器組件710、存儲器組件720、生成組件730、凈荷組件740、元數(shù)據(jù)組件750、監(jiān)視組件760以及發(fā)布組件770。在這里,應該注意發(fā)布管理單元700可以駐留在圖I所示的發(fā)布單元150內。
與發(fā)布單元400中的處理器組件410相類似,處理器組件710被配置成運行與執(zhí)行多個功能中的任一功能相關的計算機可讀指令。處理器組件710可以是單個處理器或多個處理器,其專用于分析將從發(fā)布管理單元700傳送的信息和/或生成能夠由存儲器組件 720、生成組件730、凈荷組件740、元數(shù)據(jù)組件750、監(jiān)視組件760和/或發(fā)布組件770使用的信息。附加地或可選擇地,處理器組件710可以被配置成控制發(fā)布管理單元700的一個或多個組件。
在另一個方面中,存儲器組件720被耦合到處理器組件710,并且被配置成存儲由處理器組件710運行的計算機可讀指令。存儲器組件720也可以被配置成存儲多個其他類型的數(shù)據(jù)中的任一數(shù)據(jù),其包括由生成組件730、凈荷組件740、元數(shù)據(jù)組件750、監(jiān)視組件760和/或發(fā)布組件770生成的數(shù)據(jù)。在這里,應該注意存儲器組件720與發(fā)布單元400 中的存儲器組件420相類似。相應地,應該意識到存儲器組件420的任一前述的特征/配置也適用于存儲器組件720。
在還一個方面中,發(fā)布管理單元700包括被配置成生成數(shù)據(jù)集表(例如,數(shù)據(jù)集表 610)的生成組件730。例如,生成組件730可以被配置成生成便于存儲內容集的內容的數(shù)據(jù)集表。在這里,應該注意這樣的內容可以被復制到多個位置(例如,多個SQL數(shù)據(jù)庫)中的任一位置上,其中這些內容的存儲和發(fā)布能夠通過由生成組件730生成的數(shù)據(jù)集表來管理。
對于一些實施例來說,預期內容可以與相應的凈荷以及元數(shù)據(jù)相關聯(lián)。如所示的,為了促進這樣的實施例,發(fā)布管理單元700可以包括凈荷組件740以及元數(shù)據(jù)組件750。 在一個方面中,凈荷組件740可以被配置成將這些內容的凈荷存儲在凈荷表(例如,凈荷表 620)中,而元數(shù)據(jù)組件750能夠被配置成將這些內容的元數(shù)據(jù)存儲在元數(shù)據(jù)表(例如,元數(shù)據(jù)表630)上。在這里,如先前結合圖6所述的,表格之間的關系借助外部鍵是可描述的。例如,由生成組件730生成的數(shù)據(jù)集表可以包括指向凈荷表的外部鍵(即,以便于描述內容表與凈荷表之間潛在的一對一關系),而元數(shù)據(jù)表可以包括指向數(shù)據(jù)集表的外部鍵(即,以便于描述內容表與元數(shù)據(jù)表之間潛在的一對多關系)。
如所示的,發(fā)布管理單元700也可以包括監(jiān)視組件760。在這樣的實施例內,監(jiān)視組件760可以被配置成監(jiān)視由生成組件730生成的數(shù)據(jù)集表。特別地,監(jiān)視組件760可以被配置成確定這些內容的存儲狀態(tài)(例如,確定存儲操作是否完成)。發(fā)布組件770隨后可以被配置成基于存儲狀態(tài)來發(fā)布這些內容。例如,發(fā)布組件770能夠被配置成放棄(forego)發(fā)布內容,直至接收到跨越多個所需實例提交了這些內容的存儲的確認。為此,應該注意發(fā)布組件770能夠被配置成經由分布式事務來發(fā)布多個實例中的內容。在這樣的實施例內, 發(fā)布組件770進一步被配置成重試發(fā)布特定實例中的內容的失敗嘗試。實際上,由于后續(xù)發(fā)布嘗試也可能失敗,所以發(fā)布組件770可以被配置成基于發(fā)布特定實例中的內容的后續(xù)失敗而從分布式事務中除去該特定實例。依據(jù)完成分布式事務,發(fā)布組件770隨后可以被配置成同時發(fā)布存儲在該事務中包括的多個實例中的內容。
轉到圖8,示出的是根據(jù)一個實施例、便于管理數(shù)據(jù)集表中的內容的發(fā)布的系統(tǒng) 800。例如,系統(tǒng)800和/或用于實現(xiàn)系統(tǒng)800的指令可以駐留在計算設備(例如,發(fā)布管理單元700)或計算機可讀存儲介質內。如所述的,系統(tǒng)800包括代表由處理器運行的功能的功能塊。此外,系統(tǒng)800包括與系統(tǒng)500中的邏輯分組502相似的能夠一起行動的組件的邏輯分組802。如所示的,邏輯分組802能夠包括用于生成數(shù)據(jù)集表以便于存儲內容集810 的內容的組件以及用于將內容的凈荷存儲在凈荷表812上的組件。邏輯分組802也能夠包括用于將內容的元數(shù)據(jù)存儲在元數(shù)據(jù)表814上的組件。進一步,邏輯分組802能夠包括用于監(jiān)視數(shù)據(jù)集表以確定內容816的存儲狀態(tài)的組件以及用于基于存儲狀態(tài)818來發(fā)布內容的組件。此外,系統(tǒng)800還可以包括保持用于執(zhí)行與組件810、812、814、816和818相關聯(lián)的功能的指令的存儲器820。雖然被顯示在存儲器820的外部,但是將明白組件810、812、 814,816和818組件能夠存在于存儲器820內。
如先前所述的,預期跨越多個實例在兩個不同的步驟中存儲和發(fā)布內容。接下來參考圖9,提供示出根據(jù)一個實施例、便于存儲內容的示例方法900的流程圖。如所示的,根9據(jù)本主題說明書的一個方面,方法900包括可以由計算設備執(zhí)行的一系列動作。例如,通過采用處理器執(zhí)行存儲在計算機可讀存儲介質上的計算機可執(zhí)行指令以實現(xiàn)這一系列動作, 可以實現(xiàn)方法900。在另一個實施例中,公開包括用于實現(xiàn)這一系列動作的代碼的計算機可讀存儲介質。
如所示的,方法900通過在動作905調用存儲算法來開始。對于這個特定示例,在動作910檢索內容存儲實例的列表,并且隨后在動作915選擇該列表內的實例的子集。在一個方面,內容隨后在動作920開始經由并行事務而被存儲在每一個選擇的實例上。
為此,預期方法900可以在動作925確定特定內容是否包括凈荷。如果該內容包括凈荷,則在動作930創(chuàng)建新的內容凈荷記錄,其后面跟隨著在動作935創(chuàng)建新的內容數(shù)據(jù)集(ContentDataSet)記錄。否則,如果在動作925確定該內容并不包括凈荷,則方法900直接進行到動作935。
一旦在動作935已創(chuàng)建了內容數(shù)據(jù)集記錄,則隨后在動作940創(chuàng)建描述內容數(shù)據(jù)集記錄的新的內容元數(shù)據(jù)記錄。方法900隨后在動作945確定是否特定內容包括記錄。如果該內容尚未包括記錄,則在動作950創(chuàng)建新的內容記錄,其后面跟隨著在動作955創(chuàng)建新的發(fā)布項(PublishItem)記錄。否則,如果在動作945確定該內容確實已包括記錄,則方法 900直接進行到動作955。
對這個特定示例來說,一旦創(chuàng)建了新的發(fā)布項記錄,則方法900能夠進行到動作 960,其中在動作960能夠提交并行存儲事務。此外,由于該事務并行地將內容存儲在實例上,所以預期提交這樣的并行事務包括同時提交其中已成功地存儲了該內容的每一個實例。方法900隨后在其中存儲算法結束的動作965結束。
接下來參考圖10,提供示出根據(jù)一個實施例、便于發(fā)布內容的示例方法1000的流程圖。在這里,注意發(fā)布這樣的內容的處理是在圖9中所述的存儲處理完成之后才開始的不同步驟。如所示的,根據(jù)本主題說明書的一個方面,方法1000包括可以由計算設備執(zhí)行的一系列動作。例如,方法1000可以通過采用處理器執(zhí)行存儲在計算機可讀存儲介質上的計算機可執(zhí)行指令以實現(xiàn)這一系列動作來實現(xiàn)。在另一個實施例中,預期包括用于實現(xiàn)這一系列動作的代碼的計算機可讀存儲介質。
如所示的,在動作1010,方法1000通過調用發(fā)布算法來開始。對于這個特定示例, 在動作1020檢索內容存儲實例的列表,其中分布式發(fā)布事務隨后在動作1030開始。此外, 預期在動作1040選擇的多個實例上執(zhí)行這樣的分布式事務。
一旦選擇實例,則在動作1050更新具有相應內容集Id (ContentSetId)的每一個內容,以包括合適的內容數(shù)據(jù)集Id。方法1000隨后可以進行至其中執(zhí)行是否在分布式事務中包括附加實例的確定的動作1060。如果確實包括附加實例,則方法1000環(huán)回到其中選擇后續(xù)實例的動作1040。否則,如果在動作1060確定不包括附加實例,則方法1000進行至其中提交分布式發(fā)布事務的動作1070。為此,預期提交這樣的分布式事務包括同時提交其中已成功地發(fā)布了內容的每一個實例。方法1000隨后在其中發(fā)布算法結束的動作1080結束。依據(jù)發(fā)布算法的結束,使得分布式事務中包括的實例內的內容可用于讀訪問。
示例的聯(lián)網和分布式環(huán)境本領域普通技術人員能夠意識到這里描述的用于發(fā)布內容存儲設備的內容的方法和設備的各個實施例以及相關的實施例能夠結合任何的計算機或其他的客戶機或服務器設備來實現(xiàn)。在這點上,這里描述的各個實施例能夠在具有任意數(shù)量的存儲器或存儲單元以及跨越任意數(shù)量的存儲單元發(fā)生的任意數(shù)量的應用和處理的任何計算機系統(tǒng)或環(huán)境中進行實現(xiàn)。這包括但不限于具有部署在網絡環(huán)境或分布式計算環(huán)境中具有遠程或本地存儲設備的服務器計算機和客戶機計算機的環(huán)境。
圖11提供示例的聯(lián)網或分布式計算環(huán)境的非限制示意圖。分布式計算環(huán)境包括計算對象1110、1112等等以及計算對象或設備1120、1122、1124、1126、1128等等,其可以包括利用應用1130、1132、1134、1136、1138表示的程序、方法、數(shù)據(jù)存儲設備、可編程邏輯等等。能夠意識到對象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的系統(tǒng)提供服務的其他的計算對象和計算設備,和/或可以代表多個未顯示的互連網絡。每一個對象1110、1112等等或1120、1122、1124、1126、1128 等等也能夠包含應用,諸如應用1130、1132、1134、1136、1138,其可能利用API或其他的對象、軟件、固件和/或硬件,其適合于與用于信息的基礎架構通信或實現(xiàn)用于信息的基礎架構作為根據(jù)各個實施例提供的來自任何平臺的服務。
應該注意能夠利用網絡拓撲結構和網絡基礎架構中的主機,諸如客戶機/服務器、對等或混合結構。在客戶機/服務器結構中,尤其在聯(lián)網系統(tǒng)中,客戶機通常是訪問由例如服務器之類的另一個計算機提供的共享網絡資源的計算機。在圖11的圖示中,作為非限制示例,計算機1120、1122、1124、1126、1128等等可以被認為是客戶機,而計算機1110、 1112等等可以被認為是服務器,其中服務器1110、1112等等提供數(shù)據(jù)服務,諸如接收來自客戶計算機1120、1122、1124、1126、1128等等的數(shù)據(jù)、存儲數(shù)據(jù)、處理數(shù)據(jù)、發(fā)送數(shù)據(jù)給客戶計算機1120、1122、1124、1126、1128等等,但是取決于環(huán)境,任何的計算機可以被認為是客戶機、服務器或這二者。這些計算設備之中的任何一個可能在處理數(shù)據(jù)或請求服務或任務,其可能暗指用于信息的基礎架構為在這里針對一個或多個實施例描述的任何平臺以及相關技術的服務。
服務器通常是通過諸如因特網或無線網絡基礎架構之類的遠程或本地網絡可訪問的遠程計算機系統(tǒng)??蛻魴C處理可以在第一計算機系統(tǒng)中是激活的,而服務器處理可以在第二計算機系統(tǒng)中是激活的,其中這二個計算機系統(tǒng)通過通信介質彼此通信,從而提供分布式功能并允許多個客戶機利用服務器的信息收集能力。依照用戶簡檔(profiling)使用的任何軟件對象可以被單獨提供或跨越多個計算設備或對象被分布。
例如,在其中通信網絡/總線1140是因特網的網絡環(huán)境中,服務器1110、1112等等可以是Web (網絡)服務器,其中客戶機1120、1122、1124、1126、1128等等經由諸如HTTP 之類的許多已知協(xié)議中的任一協(xié)議與Web服務器通信。服務器1110、1112等等也可以用作客戶機1120、1122、1124、1126、1128等等,因為這可能是分布式計算環(huán)境的特性。
示例計算設備如所提及的,這里描述的各種實施例適用于任何設備,其中可能期望實現(xiàn)基礎架構之一或基礎架構的某些部分來發(fā)布內容存儲設備的內容。因此,應該明白預期所有類型的手持、便攜和其他的計算設備以及計算對象與這里描述的各種實施例結合使用,即,無論何處設備可以結合用于信息的基礎架構作為來自任何平臺的服務來提供某些功能。相應地,下面在圖12中描述的通用計算機僅僅是一個示例,并且本主題披露的實施例可以利用任何的具有網絡/總線互操作性以及交互的客戶機來實現(xiàn)。
參考圖12,用于實現(xiàn)這里的一個或多個實施例的示例計算環(huán)境1200能夠包括采用手持計算機1210的形式的通用計算設備。手持計算機1210的組件可以包括但不限于處理單元1220、系統(tǒng)存儲器1230以及將包括系統(tǒng)存儲器在內的各個系統(tǒng)組件耦合到處理單元1220的系統(tǒng)總線1221。
計算機1210通常包括各種計算機可讀媒體并且可以是任何的能被計算機1210訪問的可用媒體。系統(tǒng)存儲器1230可以采用諸如只讀存儲器(ROM)和/或隨機存取存儲器 (RAM)之類的易失性和/或非易失性存儲器的形式包括計算機存儲媒體。通過示例而非限制,存儲器1230也可以包括操作系統(tǒng)、應用程序、其他程序模塊以及程序數(shù)據(jù)。
用戶可以通過輸入設備1240將命令和信息輸入計算機1210。監(jiān)視器或其他類型的顯示設備也經由諸如輸出接口 1250之類的接口連接到系統(tǒng)總線1221。除了監(jiān)視器之外, 計算機還可以包括其他的外設輸出設備,諸如揚聲器和打印機,其可以通過輸出接口 1250 進行連接。
計算機1210可以使用至諸如遠程計算機1270之類的一個或多個遠程計算機的邏輯連接而操作在聯(lián)網或分布式環(huán)境中。遠程計算機1270可以是個人計算機、服務器、路由器、網絡PC、對等設備或其他的常用網絡節(jié)點、或其他任何的遠程媒體消費或傳輸設備,并且可以包括上面相對于計算機1210描述的任一或所有的元素。圖12中描述的邏輯連接包括網絡1271,諸如局域網(LAN)或廣域網(WAN),但也可以包括其他的網絡/總線。這樣的聯(lián)網環(huán)境在住宅、辦公室、企業(yè)范圍計算機網絡、內部網和因特網中是司空見慣的。
如所提及的,這里描述的各種技術可以結合硬件或軟件來實現(xiàn),或者可以酌情結合軟硬件二者的組合來實現(xiàn)。如在這里使用的,術語“組件”、“系統(tǒng)”等等同樣用于指示計算機相關的實體,其可以是硬件、硬件與軟件的組合、軟件或運行中的軟件。例如,組件可以是但不限于在處理器上運行的處理、處理器、對象、可執(zhí)行文件、運行的線程、程序和/或計算機。通過示意,在計算機上運行的應用和計算機二者可以是組件。一個或多個組件可以駐留在處理和/或運行的線程內,并且組件可以位于一個計算機上和/或被分布在兩個或更多計算機之間。
上述的系統(tǒng)已針對若干組件之間的交互進行描述了。能夠意識到這樣的系統(tǒng)和組件可以包括那些組件或指定的子組件、指定的組件或子組件中的一些、和/或附加組件, 并且依據(jù)前述的各種排列和組合。子組件也可以被實現(xiàn)為通信地耦合到其他組件的組件, 而不被包括在父組件(分等級)內。此外,應該注意一個或多個組件可以被組合成提供聚合功能的單個組件或者被分成若干個單獨的子組件,并且諸如管理層之類的任何一個或多個中間層可以被提供來通信地耦合到這樣的子組件,以便提供綜合功能。這里描述的任何組件也可以與這里沒有具體描述但是一般為本領域技術人員所知的一個或多個其他組件進行互動。
雖然結合各個附圖的優(yōu)選實施例描述了各個實施例,但是將明白在不偏離這些實施例的情況下,可以使用其他類似的實施例,或者可以對所描述的用于執(zhí)行相同功能的實施例進行修改和補充。更進一步,上述實施例的一個或多個方面可以在多個處理芯片或設備中進行實現(xiàn),或跨越多個處理芯片或設備來實現(xiàn),并且存儲可以類似地跨越多個設備來進行。因此,本發(fā)明不應限于任何單個實施例,而應該以根據(jù)所附的權利要求書的寬度和范圍來解釋。
權利要求
1.一種設備,包括處理器,被配置成執(zhí)行存儲在存儲器中的計算機可執(zhí)行組件,所述組件包括被配置成執(zhí)行存儲操作的存儲組件,其中存儲操作將內容集的內容冗余地存儲在與數(shù)據(jù)存儲設備相關聯(lián)的多個實例上;檢測組件,被配置成檢測存儲操作的完成;以及發(fā)布組件,被配置成發(fā)布存儲在多個實例中的內容,以響應存儲操作的完成。
2.權利要求I的設備,其中存儲組件被配置成周期性地刪除先前存儲版本的內容。
3.權利要求I的設備,其中發(fā)布組件被配置成發(fā)布先前存儲版本的內容而不是新近存儲版本的內容。
4.權利要求I的設備,其中存儲操作同時將內容冗余地存儲在多個實例上。
5.權利要求4的設備,其中如果存儲內容的先前嘗試已失敗,則存儲組件被配置成重新開始嘗試將內容存儲在特定實例上,以及其中存儲組件進一步被配置成基于將內容存儲在特定實例上的后續(xù)失敗而從并行存儲操作中除去特定實例。
6.權利要求I的設備,其中發(fā)布組件被配置成經由分布式事務來發(fā)布內容,以及其中分布式事務嘗試發(fā)布多個實例之中每一個實例中的內容。
7.權利要求6的設備,其中如果發(fā)布內容的先前嘗試已失敗,則發(fā)布組件被配置成重新開始嘗試發(fā)布特定實例中的內容,以及其中發(fā)布組件進一步被配置成基于發(fā)布特定實例中的內容的后續(xù)失敗而從分布式事務中除去特定實例。
8.權利要求I的設備,其中存儲組件被配置成對至少一個結構化查詢語言(SQL)數(shù)據(jù)庫執(zhí)行存儲操作。
9.一種方法,包括采用處理器來執(zhí)行存儲在計算機可讀存儲介質上的計算機可執(zhí)行指令,以實現(xiàn)包括以下的一系列動作執(zhí)行存儲操作,其中存儲操作將內容集的內容冗余地存儲在與數(shù)據(jù)存儲設備相關聯(lián)的多個實例上;檢測存儲操作的完成;以及發(fā)布存儲在多個實例中的內容集的內容,以響應存儲操作的完成。
10.權利要求9的方法,其中存儲操作的執(zhí)行包括周期性地刪除先前存儲版本的內容。
11.權利要求9的方法,其中發(fā)布包括發(fā)布先前存儲版本的內容而不是新近存儲版本的內容。
12.權利要求9的方法,其中存儲操作的執(zhí)行包括并行地將內容冗余地存儲在多個實例上。
13.權利要求12的方法,進一步包括如果存儲內容的先前嘗試已失敗,則重新開始嘗試將內容存儲在特定實例上,其中存儲操作的執(zhí)行包括基于將內容存儲在特定實例上的后續(xù)失敗而從存儲操作中除去特定實例。
14.權利要求9的方法,其中發(fā)布包括經由分布式事務來發(fā)布內容,以及其中分布式事務嘗試發(fā)布多個實例之中每一個實例的內容。
15.權利要求9的方法,其中發(fā)布包括同時提交多個實例的發(fā)布。
全文摘要
披露用于發(fā)布內容存儲設備的內容的各方面。執(zhí)行存儲操作,并且檢測存儲操作的完成。在這里,存儲操作將內容集的內容冗余地存儲在與內容存儲設備相關聯(lián)的實例上。存儲在實例中的內容隨后響應于存儲操作的完成而被發(fā)布。在另一方面,生成數(shù)據(jù)集表,以便于存儲包括凈荷和元數(shù)據(jù)的內容集的內容。凈荷被存儲在凈荷表上,而元數(shù)據(jù)被存儲在元數(shù)據(jù)表上。對于這個實施例,數(shù)據(jù)集表包括指向凈荷表的第一外部鍵,而元數(shù)據(jù)表包括指向數(shù)據(jù)集表的第二外部鍵。監(jiān)視數(shù)據(jù)集表,以確定這些內容的存儲狀態(tài),并且這些內容隨后基于存儲狀態(tài)而被發(fā)布。
文檔編號G06F9/44GK102541542SQ20111042625
公開日2012年7月4日 申請日期2011年12月19日 優(yōu)先權日2010年12月17日
發(fā)明者H.班德里奧, R.克勒, R.貝雷斯 申請人:微軟公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1