專利名稱:元數(shù)據(jù)型預(yù)取的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)設(shè)備。本發(fā)明具有針對(duì)在從數(shù)據(jù)庫(kù)獲取信息時(shí)使用的計(jì)算機(jī)設(shè)備的特殊實(shí)用性。
背景技術(shù):
通常使用把大量數(shù)據(jù)項(xiàng)存儲(chǔ)在永久存儲(chǔ)器中的計(jì)算機(jī)來提供數(shù)據(jù)庫(kù)。該設(shè)備包括數(shù)據(jù)庫(kù)管理軟件,該數(shù)據(jù)庫(kù)管理軟件可執(zhí)行以從應(yīng)用程序接收表明用于從數(shù)據(jù)庫(kù)中選擇數(shù)據(jù)項(xiàng)的準(zhǔn)則的查詢。執(zhí)行該數(shù)據(jù)庫(kù)管理軟件,會(huì)把所選擇的數(shù)據(jù)傳送給運(yùn)行著所述應(yīng)用程序的計(jì)算機(jī)上的易失性存儲(chǔ)器。
現(xiàn)在,通常通過通信網(wǎng)絡(luò)訪問數(shù)據(jù)庫(kù)。例如,在http//www.bt.com/directory-enquiries處可獲得BT的目錄查詢數(shù)據(jù)庫(kù)。
因而,獲得對(duì)查詢的響應(yīng)所需的時(shí)間取決于兩個(gè)因素識(shí)別出滿足該查詢的那些數(shù)據(jù)項(xiàng)所需的時(shí)間,和將數(shù)據(jù)項(xiàng)傳送到其上運(yùn)行著相關(guān)應(yīng)用程序的計(jì)算機(jī)的易失性存儲(chǔ)器所需的時(shí)間。
縮短獲得對(duì)查詢的響應(yīng)所需的時(shí)間的一種方式,是將類似的數(shù)據(jù)項(xiàng)聚集在數(shù)據(jù)庫(kù)中的相鄰存儲(chǔ)器區(qū)域中,然后響應(yīng)于選擇包含在該區(qū)域內(nèi)的數(shù)據(jù)項(xiàng)的查詢將該存儲(chǔ)器區(qū)域的內(nèi)容發(fā)送給客戶端計(jì)算機(jī)。任何隨后的對(duì)包含在該區(qū)域內(nèi)的數(shù)據(jù)項(xiàng)的引用,接下來就可以從本地存儲(chǔ)器得到滿足。這是基于所謂的“頁(yè)面服務(wù)器(page-server)”操作的數(shù)據(jù)庫(kù)的一個(gè)特征。這種數(shù)據(jù)庫(kù)的一個(gè)示例是Excelon公司提供的ObjectStore(在以下文獻(xiàn)中可以找到ObjectStore的詳情C.Lamb,G.Landis,J.Orestein,andD.Weinreb.The ObjectStore database system.Communications of the ACM,34(10)50-63,October 1991和國(guó)際專利申請(qǐng)WO 00/57276號(hào))。
另一種用于縮短對(duì)查詢進(jìn)行響應(yīng)所需的平均時(shí)間的技術(shù),是將多個(gè)查詢以及它們的結(jié)果存儲(chǔ)在本地存儲(chǔ)器中。發(fā)現(xiàn)用戶經(jīng)常重復(fù)多個(gè)查詢,這使得能夠從本地存儲(chǔ)器回答重復(fù)查詢,由此節(jié)省了否則將在選擇滿足查詢的數(shù)據(jù)項(xiàng)時(shí)耗費(fèi)的時(shí)間以及在將這些數(shù)據(jù)項(xiàng)轉(zhuǎn)送到本地存儲(chǔ)器時(shí)耗費(fèi)的時(shí)間。
又一種技術(shù)是基于與早先的查詢有關(guān)的數(shù)據(jù)來預(yù)測(cè)用戶可能要輸入的那些查詢。例如,在以下文獻(xiàn)中可以看到該方法“A Personal Assistantfor Web Database Caching”Beat Signer,Antonia Emi,Moria C.Norrie inthe proceedings of the Conference on Advanced Information SystemsEngineering(2000)。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,提供了計(jì)算機(jī)設(shè)備,該計(jì)算機(jī)設(shè)備具有i)一個(gè)或更多個(gè)數(shù)據(jù)處理器;ii)可連接到所述一個(gè)或更多個(gè)數(shù)據(jù)處理器的永久存儲(chǔ)裝置,所述永久存儲(chǔ)裝置存儲(chǔ)多個(gè)數(shù)據(jù)項(xiàng),所述多個(gè)數(shù)據(jù)項(xiàng)中的一個(gè)或更多個(gè)包含對(duì)其內(nèi)容與所述多個(gè)數(shù)據(jù)項(xiàng)在語(yǔ)義上相關(guān)聯(lián)的一個(gè)或更多個(gè)其它數(shù)據(jù)項(xiàng)的引用;ii)可連接到所述一個(gè)或更多個(gè)數(shù)據(jù)處理器的易失性存儲(chǔ)器裝置,其用于存儲(chǔ)所述多個(gè)數(shù)據(jù)項(xiàng)中的一個(gè)或更多個(gè);iii)數(shù)據(jù)庫(kù)管理系統(tǒng)軟件,其可由所述一個(gè)或更多個(gè)數(shù)據(jù)處理器執(zhí)行,以通過從所述永久存儲(chǔ)裝置向所述易失性存儲(chǔ)器裝置傳遞滿足在一查詢中指定的一個(gè)或更多個(gè)準(zhǔn)則的數(shù)據(jù)項(xiàng),而對(duì)所述查詢進(jìn)行響應(yīng);iv)查詢代碼,其可由所述一個(gè)或更多個(gè)數(shù)據(jù)處理器執(zhí)行,以向所述數(shù)據(jù)庫(kù)管理系統(tǒng)軟件傳遞查詢;v)預(yù)取代碼,其可由所述一個(gè)或更多個(gè)數(shù)據(jù)處理器來執(zhí)行以執(zhí)行以下操作a)對(duì)響應(yīng)于所述查詢而提供的響應(yīng)數(shù)據(jù)項(xiàng)進(jìn)行分析,以找到與所述響應(yīng)數(shù)據(jù)項(xiàng)在語(yǔ)義上相關(guān)聯(lián)的關(guān)聯(lián)數(shù)據(jù)項(xiàng);和b)自動(dòng)生成針對(duì)所述語(yǔ)義關(guān)聯(lián)數(shù)據(jù)項(xiàng)的另一查詢。
通過響應(yīng)于請(qǐng)求而選擇數(shù)據(jù)項(xiàng)以從永久存儲(chǔ)器傳送到高速緩存存儲(chǔ)器,接著根據(jù)構(gòu)成早先選擇的數(shù)據(jù)項(xiàng)的一部分的關(guān)系數(shù)據(jù)來選擇其它數(shù)據(jù)項(xiàng),然后將這些其它數(shù)據(jù)項(xiàng)也移動(dòng)到所述高速緩存存儲(chǔ)器,縮短了對(duì)隨后關(guān)聯(lián)請(qǐng)求的響應(yīng)時(shí)間。
根據(jù)本發(fā)明的第二方面,提供了一種用于操作計(jì)算機(jī)設(shè)備的方法,所述計(jì)算機(jī)設(shè)備包括處理器和所述處理器可訪問的第一數(shù)據(jù)存儲(chǔ)部和第二數(shù)據(jù)存儲(chǔ)部,所述處理器對(duì)所述第一存儲(chǔ)部中保持的數(shù)據(jù)的訪問比對(duì)所述第二存儲(chǔ)部的訪問快,所述方法包括以下步驟將多個(gè)數(shù)據(jù)項(xiàng)連同表示所述多個(gè)數(shù)據(jù)項(xiàng)之間的關(guān)系的關(guān)系數(shù)據(jù)都存儲(chǔ)在所述第二數(shù)據(jù)存儲(chǔ)部中;和在所述處理器上執(zhí)行一處理以執(zhí)行以下操作i)從所述第二存儲(chǔ)部取出一個(gè)或更多個(gè)數(shù)據(jù)項(xiàng),以及表示與所述取出的數(shù)據(jù)項(xiàng)在語(yǔ)義上相關(guān)聯(lián)的一個(gè)或更多個(gè)關(guān)聯(lián)數(shù)據(jù)項(xiàng)的關(guān)系數(shù)據(jù);ii)響應(yīng)于接收到所述關(guān)系數(shù)據(jù),將所述語(yǔ)義關(guān)聯(lián)數(shù)據(jù)項(xiàng)中的一個(gè)或更多個(gè)從所述第二存儲(chǔ)器取到所述第一存儲(chǔ)器;以及iii)在隨后請(qǐng)求數(shù)據(jù)項(xiàng)時(shí),檢查在所述第一存儲(chǔ)部中是否存在所述請(qǐng)求的數(shù)據(jù)項(xiàng),如果存在,則從所述第一存儲(chǔ)部讀取所述數(shù)據(jù)項(xiàng)。
給定數(shù)據(jù)項(xiàng)通常表示真實(shí)實(shí)體或假想實(shí)體或表示其特性。與該給定數(shù)據(jù)項(xiàng)在語(yǔ)義上相關(guān)聯(lián)的其它數(shù)據(jù)項(xiàng)表示與由該給定數(shù)據(jù)項(xiàng)表示的真實(shí)實(shí)體或假想實(shí)體相關(guān)聯(lián)的真實(shí)實(shí)體或假想的實(shí)體或表示其特性。
以下僅以示例的方式,參照附圖對(duì)本發(fā)明的具體實(shí)施例進(jìn)行描述,在附圖中圖1是根據(jù)本發(fā)明第一實(shí)施例的媒體內(nèi)容發(fā)布系統(tǒng)的示意性例示圖;圖2示出了在圖1所示的計(jì)算機(jī)上運(yùn)行的軟件的架構(gòu);
圖3示出了與文件相關(guān)聯(lián)的元數(shù)據(jù);圖4示出了在第一實(shí)施例中使用的面向?qū)ο髷?shù)據(jù)庫(kù)方案;圖5是對(duì)由編輯者輸入的關(guān)系數(shù)據(jù)的層級(jí)表示;圖6示出了使用模板創(chuàng)建工具生成的模板數(shù)據(jù);圖7是示出本發(fā)明第一實(shí)施例的模板填充器(populator)組件的操作的流程圖;圖8更詳細(xì)地示出了圖7中的某些步驟;圖9示出了響應(yīng)于一次查詢而選擇的媒體對(duì)象;圖10示出了響應(yīng)于二次查詢而選擇的媒體對(duì)象;圖11示出了其葉子是響應(yīng)于一次查詢而選擇的媒體對(duì)象的樹;以及圖12示出了可由模板填充器模塊生成的編輯判決列表。
具體實(shí)施例方式
圖1示出了兩臺(tái)個(gè)人計(jì)算機(jī)10、12,每臺(tái)個(gè)人計(jì)算機(jī)10、12都包括按常規(guī)方式連接起來的多個(gè)公知硬件組件。這些公知硬件組件包括中央處理單元、易失性存儲(chǔ)器(在此情況下是隨機(jī)存取存儲(chǔ)器)、只讀存儲(chǔ)器、硬盤以及輸入/輸出裝置。這些硬件組件通過一個(gè)或更多個(gè)數(shù)據(jù)總線和地址總線互連。輸入/輸出裝置包括監(jiān)視器、鍵盤、鼠標(biāo)、CD ROM驅(qū)動(dòng)器以及網(wǎng)卡。該網(wǎng)卡通過公共因特網(wǎng)14連接到服務(wù)器計(jì)算機(jī)16。
服務(wù)器計(jì)算機(jī)16具有與個(gè)人計(jì)算機(jī)10、12類似的架構(gòu),但是配備有更快的處理器和容量大得多的永久存儲(chǔ)部。該存儲(chǔ)部采用廉價(jià)盤冗余陣列(RAID)18的形式。RAID存儲(chǔ)媒體文件20的集合。
服務(wù)器計(jì)算機(jī)16具有從CD1安裝到其上的ObjectStore數(shù)據(jù)庫(kù)服務(wù)器和ObjectStore應(yīng)用程序員接口(API)軟件??梢詮?5 Mall Road,Burlington,MA,U.S.A.的Excelon公司獲得這種軟件。此外,從CD2將ObjectStore客戶端程序(其使用了所述API軟件,并且包括模板填充器模塊和遠(yuǎn)程過程調(diào)用(RPC)服務(wù)器模塊)安裝到服務(wù)器計(jì)算機(jī)16上。該ObjectStore客戶端程序還包括Excelon公司提供的代碼,該代碼執(zhí)行對(duì)查詢進(jìn)行處理所需的大部分處理,服務(wù)器程序僅在ObjectStore客戶端程序請(qǐng)求服務(wù)器程序提供頁(yè)面(存儲(chǔ)器的4K個(gè)塊)時(shí)提供頁(yè)面。第三張光盤CD3提供了也被安裝到服務(wù)器計(jì)算機(jī)16上的媒體標(biāo)記工具程序。在本申請(qǐng)人的早先國(guó)際專利申請(qǐng)GB 2003/003976中描述了該媒體標(biāo)記工具程序和模板填充器程序,從而通過引用將其并入于此。
每一臺(tái)個(gè)人計(jì)算機(jī)都具有從CD4安裝到其上的模板創(chuàng)建工具程序、內(nèi)容合成器以及RPC客戶端程序。在本申請(qǐng)人的相關(guān)國(guó)際專利申請(qǐng)GB2003/003976中描述了該模板創(chuàng)建程序和內(nèi)容合成器。本領(lǐng)域的技術(shù)人員可以容易地提供RPC客戶端程序。以下參照?qǐng)D2對(duì)這些程序的結(jié)構(gòu)以及操作和相互操作進(jìn)行描述。
媒體標(biāo)記工具30提供了編輯者用以對(duì)內(nèi)容存儲(chǔ)部20和數(shù)據(jù)庫(kù)22進(jìn)行更新的接口。在實(shí)踐中,設(shè)想使用本實(shí)施例的編輯者在其處理下有權(quán)使用由其它編輯者生成的媒體元素32、來自各種源的樣片(rush)、準(zhǔn)備的節(jié)目段、靜物照片以及各種其它媒體項(xiàng)(所有這些都被表示成電子形式)。這些媒體元素存儲(chǔ)在內(nèi)容存儲(chǔ)部20中的合適目錄結(jié)構(gòu)中。在本領(lǐng)域中,每個(gè)目錄都被稱為“儲(chǔ)存庫(kù)(bin)”,其為對(duì)其中存儲(chǔ)有與特定工程有關(guān)的電影卷的加標(biāo)簽儲(chǔ)存庫(kù)的引用。
然而,出于本描述的目的,假設(shè)編輯者僅以包括有在針對(duì)足球節(jié)目的足球比賽和介紹序列等處記錄的未編輯電影的電子表示的文件而開始。在本領(lǐng)域中,將未編輯電影片斷稱為“樣片”。
使用媒體標(biāo)記工具30,編輯者可以選擇各種樣片片段并將每個(gè)樣片片段作為媒體元素以較短的文件存儲(chǔ)在內(nèi)容存儲(chǔ)部20中的目錄中。
媒體標(biāo)記工具30還提供了使得編輯者能夠生成或編輯存儲(chǔ)在內(nèi)容存儲(chǔ)部20中的媒體元素的元數(shù)據(jù)36的工具。標(biāo)記工具程序30使用ObjectStore服務(wù)器數(shù)據(jù)庫(kù)軟件34來存儲(chǔ)每個(gè)媒體文件32的元數(shù)據(jù)項(xiàng)36,作為RAID18中保持的ObjectStore數(shù)據(jù)庫(kù)22的一部分。
這里對(duì)媒體標(biāo)記工具30進(jìn)行了描述,以將本實(shí)施例置于更大的媒體項(xiàng)目創(chuàng)建和發(fā)布系統(tǒng)的背景中。然而,應(yīng)當(dāng)明白,可以提供本發(fā)明的另選實(shí)施例,其中,使用已有媒體項(xiàng)目元數(shù)據(jù)數(shù)據(jù)庫(kù)和內(nèi)容存儲(chǔ)部,而不向編輯者提供對(duì)數(shù)據(jù)庫(kù)進(jìn)行添加的能力,即,不需要提供本示例中的CD3。
CD2上的ObjectStore客戶端程序包括數(shù)據(jù)庫(kù)方案36的定義,以下將參照?qǐng)D4對(duì)數(shù)據(jù)庫(kù)方案36進(jìn)行更詳細(xì)的描述。它還包括模板填充器程序38,該模板填充器程序38從客戶端計(jì)算機(jī)10、12接收模板數(shù)據(jù)40并對(duì)它進(jìn)行處理以生成用于返回給客戶端計(jì)算機(jī)10、12的編輯判決列表42。以下將參照?qǐng)D7和8對(duì)模板填充器程序38的操作進(jìn)行更詳細(xì)的討論。在ObjectStore客戶端程序中還包括有RPC服務(wù)器39,該RPC服務(wù)器39使得能夠在服務(wù)器計(jì)算機(jī)16與客戶端計(jì)算機(jī)(例如10、12)之間傳遞模板數(shù)據(jù)40和編輯判決列表42。
使用從CD4安裝到客戶端計(jì)算機(jī)10、12上的模板創(chuàng)建工具44來創(chuàng)建模板數(shù)據(jù)44。使用從同一CD4安裝的內(nèi)容合成器工具46,來從內(nèi)容存儲(chǔ)部20中取出編輯判決列表42中所列的媒體元素32,并對(duì)它們進(jìn)行組合,以便基于模板數(shù)據(jù)40向用戶50生成媒體項(xiàng)目48。使用RPC客戶端52執(zhí)行在服務(wù)器計(jì)算機(jī)16與客戶端計(jì)算機(jī)10、12之間的通信。
圖2示出了媒體對(duì)象(形成數(shù)據(jù)庫(kù)22的組件的軟件對(duì)象)中包括的信息。
為了輸入該信息,在選擇了一個(gè)媒體元素之后,編輯者按兩個(gè)階段輸入要與該媒體元素相關(guān)聯(lián)的元數(shù)據(jù)。在第一階段,編輯者可以雙擊一張圖片,以彈出可以將方案內(nèi)包括的參數(shù)的值輸入到其上的表單。
在圖2的第二到第十二行中示出了在第一階段中生成的元數(shù)據(jù)的示例(當(dāng)編輯者對(duì)文件賦予媒體元素標(biāo)識(shí)符時(shí)已生成了第一行中的信息)。
可以認(rèn)識(shí)到,根據(jù)結(jié)構(gòu)化數(shù)據(jù)模型來排列元數(shù)據(jù)。在每一行中,位于最右列的條目表示由用戶輸入的屬性值。結(jié)構(gòu)化數(shù)據(jù)模型可以規(guī)定應(yīng)當(dāng)按第一聚合級(jí)將多個(gè)屬性標(biāo)記為一個(gè)單元的成員,這里被稱為屬性組(在具有4列的那些行中的左起第二列)。結(jié)構(gòu)化數(shù)據(jù)模型還可以規(guī)定應(yīng)當(dāng)按第二聚合級(jí)將多個(gè)組標(biāo)記為一個(gè)單元的成員,這里被稱為屬性超組(superset)(在具有3列或4列的那些行中的最左列)。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到可以規(guī)定進(jìn)一步的聚合級(jí)。
該層級(jí)排列受到上述多媒體內(nèi)容描述接口的影響。本發(fā)明并不強(qiáng)求在所有可能的應(yīng)用中都使用完整的數(shù)據(jù)模型,而是使得能夠重用生產(chǎn)公司或特定工程組的主題域內(nèi)的內(nèi)容(例如,野生動(dòng)物紀(jì)錄片)。所提供的數(shù)據(jù)模型旨在提供最大元素組和幫助它們使用的接口以及可以應(yīng)用于它們的詞匯。
元數(shù)據(jù)包括可變數(shù)量個(gè)參數(shù)(但是必須符合預(yù)定結(jié)構(gòu)化數(shù)據(jù)模型)。在圖2所示的本示例中,編輯者輸入了18個(gè)屬性的值。這些屬性包括i)媒體元素ID其標(biāo)識(shí)媒體元素,在本示例中,編輯者賦予它0.xx的數(shù)值,其中xx反映了媒體元素在原始樣片內(nèi)的位置;其后是包括兩個(gè)屬性和一個(gè)“位置”屬性組的“媒體”超組。這兩個(gè)屬性是ii)URI其是包含該媒體元素的文件的統(tǒng)一資源標(biāo)識(shí)符;iii)格式其給出了對(duì)構(gòu)成該文件的數(shù)據(jù)的格式的表示;“位置”組包含如下兩個(gè)屬性iv)進(jìn)入(in)其表示在媒體元素開始處的自樣片開始起已經(jīng)過的時(shí)間;v)退出(out)其表示在媒體元素開始處的自樣片開始起已經(jīng)過的時(shí)間;“媒體”超組之后是4個(gè)“結(jié)構(gòu)”屬性構(gòu)成的超組。該超組的開始為vi)說明其是對(duì)文件內(nèi)容的說明;其后是包含3個(gè)屬性的另一組(稱為“賽事”);vii)種類其是在該文件中記錄的視頻序列中看到的賽事類型;viii)進(jìn)攻隊(duì)員其是執(zhí)行該賽事的主要?jiǎng)幼鞯娜?;ix)防守隊(duì)員其是承受該賽事的主要?jiǎng)幼鞯娜?;這些屬性之后是多個(gè)屬性構(gòu)成的域?qū)S贸M,在本示例中,所述多個(gè)屬性僅特別應(yīng)用于涉及從雙方運(yùn)動(dòng)賽事獲得的素材的媒體元素;頭兩個(gè)屬性屬于具有以下兩個(gè)屬性的一個(gè)組(被稱為“球隊(duì)”)x)主隊(duì)其是在原始樣片放映的足球比賽過程中在其主場(chǎng)比賽的球隊(duì)的名稱;
xi)客隊(duì)其是在原始樣片放映的足球比賽中的另一支足球隊(duì)的名稱;該組之后的是以下兩個(gè)屬性xii)進(jìn)攻隊(duì)員效力進(jìn)攻隊(duì)員效力(allegiance)的一方(如果有的話);xiii)防守隊(duì)員效力防守隊(duì)員效力的一方(如果有的話);這兩個(gè)屬性之后的是包含以下兩個(gè)屬性的一個(gè)組(被稱為“概念”)xiv)關(guān)注值該值在0到1之間,表示編輯者認(rèn)為該媒體元素有多重要;和xv)等級(jí)按與電影分級(jí)相似的方式,該值表示基于年齡準(zhǔn)則向人們播放該媒體元素的合適度。
在本申請(qǐng)人的早先國(guó)際專利申請(qǐng)GB 2003/003976中詳細(xì)描述了元數(shù)據(jù)創(chuàng)建的第二階段,該第二階段生成一個(gè)或更多個(gè)“關(guān)系”屬性。向用戶提供了圖形用戶界面,這使得他可以通過移動(dòng)并點(diǎn)擊PC的屏面18(圖1)上的表示媒體元素的圖標(biāo)來指示這些媒體元素之間的關(guān)系屬性。
編輯者可以指示的一個(gè)關(guān)系類型是序列關(guān)系。編輯者可能希望指示該性質(zhì)的序列關(guān)系,其中他感覺應(yīng)當(dāng)按所指示的順序播放這些媒體元素(如果響應(yīng)于對(duì)ObjectStore數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行的查詢而選擇了一個(gè)以上媒體元素的話)。例如,可以將示出了一年中的不同時(shí)間的園藝的多個(gè)媒體元素排列成一個(gè)序列,使得表示春天的花園的元素在表示夏天的花園的元素之前,依此類推。
在按此方式創(chuàng)建序列時(shí),在面向?qū)ο髷?shù)據(jù)庫(kù)中創(chuàng)建序列對(duì)象,作為容器對(duì)象,該容器對(duì)象包含指向與該序列內(nèi)包括的媒體元素相關(guān)聯(lián)的媒體對(duì)象的指針。從以下可以明白,可以生成本身包括多個(gè)序列的序列。在分配給該序列的標(biāo)識(shí)符中的第一個(gè)數(shù)字反映了該層級(jí)屬性。如果該序列只包括單獨(dú)的媒體元素,則序列標(biāo)識(shí)符具有1.x的形式,其中,每當(dāng)在該層級(jí)的第一級(jí)處形成了新序列或組(以下將對(duì)其進(jìn)行說明)時(shí),使x遞增即可。
與序列中的各媒體元素相關(guān)聯(lián)的媒體對(duì)象(即,元數(shù)據(jù))添加了該媒體元素在該序列內(nèi)的位置。在圖2的倒數(shù)第二行中可以看到該序列位置元數(shù)據(jù)的示例。
編輯者可能希望指示的媒體元素之間的另一種關(guān)系類型是組的隸屬關(guān)系。在編輯者希望指示如果選擇了組中的多個(gè)媒體元素則應(yīng)當(dāng)將它們一起示出的情況下,編輯者可以指示這種關(guān)系。該動(dòng)作創(chuàng)建了組對(duì)象,即,包含指向與該組內(nèi)的媒體元素相關(guān)聯(lián)的媒體對(duì)象的指針的容器對(duì)象。還將組對(duì)象存儲(chǔ)在面向?qū)ο髷?shù)據(jù)庫(kù)22內(nèi)。
面向?qū)ο缶幊躺婕熬帉戭?其中具有方法以及數(shù)據(jù)成員的用戶定義數(shù)據(jù)類型)。然后程序員創(chuàng)建并操縱這些類的實(shí)例,以便在這些實(shí)例在計(jì)算機(jī)上執(zhí)行時(shí)完成他們的工作。
類似地,面向?qū)ο髷?shù)據(jù)庫(kù)保持有對(duì)象類的實(shí)例,這些對(duì)象類具有數(shù)據(jù)成員(如在圖2中看到的元數(shù)據(jù))和允許對(duì)這些數(shù)據(jù)成員執(zhí)行查詢的方法。
在面向?qū)ο缶幊讨?,程序員可以建立對(duì)象類的層級(jí)。在這種層級(jí)中,對(duì)象類繼承父對(duì)象類的數(shù)據(jù)成員和方法。在編寫新類時(shí),可以改變方法的實(shí)現(xiàn)(這被稱為對(duì)父對(duì)象方法進(jìn)行重載),或者對(duì)繼承的父對(duì)象類的數(shù)據(jù)成員或方法進(jìn)行添加。這是面向?qū)ο缶幊烫嵘a重用的一個(gè)方式。
除繼承以外,面向?qū)ο缶幊烫嵘a重用的另一方式被稱為組合(composition)。在此情況下,可以將對(duì)象類編寫成包括另一類型的對(duì)象作為數(shù)據(jù)成員。
程序員可以定義抽象類。如果程序員將類聲明為抽象的,則不可以創(chuàng)建該類的對(duì)象的實(shí)例。僅將它用作確保程序員編寫的任何子類確實(shí)具有該抽象父類的所有數(shù)據(jù)成員和方法。
在諸如ObjectStore的面向?qū)ο髷?shù)據(jù)庫(kù)中使用了類似的概念。圖3示出了在本發(fā)明第一實(shí)施例中使用的對(duì)象層級(jí)。
數(shù)據(jù)庫(kù)中的所有對(duì)象都繼承來自基類SmartObject的數(shù)據(jù)成員和方法。這確保了待存儲(chǔ)在數(shù)據(jù)庫(kù)中的所有對(duì)象都具有使得它們可以是永久的(即,存儲(chǔ)在ObjectStore數(shù)據(jù)庫(kù)中)的特定屬性。此外,來自SmartObject的繼承確保了,在該數(shù)據(jù)庫(kù)內(nèi)存儲(chǔ)的所有對(duì)象中都存在貫穿整個(gè)數(shù)據(jù)庫(kù)都有用的其它方法(如輪詢對(duì)象以找出它的類型的能力,或要求它將自己翻譯成可擴(kuò)展標(biāo)記語(yǔ)言(XML)的能力)。
MediaController是數(shù)據(jù)庫(kù)中的“根”對(duì)象(被建模成單元素模式,即,永遠(yuǎn)只存在該類的對(duì)象的一個(gè)實(shí)例)。在其數(shù)據(jù)成員內(nèi)存在MediaBin對(duì)象的集合(組合的示例)。
MediaController集合類(一種C++模板)具有使得可以按表達(dá)式的形式對(duì)其執(zhí)行查詢的函數(shù)。例如,可以如下地查詢MediaController對(duì)象的實(shí)例(在本示例中將該實(shí)例稱為binList)MediaController∷binList->query(“MediaObject*”,“m_objId32%2==0”)。
該查詢導(dǎo)致調(diào)用形成所有MediaController對(duì)象(包括binList)中的一部分的查詢方法,該查詢方法返回該查詢的結(jié)果。在以上示例中,將返回帶有偶數(shù)號(hào)對(duì)象ID的MediaObject指針的集合。
MediaBin對(duì)象可以在它們之內(nèi)按目錄型層級(jí)結(jié)構(gòu)保持其它MediaBin對(duì)象。因此,例如,“WorldCup”MediaBin可以在其內(nèi)保持稱為“EnglandSweden”的MediaBin。同樣,“EnglandSweden”MediaBin將保持來自英格蘭瑞典世界杯比賽的聚集MediaObject。
MediaBin對(duì)象類還具有SemanticObject的集合。SemanticObject是抽象類。MediaObject、MORelationship、MOGroup以及MOSequence類都是該抽象SemanticObject類的子類(繼承的示例)。MediaObject是包含如在圖2中看到的元數(shù)據(jù)的對(duì)象。
MORelationship是帶有從它繼承來的MOGroup和MOSequence的中間抽象類。
SemanticObject(以及,通過繼承,MediaObject)具有作為指向MORelationship對(duì)象的指針的數(shù)據(jù)成員(稱為parentRelationship)。沒有父關(guān)系的MediaObject(稱為“根對(duì)象”)把該成員設(shè)置為“空”。
MORelationship對(duì)象具有在兩個(gè)MORelationship子類(MOGroup和MOSequence)中重載的一些公有抽象方法,它們是
publicvirtual BOOL insertObject(SmartObject*_data)=0;virtual BOOL removeObject(SmartObject*_ptr)=0;virtual BOOL contains(SmartObject*_ptr)=0;protectedvirtual BOOL insertObject(SmartObject*_data,Coll<SmartObject*>*_col);virtual BOOL removeObject(SmartObject*_ptr,Coll<SmartObject*>*_col);virtual BOOL contains(SmartObject*_ptr,Coll<SmartObject*>*_col);MOGroup重載這些公有方法并調(diào)用在Coll對(duì)象(無序集合)中傳遞的MORelationship保護(hù)方法。MOSequence重載同樣的方法并使用List對(duì)象(其為從Coll繼承的無序集合)調(diào)用所述保護(hù)方法。
此外,MOSequence還以insertFirst、insertLast、insertObjectBefore以及insertObjectAfter的形式提供其它公有方法,以在語(yǔ)義關(guān)聯(lián)對(duì)象的序列中的預(yù)定點(diǎn)處插入對(duì)象。
如上所述,MORelationship對(duì)象可以保持SmartObject的集合。然而,由MORelationship對(duì)象保持的SmartObject的TYPE受到限制(例如,MORelationship對(duì)象不保持MediaBin)。所保持的SmartObject類型限制于SemanticObject的兒子(i)MOGroup;(ii)MOSequence以及(iii)MediaObject。
當(dāng)向MORelationship對(duì)象中進(jìn)行插入時(shí),通過調(diào)用(由各衍生類從SmartObject繼承并重載的)getType對(duì)進(jìn)入對(duì)象執(zhí)行檢查,以驗(yàn)證其TYPE。假設(shè)它是合法的,則將該對(duì)象添加到集合(或列表)中,并將其parentRelationship屬性設(shè)置為剛添加了該對(duì)象的MORelationship。
由插入和刪除對(duì)象返回的布爾值表示是否成功執(zhí)行了該插入或刪除。
根據(jù)以上方法,編輯者能夠生成MOGroup和MOSequence對(duì)象,所述MOGroup和MOSequence對(duì)象包含指向MediaObject的指針的列表。圖4按層級(jí)形式示出了由編輯者輸入的關(guān)系。注意,圖4所示的編輯者生成的層級(jí)與在圖3中看到的數(shù)據(jù)庫(kù)方案層級(jí)不相關(guān)聯(lián)。每當(dāng)編輯者改變他或她對(duì)多個(gè)媒體元素的排列時(shí)都改變數(shù)據(jù)庫(kù)方案是不實(shí)際的。相反,將在圖4中看到的聯(lián)系作為數(shù)據(jù)成員存儲(chǔ)在MOGroup和MOSequence對(duì)象中。
在該編輯者生成層級(jí)中,在樹結(jié)構(gòu)的“葉子”處看到了MediaObject。許多MediaObject(例如,0.13、0.14以及0.15)被布置成組(例如,1.2),如在其下方具有指向?qū)儆谒鼈兊腗ediaObject的箭頭的矩形所示。類似地對(duì)序列進(jìn)行描繪,只不過序列在矩形的左上角具有箭頭。組和序列本身可以是上級(jí)組和序列的成員。
執(zhí)行從CD4安裝到客戶端計(jì)算機(jī)10、12上的模板創(chuàng)建工具代碼,來為用戶提供用以指定希望的媒體項(xiàng)目特性的接口,由此創(chuàng)建模板數(shù)據(jù)40。
和媒體對(duì)象類似,用于本實(shí)施例的模板對(duì)象符合綜合預(yù)定義數(shù)據(jù)模型。如可以從圖6看到的,該預(yù)定義數(shù)據(jù)模型包括標(biāo)題域和多個(gè)段。每個(gè)段都是包括名稱域、查詢域并且可選地包括約束域的組。當(dāng)運(yùn)行時(shí),模板創(chuàng)建程序?qū)蛻舳擞?jì)算機(jī)10、12進(jìn)行控制,以提示用戶輸入模板的名稱并指示段結(jié)構(gòu)(頂層段本身可以包含多個(gè)段)。用戶使用與在例如微軟視窗資源管理器中提供的文件夾列表類似的圖形用戶界面組件來指示段結(jié)構(gòu)。在圖6給出的示例中,該模板具有3個(gè)段的平結(jié)構(gòu)。
用戶使用該圖形用戶界面輸入針對(duì)每一個(gè)所述段的查詢串。針對(duì)圖6中的中段的查詢串表示填充模板中的該空隙的候選媒體對(duì)象必須以Michael Owen為指名的動(dòng)作者(named actor)。
如果用戶希望對(duì)由響應(yīng)于查詢而從數(shù)據(jù)庫(kù)中獲取的媒體對(duì)象表示的媒體元素設(shè)置某些約束,那么用戶也可以輸入針對(duì)這些段的一個(gè)或更多個(gè)約束。這些約束旨在限制模板填充器對(duì)媒體對(duì)象進(jìn)行組裝的方式。可能的約束示例包括時(shí)間(例如,該段必須為5分鐘長(zhǎng))、空間(例如,必須在640*480像素顯示器上觀看該呈現(xiàn))或數(shù)量(在新聞節(jié)目的“頭條”段中必須有5條新聞項(xiàng))。
一旦用戶表示完成了模板,則客戶端計(jì)算機(jī)10、12(使用RPC客戶端39和服務(wù)器52)將模板數(shù)據(jù)40發(fā)送給服務(wù)器計(jì)算機(jī)16。
然后將模板數(shù)據(jù)40傳遞給模板填充器程序38(其如圖7所示地進(jìn)行操作)。
如上所述,模板填充器模塊38提供了用于自動(dòng)組裝編輯判決列表42的處理,以準(zhǔn)備將一組媒體對(duì)象合成為針對(duì)消費(fèi)者50的個(gè)性化媒體項(xiàng)目48。在開始時(shí),模板填充器38采用特定模板(例如,圖6)和媒體對(duì)象的存儲(chǔ)部的指示符(在本情況下是對(duì)面向?qū)ο髷?shù)據(jù)庫(kù)22的位置的表示)作為其輸入。
然后模板填充器標(biāo)識(shí)出模板的第一段(圖6)并在模板的層級(jí)結(jié)構(gòu)中進(jìn)行迭代。
每次迭代(圖7)都涉及正被搜索的模板中的下一段,將該段中的任何查詢轉(zhuǎn)換成ObjectStore查詢(步驟60),由ObjectStore服務(wù)器和客戶端程序來執(zhí)行該ObjectStore查詢(步驟62),以返回指向相關(guān)媒體對(duì)象的一組指針(引用)。然后使用所返回的引用來發(fā)出針對(duì)與由所接收到的引用指向的媒體對(duì)象在語(yǔ)義上相關(guān)聯(lián)的媒體對(duì)象的進(jìn)一步的ObjectStore查詢(步驟63)。然后,執(zhí)行各種步驟(64、68、72)以生成編輯判決列表42的與模板填充器程序的當(dāng)前迭代正在處理的模板的段相對(duì)應(yīng)的部分。
以下對(duì)與在圖6中名稱為“主體”的段相關(guān)聯(lián)的第二次迭代進(jìn)行描述。該循環(huán)以執(zhí)行包含在該段中的查詢開始(步驟62)。在第二段內(nèi)的查詢請(qǐng)求以Michael Owen作為上述姓指名動(dòng)作者的所有MediaObject。
圖8更詳細(xì)地示出了在發(fā)出和回答一次查詢和二次查詢的步驟(圖762、63)中涉及的處理。在步驟705中,將在稱為binList的MediaBin上執(zhí)行ObjectStore查詢,在本示例中,該ObjectStore查詢類似于以下查詢binList->query(“MediaObject*”,“m_mediaObjects[m_actorList[strcmp(data,”Michael Owen”)==0]]”).
該查詢向模板填充器程序38返回指向其中“Michael Owen”是指名動(dòng)作者的MediaObject的引用的集合。
步驟707表示ObjectStore數(shù)據(jù)庫(kù)服務(wù)器34和ObjectStore客戶端程序(36、38、39)按如下方式相互操作,即,使得將如ObjectStore數(shù)據(jù)庫(kù)服務(wù)器回答查詢而訪問的頁(yè)面(存儲(chǔ)器的4K個(gè)單元)從RAID18傳送給服務(wù)器計(jì)算機(jī)的易失性存儲(chǔ)器(RAM)17。即使在回答查詢時(shí)使用存在于數(shù)據(jù)庫(kù)中的任何索引,這也會(huì)得到包含滿足傳送到易失性存儲(chǔ)器17中的查詢的媒體對(duì)象的頁(yè)面。
更詳細(xì)地,ObjectStore客戶端程序使用由現(xiàn)代操作系統(tǒng)(在本示例中,假設(shè)服務(wù)器計(jì)算機(jī)16正在運(yùn)行諸如視窗NT的合適操作系統(tǒng)程序)提供的虛擬存儲(chǔ)器(頁(yè)面交換)代碼,以便處理指向在尚未從RAID18傳送給服務(wù)器計(jì)算機(jī)16的易失性存儲(chǔ)器17的頁(yè)面上的對(duì)象的引用。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,該情況類似于其中在PC的硬盤與該P(yáng)C的易失性存儲(chǔ)器之間傳送存儲(chǔ)器頁(yè)面的頁(yè)面交換系統(tǒng)中使用的情況。在程序、數(shù)據(jù)以及堆棧的組合大小大于可用物理存儲(chǔ)器的情況下使用虛擬存儲(chǔ)器。在被引用對(duì)象駐留的頁(yè)面已在服務(wù)器計(jì)算機(jī)16的易失性存儲(chǔ)器17中的情況下,對(duì)于ObjectStore客戶端程序來說跟蹤指針是直接了當(dāng)?shù)氖虑?,然而在尚未將相關(guān)頁(yè)面?zhèn)魉徒o服務(wù)器計(jì)算機(jī)的易失性存儲(chǔ)器17的情況下,虛擬存儲(chǔ)器代碼發(fā)出存儲(chǔ)器故障。ObjectStore客戶端代碼通過從ObjectStore數(shù)據(jù)庫(kù)服務(wù)器34請(qǐng)求相關(guān)頁(yè)面對(duì)該存儲(chǔ)器故障進(jìn)行響應(yīng)。
由此,有關(guān)ObjectStore的上述項(xiàng)目規(guī)定“ObjectStore在客戶端主機(jī)的虛擬存儲(chǔ)器中保持客戶端高速緩存(其為最近使用過的數(shù)據(jù)庫(kù)頁(yè)面的池)。當(dāng)應(yīng)用信令表示存儲(chǔ)器故障時(shí),ObjectStore確定正在訪問的頁(yè)面是否在客戶端高速緩存中。若否,則ObjectStore要求ObjectStore服務(wù)器將該頁(yè)面發(fā)送給客戶端,并將該頁(yè)面置于客戶端高速緩存中。然后,將該客戶端高速緩存的頁(yè)面映射到(客戶端主機(jī)的)虛擬地址空間中,使得應(yīng)用可以訪問它。最后,重啟故障指令,然后應(yīng)用繼續(xù)進(jìn)行”。
盡管以上段落涉及在與服務(wù)器計(jì)算機(jī)(其中存儲(chǔ)有數(shù)據(jù)庫(kù))不同的客戶端計(jì)算機(jī)上運(yùn)行有ObjectStore客戶端程序的情況,但是在同一計(jì)算機(jī)(這是在本實(shí)施例中的情況)上運(yùn)行有ObjectStore數(shù)據(jù)庫(kù)服務(wù)器和ObjectStore客戶端程序的情況下也可以看到相同的優(yōu)點(diǎn)如果客戶端程序(36、38、39)為了回答查詢而必須訪問的多個(gè)媒體對(duì)象中的一個(gè)或更多個(gè)位于在存儲(chǔ)器17的被分配給該客戶端程序的該部分內(nèi)的高速緩存中保持的頁(yè)面內(nèi),則該客戶端程序?qū)⒏焖俚亟馕鲈摬樵?。高速緩存的默認(rèn)大小是8MB,然而服務(wù)器計(jì)算機(jī)17的管理員可以更改該大小。
在步驟705中發(fā)出的對(duì)查詢的回答可能導(dǎo)致例如對(duì)在圖9中以粗線為輪廓線的MediaObject的選擇。這些媒體對(duì)象中的每一個(gè)都保持在高速緩存中,即,保持在服務(wù)器計(jì)算機(jī)16的易失性存儲(chǔ)器17中。將對(duì)這些目標(biāo)的引用傳遞給模板填充器程序38。
在步驟711中,(通過所選擇的MediaObject中的每一個(gè)的parentRelationship和MORelationship數(shù)據(jù)成員)針對(duì)具有與響應(yīng)于第一次查詢而返回的多個(gè)MediaObject中的每一個(gè)相同的父親的MediaObject執(zhí)行進(jìn)一步的查詢。構(gòu)造該第二組(以及任何隨后的)語(yǔ)義查詢的效果是將“關(guān)聯(lián)”對(duì)象從RAID18傳送到服務(wù)器計(jì)算機(jī)16的易失性存儲(chǔ)器17中。
該二次查詢可能導(dǎo)致例如對(duì)在圖10中以粗線為輪廓的MediaObject的選擇。同樣,將包含這些媒體對(duì)象的頁(yè)面從RAID18傳送到易失性存儲(chǔ)器17(步驟715),并將指向這些媒體對(duì)象的引用提供給模板填充器代碼(步驟717)。
回到圖7,在步驟64中,構(gòu)造了包括響應(yīng)于第一次查詢而選擇的媒體對(duì)象作為其“葉子”的樹。如下地執(zhí)行該構(gòu)造獲取第一次選擇的媒體對(duì)象的父對(duì)象,接著再獲取該父對(duì)象的父對(duì)象,依此類推,直到到達(dá)沒有與其相關(guān)聯(lián)的父對(duì)象的對(duì)象為止。此時(shí),已經(jīng)重構(gòu)了從葉子對(duì)象到頂層容器的單鏈表。檢查另一選擇的葉子對(duì)象(如果作為查詢的結(jié)果選擇了一個(gè)以上對(duì)象),接著檢查該葉子對(duì)象的祖先,直到要么獲取了已存在于表示第一個(gè)對(duì)象的祖先的鏈表中的對(duì)象,要么遇到另一頂層容器為止。針對(duì)在所述選擇中的所有其它對(duì)象重復(fù)該處理,重構(gòu)了包含這些對(duì)象的最小樹。
例如,接著該最小樹可能如圖11所示。
在構(gòu)建樹(步驟62到64)之后,對(duì)該樹內(nèi)的對(duì)象進(jìn)行排序(步驟68)。
排序(步驟68)考慮了由用戶輸入的序列信息。通過使用公知的“快速排序”算法將該樹的節(jié)點(diǎn)布置成如由與對(duì)象相關(guān)聯(lián)的序列位置元數(shù)據(jù)標(biāo)識(shí)的正確順序,來執(zhí)行該排序。在樹的頂部開始然后向葉子(即,媒體對(duì)象)移動(dòng),來執(zhí)行該排序。
模板填充器接著對(duì)任何約束進(jìn)行評(píng)估,并對(duì)該樹進(jìn)行相應(yīng)的更新(步驟72)。為了對(duì)時(shí)間約束進(jìn)行評(píng)估,通過將“進(jìn)入”屬性減去“退出”屬性來計(jì)算在該樹內(nèi)包括的每個(gè)媒體對(duì)象的持續(xù)時(shí)間,并將這些持續(xù)時(shí)間加起來以達(dá)到實(shí)際持續(xù)時(shí)間。如果發(fā)現(xiàn)該持續(xù)時(shí)間比目標(biāo)持續(xù)時(shí)間長(zhǎng),則從樹中刪除所述媒體對(duì)象。如果該持續(xù)時(shí)間比目標(biāo)持續(xù)時(shí)間段,則將媒體對(duì)象添加到樹中。
在實(shí)際持續(xù)時(shí)間比目標(biāo)持續(xù)時(shí)間短的情況下,選擇屬于與響應(yīng)于第一次查詢而選擇的任何MediaObject相同的序列的MediaObject,然后按在序列中的接近度的次序和持續(xù)時(shí)間的次序?qū)⑺鼈冏芳拥剿x擇的MediaObject。然后按與原始樹相同的方式創(chuàng)建當(dāng)前段的新樹。重復(fù)該處理,直到實(shí)際持續(xù)時(shí)間比目標(biāo)持續(xù)時(shí)間長(zhǎng)。
可以理解,該步驟將比其它可能的情況稍快,因?yàn)樵诓襟E715中發(fā)出二次查詢時(shí)已將該MediaObject傳送到易失性存儲(chǔ)器17中。
當(dāng)所有段都已填滿媒體對(duì)象元數(shù)據(jù)并根據(jù)所提供的查詢和約束進(jìn)行了定序時(shí),模板填充器通過將在循環(huán)的3次迭代中生成的樹的葉子處找到的媒體元素連接起來,輸出(步驟78)編輯判決列表(圖12)。
將由模板填充器程序模塊(46)生成的編輯判決列表(圖12)傳遞給PC中的內(nèi)容合成器模塊(48)。在本示例中,內(nèi)容合成器模塊按流式傳輸視頻呈現(xiàn)逐場(chǎng)景地進(jìn)行輸出,或者將這些場(chǎng)景連接起來以生成節(jié)目文件。當(dāng)然,可以理解,用戶希望在盡可能短的延遲之后被提供自動(dòng)生成的節(jié)目。
可以理解,本實(shí)施例通過在數(shù)據(jù)庫(kù)中存儲(chǔ)表示數(shù)據(jù)庫(kù)中的對(duì)象間的關(guān)系的關(guān)系數(shù)據(jù),按某種方式實(shí)現(xiàn)了以上目的。通過分析該關(guān)系數(shù)據(jù),可以識(shí)別與響應(yīng)于查詢而返回的一次對(duì)象相關(guān)聯(lián)的二次對(duì)象并將它們傳送到高速緩存中。從而加快了隨后的查詢(其可能要求訪問二次對(duì)象以被解析)。
可以按許多不同的方式來實(shí)現(xiàn)本發(fā)明。例如,可以按以下列出的一個(gè)或更多個(gè)方式來更改上述實(shí)施例,以提供本發(fā)明的另選實(shí)施例(該列表決不是窮舉性的)i)盡管第一實(shí)施例示出了通過因特網(wǎng)連接到服務(wù)器的個(gè)人計(jì)算機(jī),但是本發(fā)明的其它實(shí)施例可以使用機(jī)頂盒而非計(jì)算機(jī),在相關(guān)聯(lián)的電視機(jī)上示出所得視頻。還可以使用嵌入有這種機(jī)頂盒的功能性的電視。代替因特網(wǎng),可以使用其它網(wǎng)絡(luò),如電纜電視網(wǎng)絡(luò)、衛(wèi)星或地面無線網(wǎng)絡(luò)。
ii)用戶可以改變模板中的約束段,例如,可以向用戶提供圖形用戶界面,用戶在該圖像用戶界面中可以選擇他希望看到的媒體項(xiàng)目的持續(xù)時(shí)間。然后可以由模板填充器程序?qū)?duì)應(yīng)的值加入模板對(duì)象。
iii)在以上實(shí)施例中使用了面向?qū)ο髷?shù)據(jù)庫(kù),本發(fā)明的其它實(shí)施例可以使用關(guān)系數(shù)據(jù)庫(kù)。在這種實(shí)施例中,可以將表示語(yǔ)義關(guān)聯(lián)數(shù)據(jù)項(xiàng)的關(guān)系數(shù)據(jù)存儲(chǔ)在單獨(dú)的表中,使用一次關(guān)鍵字和二次關(guān)鍵字獲得在該數(shù)據(jù)庫(kù)中的記錄與在列出了一個(gè)或更多個(gè)語(yǔ)義關(guān)聯(lián)數(shù)據(jù)項(xiàng)的另一個(gè)表中的記錄之間的連接,以表示在這兩個(gè)表之間的關(guān)聯(lián)。按這種方式,可以將圖3所示的元數(shù)據(jù)作為一個(gè)或更多個(gè)記錄存儲(chǔ)在相應(yīng)的表中。
iv)在以上實(shí)施例中,ObjectStore客戶端程序在服務(wù)器計(jì)算機(jī)上運(yùn)行。在另選實(shí)施例中,ObjectStore客戶端卻可以在客戶端計(jì)算機(jī)上運(yùn)行。在該情況下,高速緩存機(jī)制甚至更有利,因?yàn)槊看卧诳蛻舳擞?jì)算機(jī)的存儲(chǔ)器中找到了相關(guān)數(shù)據(jù)項(xiàng)時(shí),都將節(jié)省在因特網(wǎng)上發(fā)送請(qǐng)求和進(jìn)行響應(yīng)所需要的時(shí)間。
權(quán)利要求
1.計(jì)算機(jī)設(shè)備,該計(jì)算機(jī)設(shè)備具有i)一個(gè)或更多個(gè)數(shù)據(jù)處理器;ii)可連接到所述一個(gè)或更多個(gè)數(shù)據(jù)處理器的永久存儲(chǔ)裝置,所述永久存儲(chǔ)裝置存儲(chǔ)多個(gè)數(shù)據(jù)項(xiàng),所述多個(gè)數(shù)據(jù)項(xiàng)中的一個(gè)或更多個(gè)包含對(duì)一個(gè)或更多個(gè)其它數(shù)據(jù)項(xiàng)的引用;ii)可連接到所述一個(gè)或更多個(gè)數(shù)據(jù)處理器的易失性存儲(chǔ)器裝置,其用于存儲(chǔ)所述多個(gè)數(shù)據(jù)項(xiàng)中的一個(gè)或更多個(gè);iii)數(shù)據(jù)庫(kù)管理系統(tǒng)軟件,其可由所述一個(gè)或更多個(gè)數(shù)據(jù)處理器執(zhí)行,以通過從所述永久存儲(chǔ)裝置向所述易失性存儲(chǔ)器裝置傳遞滿足在一查詢中指定的一個(gè)或更多個(gè)準(zhǔn)則的數(shù)據(jù)項(xiàng),而對(duì)所述查詢進(jìn)行響應(yīng);iv)查詢代碼,其可由所述一個(gè)或更多個(gè)數(shù)據(jù)處理器執(zhí)行,以向所述數(shù)據(jù)庫(kù)管理系統(tǒng)軟件傳遞查詢;v)預(yù)取代碼,其可由所述一個(gè)或更多個(gè)數(shù)據(jù)處理器執(zhí)行以執(zhí)行以下操作a)對(duì)響應(yīng)于所述查詢而提供的響應(yīng)數(shù)據(jù)項(xiàng)進(jìn)行分析,以找到與所述響應(yīng)數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的關(guān)聯(lián)數(shù)據(jù)項(xiàng);和b)自動(dòng)生成針對(duì)所述關(guān)聯(lián)數(shù)據(jù)項(xiàng)的另一查詢。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)設(shè)備,其中,所述多個(gè)數(shù)據(jù)項(xiàng)中的每一個(gè)都包含與第一媒體文件有關(guān)的元數(shù)據(jù),所述元數(shù)據(jù)包括所述引用,所述引用中的每一個(gè)都直接或間接地引用其元數(shù)據(jù)與第二媒體文件有關(guān)的關(guān)聯(lián)元數(shù)據(jù)數(shù)據(jù)項(xiàng),該第二媒體文件的內(nèi)容與第一媒體文件的內(nèi)容在語(yǔ)義上相關(guān)聯(lián)。
3.根據(jù)權(quán)利要求1或2所述的計(jì)算機(jī)設(shè)備,該計(jì)算機(jī)設(shè)備包括客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī),該客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī)中的每一個(gè)都具有所述多個(gè)處理器中的至少一個(gè)處理器,所述服務(wù)器計(jì)算機(jī)控制所述永久存儲(chǔ)器,而所述客戶端計(jì)算機(jī)控制所述易失性存儲(chǔ)器。
4.根據(jù)權(quán)利要求3所述的計(jì)算機(jī)設(shè)備,其中,所述多個(gè)數(shù)據(jù)項(xiàng)被按存儲(chǔ)器頁(yè)面的形式傳送。
5.根據(jù)權(quán)利要求3或4所述的計(jì)算機(jī)設(shè)備,其中,所述服務(wù)器計(jì)算機(jī)對(duì)所述查詢進(jìn)行解析,并將所選擇的數(shù)據(jù)項(xiàng)發(fā)送給所述客戶端計(jì)算機(jī)。
6.根據(jù)權(quán)利要求3或4所述的計(jì)算機(jī)設(shè)備,其中,所述服務(wù)器計(jì)算機(jī)向所述客戶端計(jì)算機(jī)發(fā)送所述多個(gè)數(shù)據(jù)項(xiàng),而所述客戶端計(jì)算機(jī)對(duì)所述查詢進(jìn)行解析。
7.根據(jù)任一前述權(quán)利要求所述的計(jì)算機(jī)設(shè)備,其中,所述多個(gè)數(shù)據(jù)項(xiàng)是軟件對(duì)象。
8.一種用于操作計(jì)算機(jī)設(shè)備的方法,所述計(jì)算機(jī)設(shè)備包括處理器和所述處理器可訪問的第一數(shù)據(jù)存儲(chǔ)部和第二數(shù)據(jù)存儲(chǔ)部,所述處理器對(duì)所述第一存儲(chǔ)部中保持的數(shù)據(jù)的訪問比對(duì)所述第二存儲(chǔ)部的訪問快,所述方法包括以下步驟將多個(gè)數(shù)據(jù)項(xiàng)連同表示在所述多個(gè)數(shù)據(jù)項(xiàng)之間的關(guān)系的關(guān)系數(shù)據(jù)存儲(chǔ)在所述第二數(shù)據(jù)存儲(chǔ)部中;和在所述處理器上執(zhí)行一處理以執(zhí)行以下操作i)從所述第二存儲(chǔ)部取出一個(gè)或更多個(gè)數(shù)據(jù)項(xiàng),以及表示與所述取出的數(shù)據(jù)項(xiàng)在語(yǔ)義上相關(guān)聯(lián)的一個(gè)或更多個(gè)關(guān)聯(lián)數(shù)據(jù)項(xiàng)的關(guān)系數(shù)據(jù);ii)響應(yīng)于接收到所述關(guān)系數(shù)據(jù),將所述語(yǔ)義關(guān)聯(lián)數(shù)據(jù)項(xiàng)中的一個(gè)或更多個(gè)從所述第二存儲(chǔ)器取到所述第一存儲(chǔ)器;以及iii)在隨后請(qǐng)求數(shù)據(jù)項(xiàng)時(shí),檢查在所述第一存儲(chǔ)部中是否存在所述請(qǐng)求的數(shù)據(jù)項(xiàng),如果存在,則從所述第一存儲(chǔ)部讀取所述數(shù)據(jù)項(xiàng)。
9.根據(jù)權(quán)利要求8所述的方法,其中,所述數(shù)據(jù)項(xiàng)包括媒體文件的標(biāo)識(shí)符和表示所述標(biāo)識(shí)的媒體文件描繪什么的元數(shù)據(jù)。
10.根據(jù)權(quán)利要求8所述的方法,其中,所述第二存儲(chǔ)部保持一數(shù)據(jù)庫(kù)。
全文摘要
本發(fā)明涉及元數(shù)據(jù)型預(yù)取。一種計(jì)算機(jī)設(shè)備使用數(shù)據(jù)庫(kù)(22)來提供對(duì)描述媒體文件(32)的內(nèi)容的元數(shù)據(jù)(36)的永久存儲(chǔ)。使用元數(shù)據(jù)來根據(jù)這些媒體文件創(chuàng)建個(gè)性化媒體項(xiàng)目(48)。該元數(shù)據(jù)還指示這些媒體文件之間的關(guān)系。為了加速創(chuàng)建個(gè)性化媒體項(xiàng)目(48),將媒體元素元數(shù)據(jù)項(xiàng)存儲(chǔ)在高速緩存中。通過從獲取的元數(shù)據(jù)項(xiàng)(36)中讀取關(guān)聯(lián)媒體元素?cái)?shù)據(jù),然后預(yù)取這些項(xiàng)并將它們置于高速緩存中,進(jìn)一步改進(jìn)了該高速緩存的有用性。由于這些數(shù)據(jù)項(xiàng)的關(guān)聯(lián)性意味著在不久的將來更有可能需要該關(guān)聯(lián)數(shù)據(jù)項(xiàng),所以該高速緩存方法比公知的高速緩存方法更有用。此外,在不對(duì)將這些數(shù)據(jù)項(xiàng)置于永久存儲(chǔ)部上的何處設(shè)置約束的情況下,實(shí)現(xiàn)了對(duì)高速緩存的改進(jìn)有用性。
文檔編號(hào)G06F17/30GK1938701SQ200580009726
公開日2007年3月28日 申請(qǐng)日期2005年3月18日 優(yōu)先權(quán)日2004年3月26日
發(fā)明者伊恩·克里斯托夫·克格爾, 杰里米·邁克爾·索恩, 馬丁·拉斯, 蒂莫西·肖恩·史蒂文斯, 賈森·莫費(fèi)特 申請(qǐng)人:英國(guó)電訊有限公司