專利名稱:現(xiàn)實(shí)實(shí)體因特網(wǎng)存儲服務(wù)的制作方法
現(xiàn)實(shí)實(shí)體因特網(wǎng)存儲服務(wù)
北旦 冃足
近來提供軟件作為服務(wù)的趨勢導(dǎo)致了將存儲作為服務(wù)的若干個鮮明的示例。 現(xiàn)今存在兩個眾所周知的將存儲作為服務(wù)的示例,向諸如照片管理站點(diǎn)等應(yīng)用程序
提供存儲。照片管理站點(diǎn)使用戶能夠上傳、管理、用超文本標(biāo)記語言(HTML)鏈 接、下載和用電子郵件收發(fā)照片或其它數(shù)據(jù)文件。這些存儲服務(wù)中的第一集合提供 了用于跨因特網(wǎng)存儲遠(yuǎn)程數(shù)據(jù)的文件系統(tǒng)級編程模型。然而,該模型幾乎不具有強(qiáng) 查詢能力,而僅在應(yīng)用級提供與數(shù)據(jù)庫最小限度的交互并且不滿足許多數(shù)據(jù)庫程序 人員的要求。作為服務(wù)的存儲的第二常見集合提供了可以橋接文件系統(tǒng)級編程模型 和現(xiàn)代程序員的需要之間的缺口的某些基本的概念建模能力,然而具有這種存儲服 務(wù)的應(yīng)用編程接口 (API)的形式通常采用域?qū)S玫男问?,這會限制該服務(wù)的能力。 --般而言,作為服務(wù)的現(xiàn)代存儲體系結(jié)構(gòu)所提供的編程模型和現(xiàn)代數(shù)據(jù)庫程序員的 需求之間存在重大的缺口。
通常,數(shù)據(jù)庫程序員要求具有允許他們創(chuàng)建通用應(yīng)用程序的前端的靈活的存 儲服務(wù)。文件系統(tǒng)級服務(wù)可以提供為底層存儲實(shí)現(xiàn)提供靈活性的特征集。此外,它 們通常允許客戶機(jī)實(shí)體每次寫、讀和刪除達(dá)5千兆字節(jié)(GB)的不受限數(shù)目的對 象。諸如上述照片共享站點(diǎn)等通用應(yīng)用程序服務(wù)已經(jīng)開始使用這些服務(wù)。然而,這 些服務(wù)受限于它們不提供到統(tǒng)一的前端應(yīng)用程序的復(fù)雜性。其它作為服務(wù)的存儲體 系結(jié)構(gòu)采用了更為復(fù)雜的前端服務(wù),但是發(fā)展成了提供類型專用的API,這可能限 制它們作為通用存儲服務(wù)體系結(jié)構(gòu)的總體效率。就此,程序人員仍然能夠受益于有 待開發(fā)的用于大規(guī)模數(shù)據(jù)庫編程存儲服務(wù)的新方法。
概述
以下提出了所要求保護(hù)的主題的簡化概述以提供對所要求保護(hù)的主題的某些 方面的基本理解。本概述并不是對所要求保護(hù)的主題的全面綜述。它既不旨在標(biāo)識 所要求保護(hù)的主題的關(guān)鍵或重要的元素,也不描繪所要求保護(hù)的主題的范圍。其唯 一目的是以簡化的形式來介紹所要求保護(hù)的主題的一些概念,作為稍后呈現(xiàn)的更為 詳細(xì)的描述的前序部分。
此處公開并要求保護(hù)的主題在其各個方面提供了作為高度可表達(dá)的概念體系結(jié)構(gòu)和高度可伸縮的因特網(wǎng)類型的數(shù)據(jù)存儲體系結(jié)構(gòu)之間的中介的數(shù)據(jù)存儲配置。 該系統(tǒng)可以包括通過代表性狀態(tài)傳輸(REST)接口來方便兩個或更多這種數(shù)據(jù) 建模體系結(jié)構(gòu)之間的信息交換的映射組件。通過提供這種交換,對遠(yuǎn)程因特網(wǎng)類型 的數(shù)據(jù)存儲的查詢可以用高度可表達(dá)的概念格式來發(fā)送,而無需展示遠(yuǎn)程數(shù)據(jù)存儲 的結(jié)構(gòu)。因此,該數(shù)據(jù)存儲配置可以提供豐富的數(shù)據(jù)訪問環(huán)境,而同時維護(hù)諸如服 務(wù)器、數(shù)據(jù)庫等存儲資源的可伸縮性。
根據(jù)所要求保護(hù)的主題的另一些方面,在該數(shù)據(jù)存儲系統(tǒng)上提供了統(tǒng)一接口,
從而以統(tǒng)一的方式呈現(xiàn)用于展示數(shù)據(jù)的一致的、基于模型的機(jī)制。所支持的是足夠 強(qiáng)大來以其構(gòu)建通用應(yīng)用程序的查詢能力。這種接口可以提供成熟的消費(fèi)者就緒應(yīng)
用程序接口 (例如網(wǎng)站等)、專業(yè)的基于REST的API接口 (諸如網(wǎng)站開發(fā)者、 數(shù)據(jù)庫設(shè)計(jì)者等)、或其組合。
根據(jù)所要求保護(hù)的主題的其它方面,公開了使用戶能根據(jù)實(shí)體數(shù)據(jù)模型 (EDM)來定義模式的在線的因特網(wǎng)規(guī)模的系統(tǒng)。該系統(tǒng)還管理在遠(yuǎn)程數(shù)據(jù)存儲 處存儲信息的方式,該方式獨(dú)立于用戶所創(chuàng)建的EDM模式。這種系統(tǒng)另外可以部 署在大規(guī)模專用內(nèi)聯(lián)網(wǎng)中以用于專用的豐富存儲和應(yīng)用程序服務(wù)。
以下描述和附圖詳細(xì)闡明了所要求保護(hù)的主題的某些說明性方面。然而,這 些方面僅指示了可采用所要求保護(hù)的主題的原理的各種方法中的幾種,且所要求保 護(hù)的主題旨在包括所有這些方面及其等效方面。當(dāng)結(jié)合附圖考慮以下所要求保護(hù)的 主題的詳細(xì)描述時,所要求保護(hù)的主題的其它優(yōu)點(diǎn)和區(qū)別特征將變得顯而易見。
附圖簡述
圖1示出了根據(jù)所要求保護(hù)的主題的一方面的將無狀態(tài)的統(tǒng)一的REST接口 與高度可伸縮的因特網(wǎng)類型的數(shù)據(jù)存儲進(jìn)行映射的系統(tǒng)。
圖2描繪了根據(jù)本發(fā)明的各方面的用于結(jié)合高度可伸縮的因特網(wǎng)類型的數(shù)據(jù) 存儲來構(gòu)建通用應(yīng)用程序的可表達(dá)査詢結(jié)構(gòu)。
圖3描繪了根據(jù)本發(fā)明的各方面的在高度可表達(dá)EDM建模模式與高度可伸縮 的數(shù)據(jù)存儲模型之間進(jìn)行映射的系統(tǒng)。
圖4示出了結(jié)合本發(fā)明的一方面的提供可變的數(shù)據(jù)存儲的支持級的示例性服 務(wù)協(xié)議。
圖5描繪了根據(jù)所要求保護(hù)的主題的各方面的用于提供高度可表達(dá)的建模環(huán) 境而同時維護(hù)因特網(wǎng)類型的數(shù)據(jù)存儲的可伸縮性的示例方法。
圖6示出了根據(jù)此處所描述的各方面的用于管理web類型的數(shù)據(jù)存儲和EDM應(yīng)用程序建模環(huán)境之間的接口的示例性方法600 。
圖7描繪了根據(jù)本發(fā)明的各方面的用于提供市場上可購買到的服務(wù)平臺的示 例方法。
圖8示出了足以支持高度可表達(dá)的應(yīng)用程序概念模型和高度可伸縮的數(shù)據(jù)存 儲模型之間的接口的示例聯(lián)網(wǎng)環(huán)境。
圖9描繪了根據(jù)本發(fā)明各方面的示例性計(jì)算環(huán)境。
詳細(xì)描述
現(xiàn)在參考附圖來描述所要求保護(hù)的主題,所有附圖中使用相同的附圖標(biāo)記來 指代相同的要素。在以下描述中,為解釋起見,闡明了眾多具體細(xì)節(jié)以提供對所要 求保護(hù)的主題的全面理解。然而,很明顯,所要求保護(hù)的主題可以在沒有這些具體 細(xì)節(jié)的情況下實(shí)施。在其它情況下,以框圖形式示出了公知的結(jié)構(gòu)和設(shè)備以便于描 述所要求保護(hù)的主題。
如在本申請中所使用的,術(shù)語"組件"、"模塊"、"系統(tǒng)"、"接口"、 "實(shí)體數(shù)據(jù)模型"等一般旨在表示計(jì)算機(jī)相關(guān)的實(shí)體,其可以是硬件、硬件和軟件 的組合、軟件、或者執(zhí)行中的軟件。例如,組件可以是,但不限于是,在處理器上 運(yùn)行的進(jìn)程、處理器、對象、可執(zhí)行碼、執(zhí)行的線程、程序和/或計(jì)算機(jī)。作為說 明,運(yùn)行在控制器上的應(yīng)用程序和控制器都可以是組件。 一個或多個組件可以駐留 在進(jìn)程和/或執(zhí)行的線程中,并且組件可以位于一個計(jì)算機(jī)內(nèi)和/或分布在兩個或更
多的計(jì)算機(jī)之間。作為另一示例,接口可以包括i/o組件以及相關(guān)聯(lián)的處理器、應(yīng)
用程序和/或API組件,并且可以如同命令行一樣簡單或可以是更為復(fù)雜的集成開 發(fā)環(huán)境(IDE)。
此外,所要求保護(hù)的主題可以使用產(chǎn)生控制計(jì)算機(jī)以實(shí)現(xiàn)所公開的主題的軟 件、固件、硬件或其任意組合的標(biāo)準(zhǔn)編程和/或工程技術(shù)而被實(shí)現(xiàn)為方法、裝置或 制品。在此使用的術(shù)語"制品"旨在涵蓋可以從任何計(jì)算機(jī)可讀設(shè)備、載體或介質(zhì) 訪問的計(jì)算機(jī)程序。例如,計(jì)算機(jī)可讀介質(zhì)可以包括但不限于磁存儲設(shè)備(例如, 硬盤、軟盤、磁帶……)、光盤(例如,緊致盤(CD)、數(shù)字多功能盤(DVD)……)、 智能卡和閃存設(shè)備(例如,卡、棒、鑰匙驅(qū)動器……)。另外應(yīng)該明白,可以釆用 載波來承載計(jì)算機(jī)可讀電子數(shù)據(jù),例如那些用于傳送和接收電子郵件或用于訪問如 因特網(wǎng)或局域網(wǎng)(LAN)等網(wǎng)絡(luò)的數(shù)據(jù)。當(dāng)然,本領(lǐng)域的技術(shù)人員將會認(rèn)識到, 在不背離所要求保護(hù)的主題的范圍或精神的前提下可以對這一配置進(jìn)行許多修改。
此外,在此使用詞語"示例性"意指用作示例、實(shí)例或說明。在此被描述為"示例性"的任何方面或設(shè)計(jì)并不一定要被解釋為相比其它方面或設(shè)計(jì)更優(yōu)選或有 利。相反,使用詞語示例性旨在以具體的方式呈現(xiàn)各個概念。如本申請中所使用的, 術(shù)語"或"意指包括性"或"而非互斥性"或"。即,除非另有指定或從上下文可 以清楚,否則"X使用A或B"意指任何自然的包括性排列。即,如果X使用A;
X使用B;或X使用A和B兩者,則在任何以上情況下,都滿足"X使用A或 B"。另夕卜,本申請中和所附權(quán)利要求書中所使用的冠詞"一"和"一個" 一般應(yīng)
被解釋為是指"一個或多個",除非另有指定或從上下文可以清楚指的是單數(shù)形式。 如在此所使用的,術(shù)語"推斷"或"推論"通常是指從經(jīng)由事件和/或數(shù)據(jù)捕 捉的一組觀察結(jié)果中推斷或推理系統(tǒng)、環(huán)境和/或用戶的狀態(tài)的過程。例如,推斷 可用于標(biāo)識特定的上下文或動作,或可生成狀態(tài)的概率分布。推斷可以是概率性的, 即,基于對數(shù)據(jù)和事件的考慮計(jì)算所關(guān)注狀態(tài)的概率分布。推斷也可以指用于從一 組事件和/或數(shù)據(jù)合成更高級事件的技術(shù)。這類推斷導(dǎo)致從一組觀察到的事件和/或 儲存的事件數(shù)據(jù)中構(gòu)造新的事件或動作,而無論事件是否在相鄰時間上相關(guān),也無 論事件和數(shù)據(jù)是來自 一個還是若干個事件和數(shù)據(jù)源。
現(xiàn)在參考圖1,示出了根據(jù)所要求保護(hù)的主題的一方面的將無狀態(tài)的統(tǒng)一的
REST接口映射到高度可伸縮的因特網(wǎng)類型的數(shù)據(jù)存儲的系統(tǒng)100。映射組件102 可以是能夠在高度可表達(dá)的概念應(yīng)用程序環(huán)境和數(shù)據(jù)存儲環(huán)境之間進(jìn)行轉(zhuǎn)換的計(jì) 算機(jī)相關(guān)的實(shí)體。應(yīng)該理解,映射組件102可以是數(shù)據(jù)存儲、客戶機(jī)應(yīng)用程序或組 件、分開的中間組件、或其組合的子集。數(shù)據(jù)存儲環(huán)境可以是任何合適的存儲模式, 包括關(guān)系模式(例如SQL數(shù)據(jù)庫服務(wù)器)或高度可伸縮的因特網(wǎng)類模式。概念應(yīng) 用程序環(huán)境可以是用于以高度可表達(dá)的格式對數(shù)據(jù)建模而無需指定如何在存儲環(huán) 境中構(gòu)造數(shù)據(jù)的任何合適的環(huán)境。
作為向系統(tǒng)100提供上下文的一個示例但不限制系統(tǒng)100,概念數(shù)據(jù)建模環(huán)境 可以按照諸如個人、公司或一類人或公司等真實(shí)世界實(shí)體來表示數(shù)據(jù)。例如,消費(fèi) 者可以是真實(shí)世界實(shí)體,而這種消費(fèi)者可以是人類、公司、政府等。因此,映射組 件102可以在數(shù)據(jù)存儲環(huán)境和實(shí)體數(shù)據(jù)模型(EDM)編程環(huán)境(例如類似于.NET 品牌框架中展示的客戶機(jī)査看引擎)之間進(jìn)行接口。此外,映射組件102可以方便 EDM模型環(huán)境和高度可伸縮的因特網(wǎng)類存儲結(jié)構(gòu)之間的信息交換(在下文討論)。
EDM編程環(huán)境可以是對數(shù)據(jù)進(jìn)行建模的正式方式,其中其顯式地定義諸如以 上指定的真實(shí)世界消費(fèi)者等實(shí)體。此外,EDM可以指定實(shí)體的特定實(shí)例(實(shí)體實(shí) 例可以被稱為實(shí)體),并將該實(shí)例與實(shí)體類型相關(guān)聯(lián),并且將其與其它特定實(shí)例一起分組在實(shí)體集內(nèi)。EDM所使用的這一結(jié)構(gòu)允許獨(dú)立于數(shù)據(jù)存儲結(jié)構(gòu)的高度可表 達(dá)的數(shù)據(jù)建模環(huán)境。實(shí)體(實(shí)例)因此可以與實(shí)例類型具有特定的關(guān)系,并且也可
以與EDM的其它方面有關(guān)系。
實(shí)體類型可以具有可在實(shí)體類型或與一類型相關(guān)聯(lián)的實(shí)體實(shí)例之間進(jìn)行區(qū)分
的屬性。屬性因此可用于從一組EDM數(shù)據(jù)中過濾出另一組EDM數(shù)據(jù)。屬性的示 例可以包括與一實(shí)體類型或?qū)嵗嚓P(guān)聯(lián)的'名稱'、'地址'、'電話號碼'、'電 子郵件'等。在多數(shù)真實(shí)世界應(yīng)用中,各實(shí)體與其它實(shí)體相關(guān)。EDM可以用關(guān)系 的觀念來包括這一概念,這可以表達(dá)一個實(shí)體和另一個之間的關(guān)聯(lián)。
系統(tǒng)100可以提供使用諸如EDM等概念模型的應(yīng)用程序和使用結(jié)構(gòu)化存儲模 型的數(shù)據(jù)庫之間的橋接。通常,計(jì)算機(jī)數(shù)據(jù)庫應(yīng)用程序提供用于組織和呈現(xiàn)與特定 的上下文相關(guān)的數(shù)據(jù)的某種接口和結(jié)構(gòu)。作為示例,為了幫助定義一特定新產(chǎn)品的 潛在市場,營銷應(yīng)用程序可訪問有關(guān)成本、需求和與類似產(chǎn)品相關(guān)的購買歷史的數(shù) 據(jù)。為此,這一應(yīng)用程序可以訪問例如存儲在關(guān)系型數(shù)據(jù)、結(jié)構(gòu)化査詢語言(SQL) 數(shù)據(jù)庫等中的數(shù)據(jù)的編譯,并以例如表示所需成本、需求和購買歷史信息的方式來 組織該數(shù)據(jù)。這種數(shù)據(jù)庫查詢語言可以指定其中可存儲特定的數(shù)據(jù)的虛擬電子表格 中特定'數(shù)據(jù)塊'的行、歹i」和/或名稱。雖然這種結(jié)構(gòu)對于存儲數(shù)據(jù)會是高效的, 但是對在應(yīng)用程序中表示數(shù)據(jù)不總是高效的。
相反,EDM可以創(chuàng)建允許在更高抽象層描述數(shù)據(jù)的分層體系結(jié)構(gòu)。例如,EDM
方法可以較少地關(guān)注與系統(tǒng)相關(guān)的結(jié)構(gòu)化細(xì)節(jié),而更多地關(guān)注數(shù)據(jù)自身的結(jié)構(gòu)和語 義特征,如數(shù)據(jù)建模者(例如網(wǎng)站、數(shù)據(jù)庫、API開發(fā)者等)所見的。當(dāng)編寫數(shù)據(jù) 庫應(yīng)用程序時,用于標(biāo)識并訪問數(shù)據(jù)的概念模式(例如基于EDM模式)可以更為 高效。例如,就先前的營銷概念而言,假設(shè)數(shù)據(jù)指示新'牙刷'(實(shí)體實(shí)例,在該 情況下是產(chǎn)品)可以'支持'(關(guān)系)'l億美金'的市場(實(shí)體實(shí)例或?qū)Ш教匦?。 對于應(yīng)用程序程序員而言,按照其中關(guān)注的是應(yīng)用程序這些實(shí)體而非按照數(shù)據(jù)庫的 行或列來査詢數(shù)據(jù)庫會高效地多。映射組件102可以通過在高度可表達(dá)的數(shù)據(jù)建模 環(huán)境和數(shù)據(jù)存儲環(huán)境之間進(jìn)行轉(zhuǎn)換來允許編程人員恰恰這么做。
除了以上所述的之外,映射組件102可以包含更為復(fù)雜的EDM體系結(jié)構(gòu)。一 個示例是除了關(guān)系實(shí)體之外包含動作類型的實(shí)體。這些動作可以用EDM術(shù)語來表 達(dá)(例如,將EDM模式中的實(shí)體指定為動作類型、動作實(shí)例和/或動作集合),并 且可以被映射到數(shù)據(jù)存儲中的實(shí)際實(shí)現(xiàn)。當(dāng)使用動作時,諸如"開始營銷活動"等 情況可以定義與顧客動作相關(guān)的參數(shù)。這種動作可以用URI以類似于調(diào)用關(guān)系的
8方式(如下所述)來調(diào)用。另一示例是通用同步體系結(jié)構(gòu),其中應(yīng)用程序不僅可以
跨諸如因特網(wǎng)等web規(guī)模的網(wǎng)絡(luò)來訪問信息,還可以將其與諸如SQL服務(wù)器等本
地存儲進(jìn)行同步。實(shí)際上,這種同步可以在數(shù)據(jù)庫之間提供離線操作模式。除傳統(tǒng)
客戶機(jī)-服務(wù)器復(fù)制之外,可以支持對等復(fù)制,以允許用攜帶具有實(shí)體的EDM存 儲的多個對等體來創(chuàng)建應(yīng)用程序,形成在存儲配置隨時間同步變更時收斂的網(wǎng)狀存 儲。
數(shù)據(jù)存儲104可以是具有根據(jù)高效的存儲體系結(jié)構(gòu)來組織的數(shù)據(jù)的一個或多 個物理或虛擬存儲設(shè)備。這種存儲體系結(jié)構(gòu)可以包括關(guān)系模式或可以包括允許用于 諸如因特網(wǎng)等巨大的web類型的網(wǎng)絡(luò)的高度可伸縮且可管理的環(huán)境的因特網(wǎng)類模 式。系統(tǒng)100還可以包括代表性狀態(tài)傳輸(REST)接口 106,從而提供用于向數(shù) 據(jù)存儲104和從數(shù)據(jù)存儲104交換信息的無狀態(tài)且統(tǒng)一的系統(tǒng)。
一般而言,系統(tǒng)100中所包括的REST傳輸模型可以包括已證明對大規(guī)模聯(lián) 網(wǎng)環(huán)境有效的若干特征。示例包括無狀態(tài)組件交互、分層組件體系結(jié)構(gòu)、客戶機(jī)和 服務(wù)器側(cè)高速緩存、以及統(tǒng)一組件接口。無狀態(tài)交互指定每一査詢和/或響應(yīng)必須 包含完成與其相關(guān)的信息傳輸所需的所有信息。因此,不需要組件記住與其它組件 的先前交互,從而釋放了存儲器和處理資源以用于附加交互。雖然這樣的系統(tǒng)能增 加重復(fù)的請求,但是客戶機(jī)和服務(wù)器側(cè)高速緩存可以通過在組件處存儲該組件的先 前傳輸來幫助減輕這種重復(fù)請求所引起的資源需求。此外,分層組件體系結(jié)構(gòu)對系 統(tǒng)復(fù)雜度設(shè)置了上限并提升了組件獨(dú)立性,而統(tǒng)一組件接口對在因特網(wǎng)或大規(guī)模內(nèi) 聯(lián)網(wǎng)應(yīng)用程序中常見的大粒度超媒體數(shù)據(jù)傳輸(例如,諸如視頻、音頻等大數(shù)據(jù)文 件)而言是理想的。應(yīng)該理解,REST接口 106可以包括這些特征的一些或全部以 及方便大規(guī)模聯(lián)網(wǎng)環(huán)境中的數(shù)據(jù)傳輸?shù)母郊犹卣?。通過將REST接口 106與映射組 件102和數(shù)據(jù)存儲104結(jié)合,系統(tǒng)100可以向一個或多個數(shù)據(jù)存儲提供合乎需要的 EDM編程接口,而同時在這些數(shù)據(jù)存儲處提供高度的效率和可伸縮性。
參考圖2,示出了結(jié)合允許與其進(jìn)行直觀概念交互的數(shù)據(jù)存儲204 (例如關(guān)系 模型或高度可伸縮的因特網(wǎng)類型的模型)來利用可表達(dá)查詢結(jié)構(gòu)202的系統(tǒng)。系統(tǒng) 200可以包括結(jié)合REST接口 206來幫助容易地構(gòu)建到應(yīng)用程序的接口的開發(fā)工具 (例如,諸如活動服務(wù)器頁面[ASP]及后續(xù)技術(shù)以及與.NET品牌框架相關(guān)聯(lián)的其它 技術(shù)等工具)??蛻魴C(jī)應(yīng)用程序206可以是可利用REST接口 208通過因特網(wǎng)或大 規(guī)模內(nèi)聯(lián)網(wǎng)來訪問數(shù)據(jù)存儲204的任何合適的框架,例如被稱為AJAX的異步j(luò)ava 腳本和可擴(kuò)展標(biāo)記語言(XML)。系統(tǒng)200可以通過將客戶機(jī)應(yīng)用程序206 (例如AJAX等)與映射組件210進(jìn)行接口來擴(kuò)展該客戶機(jī),從而經(jīng)由REST接口 208給 予對EDM存儲(例如,如上所述,由映射組件210映射到EDM格式的數(shù)據(jù)存儲 204)的直接訪問。因此,用戶(例如web開發(fā)者等)無需為客戶機(jī)應(yīng)用程序206 和數(shù)據(jù)存儲204之間的每一交互(例如,創(chuàng)建、檢索、更新、刪除(CRUD)操作) 創(chuàng)建分開的web服務(wù)。
數(shù)據(jù)存儲204可以由映射組件210映射到EDM實(shí)體,該EDM實(shí)體接著可以 通過REST接口 208作為具有穩(wěn)定URI的資源來展示。這些URI隨后將反映數(shù)據(jù) 存儲204上的但是以EDM模式來描述的資源存儲。因此,可表達(dá)查詢結(jié)構(gòu)202可 以采用以URI名字空間的形式來構(gòu)造的web式的傳輸協(xié)議(例如HTTP協(xié)議等) 的形式。這種結(jié)構(gòu)可以根據(jù)EDM模式定義數(shù)據(jù)存儲204上的資源。因此,可表達(dá) 查詢結(jié)構(gòu)202可以利用高度可表達(dá)的熟悉的結(jié)構(gòu)(例如URI查詢結(jié)構(gòu))來提供與 關(guān)系或高度可伸縮的因特網(wǎng)類數(shù)據(jù)庫進(jìn)行交互的手段。可表達(dá)査詢結(jié)構(gòu)202的一個 示例基于URI的格式是
<base URI>/<entity container refx
file〉[/<entityset>[/<entitykey>[/<association navigation
property>] ] ] <options>
例如
http:〃entities.live.com/refx/northwind/refx/Customers/ALFKI 或者,作為替換示例,
http:〃entities.live.com/refx/northwind/refx/Customers/[ALFKI]。
這種具有方括號的替換可以允許使用非鍵字段的數(shù)據(jù)查找功能,例如
"Company One"]。
"基本URI (b as e URI)"可以指向可以主存實(shí)體環(huán)境(例如實(shí)體框架)和RE S T 擴(kuò)展的web服務(wù)器/目錄。"refx文件(refx file)"(在下文中更詳細(xì)討論) 表示到存儲/容器(例如數(shù)據(jù)存儲204)的連接;實(shí)體集(entityset)、實(shí)體鍵 (entitykey)、以及導(dǎo)航屬性(navigation property)是常規(guī)的EDM構(gòu)成。選項(xiàng) (options)可以包括數(shù)據(jù)表示,并且將在下文中更詳細(xì)地討論。
系統(tǒng)200可以提供用于定制應(yīng)用程序的統(tǒng)一接口,無論是對簡單的還是復(fù) 雜的邏輯操作。某些客戶機(jī)應(yīng)用程序206僅引用大多數(shù)操作的數(shù)據(jù)(例如只讀 應(yīng)用程序),而其它應(yīng)用程序使用更加密集的業(yè)務(wù)邏輯操作(例如數(shù)據(jù)創(chuàng)建、修改、分析、編譯等)來交互。在前一種情況下,開發(fā)者通常創(chuàng)建用作到數(shù)據(jù) 庫的網(wǎng)關(guān)的web服務(wù)進(jìn)入點(diǎn)或定制應(yīng)用程序,而不在其上附加行為或策略。其 它應(yīng)用程序是策略密集的,并且在服務(wù)器側(cè)分配特定的策略和行為。系統(tǒng)200 可以幫助統(tǒng)一這些應(yīng)用程序。首先,它通過映射組件210和REST接口 208來 消除對簡單的獨(dú)立網(wǎng)關(guān)的需求,映射組件210和REST接口可以在不附加特殊 策略或行為的情況下提供到數(shù)據(jù)存儲204的直接傳輸。對于需要更多業(yè)務(wù)邏輯 的情況,系統(tǒng)200可以提供可以被迭代地定制的簡單開始點(diǎn)。存在可以在展示 為EDM存儲的數(shù)據(jù)存儲204周圍附加行為并描述策略的各種機(jī)制(例如通過 映射組件210,如上所述)。
上述可表達(dá)查詢結(jié)構(gòu)202 (例如基于URI的查詢)可以使用擔(dān)當(dāng)所展示的 EDM模式的描述符的'refx'文件。這種文件可以至少指向可描述EDM模式 到存儲模式的映射結(jié)構(gòu)的映射組件206的一部分(例如,指向數(shù)據(jù)庫以及指向 與其相關(guān)聯(lián)的元數(shù)據(jù)文件)。此外,可表達(dá)査詢結(jié)構(gòu)202可以控制所展示的數(shù) 據(jù)的各方面。例如,用戶可以控制數(shù)據(jù)存儲204的每一實(shí)體集(例如,通過映 射組件206來表征的那些)是可訪問的、只讀的、還是可讀寫的。
系統(tǒng)200還可以通過可表達(dá)查詢結(jié)構(gòu)202來提供控制數(shù)據(jù)庫行為的機(jī)制。 這種行為(例如可以分析并拒絕或標(biāo)志可疑數(shù)據(jù)的安全檢査)可以與可表達(dá)査 詢結(jié)構(gòu)202中所引用的實(shí)體類型相關(guān)聯(lián)。具體地,可以根據(jù)EDM結(jié)構(gòu)提供對 作為實(shí)體框架對象(例如.NET品牌對象)的實(shí)際實(shí)體/查詢和表示到數(shù)據(jù)存儲 204的進(jìn)入點(diǎn)的"ObjectContext (對象上下文)"項(xiàng)的訪問。作為行為的一個 示例,以下是當(dāng)'產(chǎn)品(product)'實(shí)體實(shí)例被寫入'諸產(chǎn)品(products)' 實(shí)體集時所激活的。#函數(shù)。該函數(shù)可以例如檢查數(shù)據(jù)存儲204的其它部分,并 接著可以中止'產(chǎn)品'創(chuàng)建或更新操作并標(biāo)志這一操作
Public static void ReceiveProduct(Northwind ctx, Product product) {
//獲取該產(chǎn)品的類別
product ■ C ategory Re f丄oad();
Category category = product. Category;
〃獲取具有在+/- 10%范圍以外的價(jià)格的各產(chǎn)品 var q = from p in category.Products. Source
where p.UnitPrice > (products.UnitPrice * 1.1m) ||p.UnitPrice < (product.UnitPrice * 0.9m)
select
//査看是否有任何匹配,并且如果有就記錄名稱 string products ="";
foreach(NorthwindLib. Product p in q) { products += p.ProductName + ";";
//如果需要則產(chǎn)生出錯
if(products != '"') throw new Exception(
"Product prices can't vary more than +/- 10% within a category," + "the following products are outside of that range: " + products)
應(yīng)該注意,該示例C弁代碼中所示的方法是程序性方法,并且可以結(jié)合系統(tǒng)200來 實(shí)現(xiàn),其中數(shù)據(jù)存儲204表示內(nèi)聯(lián)網(wǎng)(例如大規(guī)模公司網(wǎng)絡(luò)環(huán)境)上的關(guān)系數(shù)據(jù)存 儲或SQL數(shù)據(jù)存儲。對于因特網(wǎng)規(guī)模的應(yīng)用程序,可以使用聲明性策略示例。
除上述URI模型之外,系統(tǒng)200還經(jīng)由可表達(dá)査詢結(jié)構(gòu)202支持其它查詢方 法。雖然開發(fā)者通??梢允褂肬RI來發(fā)現(xiàn)特定數(shù)據(jù)存儲內(nèi)什么可用,但是應(yīng)用程 序用戶一般會使用各種過濾器或準(zhǔn)則來查詢和/或搜索。因此,可表達(dá)査詢結(jié)構(gòu)202 還可以通過客戶機(jī)應(yīng)用程序206來支持基于過濾器和/或準(zhǔn)則的搜索。這種基于準(zhǔn) 則的搜索的一個示例是資源描述框架(RDF)查詢語言RQL和SPARQL。這種RDF 查詢語言就表達(dá)性而言非常寬泛,并且在行業(yè)中被廣泛接受。
基于過濾器的搜索査詢還可以包括SQL語言的EDM結(jié)構(gòu)化方言,其被稱為 實(shí)體SQL (EntitySQL)??杀磉_(dá)査詢結(jié)構(gòu)202可以支持由實(shí)體SQL (eSQL)語言 所指定的'查詢分段'以執(zhí)行基于過濾器的搜索。作為另一示例,對URI中串的 查詢可以指向被稱為'顧客(customers),的實(shí)體集,并且僅返回具有與其相關(guān) 聯(lián)的特定屬性的'顧客,的實(shí)例。例如,屬性'國家(country),為阿根廷(Argentina) 的過濾器可表現(xiàn)如下
http:〃entities.live.com/refx/northwind/refx/Customers where=it.Country=Argenti
na
可表達(dá)査詢結(jié)構(gòu)202還可以進(jìn)一步支持e-SQL分段構(gòu)造。例如,EDM導(dǎo)航屬性可 用于在實(shí)體關(guān)系之間進(jìn)行區(qū)分。更具體地,請求具有超過10個訂單的'顧客'實(shí) 例的示例可以是"COUNT(it.SalesOrders)〉10"。結(jié)構(gòu)化查詢語言202的另一具體示例可以是Xpath, 一種適用于查詢圖的簡單的公知査詢語言(例如,在查詢具有 關(guān)系的EDM模式時所使用的)。此外,支持將POST請求用于査詢,其中查詢是 凈荷(例如查詢消息,而非其上附加的信息)??杀磉_(dá)查詢結(jié)構(gòu)202因此可以避免 與將查詢語言嵌入到URI中相關(guān)聯(lián)的問題。
現(xiàn)在參考圖3,描繪了根據(jù)本發(fā)明的各方面的提供客戶機(jī)應(yīng)用程序304和數(shù)據(jù) 存儲306之間的接口的系統(tǒng)300,其中數(shù)據(jù)可以用特定的數(shù)據(jù)凈荷格式傳送。如上 所述,映射組件302可以提供使用EDM模式的客戶機(jī)應(yīng)用程序304和使用存儲模 式的數(shù)據(jù)存儲306之間的接口 。數(shù)據(jù)存儲306可以具有由可用于例如大規(guī)模內(nèi)聯(lián)網(wǎng) 類型的網(wǎng)絡(luò)(例如公司網(wǎng)絡(luò))的關(guān)系模式(例如SQL服務(wù)器)或可用在例如因特 網(wǎng)上的特殊的高度可伸縮的因特網(wǎng)類存儲模式所定義的結(jié)構(gòu)??蛻魴C(jī)應(yīng)用程序206 可以使用可表達(dá)概念格式來對數(shù)據(jù)建模,并使用相關(guān)的概念格式以與數(shù)據(jù)庫交互 (例如如上關(guān)于圖2的可表達(dá)查詢結(jié)構(gòu)202所述的EDM格式)。REST接口 308 提供了客戶機(jī)應(yīng)用程序和數(shù)據(jù)存儲可以通過其在大規(guī)模遠(yuǎn)程網(wǎng)絡(luò)上通信的平臺,并
且可以支持諸如EDM等模式。然而,REST—般不指定用來呈現(xiàn)數(shù)據(jù)的特定格式, 其它機(jī)制提供這一數(shù)據(jù)格式。
系統(tǒng)300可以包括如附圖標(biāo)記300所示的凈荷格式或數(shù)據(jù)表示格式,以指定 在客戶機(jī)應(yīng)用程序302和數(shù)據(jù)存儲304之間傳送的數(shù)據(jù)。示例包括普通老式XML (POX)、豐富站點(diǎn)摘要(RSS) 、 java腳本注釋(JSON)、資源描述框架(RDF)、 ATOM等。每一數(shù)據(jù)凈荷格式可以具有不同的顯示數(shù)據(jù)的格式,但它們一般是相 似的。以下包括了 POX、 JSON和RDF的示例。
作為一個示例,假設(shè)具有'ALFKI'鍵的特定實(shí)體實(shí)例屬于'顧客'實(shí)體類 型。對如此指定的EDM査詢的JSON結(jié)構(gòu)的回復(fù)可以基本上與以下相類似地出現(xiàn)
json
'—base': 'http:〃entities.live.com/refx/northwind.refx': 'about': 'Customers/ALFKF, 'CustomerID': 'ALFKI' 'CompanyName': 'Alfreds Futterkiste', 'ContactName ' : 'Maria Anders ', 'City': 'Berlin'
13'Country': 'Germany'
'SalesOrders': { '—resource': 'Customers/ ALFKI/SalesOrders' }
};
注意客戶機(jī)應(yīng)用程序302只需要經(jīng)由REST接口 312以可表達(dá)的EDM格式來指定 査詢。映射組件能以與客戶機(jī)應(yīng)用程序302 (例如消費(fèi)者或應(yīng)用程序顧客等)所使 用的模式無關(guān)的模式,來自動地管理在數(shù)據(jù)存儲304處存儲信息的實(shí)際方式。POX 格式的同一查詢可以基本上與以下相類似地出現(xiàn) <Customer>
<CustomerID>ALFKI</CustomerID>
<CompanyName〉 Alfreds Futterkiste</CompanyName>
<ContactName〉Maria Anders </C ontactName>
<City〉Berlin</City>
<C ountry> Germany </C ountry 〉
<SalesOrders href="Customers/ALFKI/SalesOrders" /〉 </Customer〉 而用RDF格式
<rdf:RDF xml:base=http:〃entities. live.com/refx/northwind.rfx
Xmlns :rdf="http :〃www. w3.org/ 1999/02/22-rdf-syntax-ns#>
<Customer rdf: about="Customers/ALFKr> <CustomerID〉A(chǔ)LFKI</CustomerID> (3.)<CompanyName> Alfreds
Futterkiste</CompanyName〉
(4 )<C ontactName〉Maria Ander s</C ontac tName〉 (5 .)<City>Berlin</City> (6 .)<Country>Germany</Country> (7.)<SalesOrders rdf:resource="Customers/ALFKI/SalesOrders'V〉
</Customer) </rdf:RDF>
參考圖4,提供了消費(fèi)者402和服務(wù)提供者404之間的示例服務(wù)級協(xié)議400以及可以在各協(xié)議(例如410到420)之間進(jìn)行區(qū)分的策略的圖示。服務(wù)級協(xié)議400 提供了尤其可以在可表達(dá)查詢模式和數(shù)據(jù)存儲模式(例如,關(guān)系模式、高度可伸縮
的因特網(wǎng)類型的數(shù)據(jù)存儲模式、或其它數(shù)據(jù)庫存儲模式)之間進(jìn)行相關(guān)的數(shù)據(jù)存儲 服務(wù)。這種服務(wù)可以獨(dú)立于客戶機(jī)系統(tǒng)所使用的可表達(dá)模式(例如EDM模式等) 來自動地管理數(shù)據(jù)存儲模式。此外,如上所述,存儲服務(wù)可以支持各種凈荷表示格 式。另外,可以使映射服務(wù)在因特網(wǎng)或大規(guī)模內(nèi)聯(lián)網(wǎng)絡(luò)(例如大規(guī)模公司內(nèi)聯(lián)網(wǎng)) 上可用。
還描繪了用其構(gòu)造服務(wù)級協(xié)議的示例服務(wù)級協(xié)議策略。 一種策略可以是例如 最低成本條件下的盡力410策略。盡力策略可以提供基本級別的服務(wù),例如在可表 達(dá)查詢模式和數(shù)據(jù)存儲模式之間進(jìn)行相關(guān)的映射服務(wù),但是不提供特定質(zhì)量保證 (例如支持、備份、恢復(fù)、可用性等)。作為示例示出,盡力策略410可以是消費(fèi) 者404和數(shù)據(jù)映射服務(wù)提供者406之間的許可證,該許可證允許消費(fèi)者404例如以 極少的費(fèi)用并自擔(dān)風(fēng)險(xiǎn)來使用數(shù)據(jù)映射服務(wù),而數(shù)據(jù)映射服務(wù)提供者406 —方?jīng)]有 其它義務(wù)。備份/恢復(fù)策略412可以是比盡力策略410所提供的服務(wù)更進(jìn)一步的服 務(wù),包括保護(hù)消費(fèi)者404所上傳的數(shù)據(jù)的備份和恢復(fù)操作。服務(wù)提供者406可以創(chuàng) 建消費(fèi)者404所上傳的數(shù)據(jù)的副本并且在發(fā)生問題時對其進(jìn)行恢復(fù)。作為備份恢復(fù) 策略412的補(bǔ)充或替換,數(shù)據(jù)/服務(wù)保證策略414可以提供更穩(wěn)健的備份和恢復(fù)情 景。這種策略可以例如備份并恢復(fù)數(shù)據(jù),并且還保證這種數(shù)據(jù)達(dá)到服務(wù)級協(xié)議402 中提供的某個值。
除上述備份和恢復(fù)服務(wù)之外,服務(wù)級協(xié)議可以提供與數(shù)據(jù)存儲相關(guān)的許多附 加服務(wù)。例如,服務(wù)級協(xié)議可以是基于特定存儲級策略416的,以特定速率建立存 儲大小(例如以兆字節(jié)、千兆字節(jié)、兆兆字節(jié)等為單位)。同樣,訪問可用性策略 418可以例如提供,數(shù)據(jù)例如可在全球范圍內(nèi)或在全球的指定部分內(nèi)被以特定質(zhì)量 或以特定的服務(wù)器側(cè)訪問速度來訪問的保證。作為一個示例,如果基于美國的消費(fèi) 者402具有存儲來用于網(wǎng)站的數(shù)據(jù)并且期望這一數(shù)據(jù)對在日本的分支機(jī)構(gòu)可用,則 訪問可用性策略418可以指定這樣做的標(biāo)準(zhǔn)。作為另一示例,可以指定允許使用所 建立的應(yīng)用程序或開發(fā)工具來通過接口 (例如REST接口)創(chuàng)建應(yīng)用程序的應(yīng)用程 序編程接口 (API)支持策略420。應(yīng)該理解,圖4中所提供的示例是用于創(chuàng)建與 本發(fā)明的各方面相關(guān)的各服務(wù)級協(xié)議的上下文的,并且不應(yīng)被解釋為限制其它上下 文。
現(xiàn)在參考圖5,描繪了根據(jù)所要求保護(hù)的主題的各方面的用于提供高度可表達(dá)的建模環(huán)境而同時維護(hù)因特網(wǎng)類型的數(shù)據(jù)存儲的可伸縮性的示例方法500。在502
處,創(chuàng)建或從儲存庫獲取作為EDM表征來表達(dá)的應(yīng)用程序概念模型。概念模型可 以是域?qū)S玫?,并具有通過EDM可用的任何合適的形式。示例包括將虛擬或真實(shí) 世界實(shí)體(例如,特別是諸如人、地點(diǎn)、物體、業(yè)務(wù)、位置或辦公室等任何名詞) 表示為實(shí)體實(shí)例、類型和集合的各種定義的實(shí)體。各種所定義的關(guān)系也將實(shí)體之間 發(fā)生的關(guān)聯(lián)、屬性或繼承(例如對等關(guān)聯(lián)、父子繼承模型等)表示為關(guān)系實(shí)例、類 型和集合。例如,如表達(dá)為EDM表征的應(yīng)用程序概念模型所指定的,關(guān)系和實(shí)體 可以被映射到數(shù)據(jù)存儲上的特定資源存儲。在504處,以數(shù)據(jù)存儲格式為應(yīng)用程序 概念模型創(chuàng)建web規(guī)模的網(wǎng)絡(luò)數(shù)據(jù)存儲。另外,該數(shù)據(jù)存儲格式可以是用于在數(shù) 據(jù)存儲(例如,公司網(wǎng)絡(luò)中的SQL數(shù)據(jù)庫、用于因特網(wǎng)類數(shù)據(jù)庫的高度可伸縮的 因特網(wǎng)類存儲格式等)上構(gòu)造數(shù)據(jù)的任何合適的格式。
可以通過web規(guī)模的網(wǎng)絡(luò)數(shù)據(jù)存儲來提供REST接口,從而將這一數(shù)據(jù)存儲 內(nèi)的數(shù)據(jù)展示給網(wǎng)絡(luò)上的其它組件(例如客戶機(jī)組件)。REST接口可以允許與數(shù) 據(jù)存儲的無狀態(tài)的且統(tǒng)一的交互,并且可方便使用EDM表征(例如使用EDMURI 結(jié)構(gòu))的REST式查詢結(jié)構(gòu)。EDM査詢可以提供用其在數(shù)據(jù)存儲上執(zhí)行基本CRUD 操作的高度可表達(dá)的格式。在508處,在EDM概念表征和數(shù)據(jù)存儲格式之間映射 相關(guān)。這一相關(guān)方便以獨(dú)立于通過REST接口的EDM查詢的數(shù)據(jù)存儲格式來管理 數(shù)據(jù)存儲。因此,方法500提供了高度可表達(dá)的面向概念的接口環(huán)境(例如用于編 程、應(yīng)用程序使用等),而同時維護(hù)為可伸縮性和效率而最優(yōu)化的數(shù)據(jù)存儲格式。
現(xiàn)在參考圖6,描繪了根據(jù)此處所描述的各方面的用于管理web類型的數(shù)據(jù) 存儲和EDM應(yīng)用程序建模環(huán)境之間的接口的示例性方法600。在602處,根據(jù)高 度可伸縮的存儲模型構(gòu)造web規(guī)模的網(wǎng)絡(luò)數(shù)據(jù)存儲。如以上所公開的,存儲模型 可以是用于例如在因特網(wǎng)上部署的、能夠存儲大量數(shù)據(jù)并處理非常大的查詢量的因 特網(wǎng)類數(shù)據(jù)存儲的??蛇x地,存儲模型可以是用于在公司網(wǎng)絡(luò)環(huán)境中部署的SQL 類數(shù)據(jù)庫的。在604處,在數(shù)據(jù)存儲處接收根據(jù)EDM模型構(gòu)造的查詢。該查詢可 以例如指定特定域(例如實(shí)體容器)、實(shí)體類型、實(shí)體實(shí)例(例如通過實(shí)體鍵)、 導(dǎo)航屬性、過濾器(例如類似于上述的e-SQL過濾器)、關(guān)系類型、關(guān)系集合、 關(guān)系實(shí)例等。應(yīng)該理解,在附圖標(biāo)記604處公開的EDM査詢可用于通過到數(shù)據(jù)存 儲的接口 (例如REST接口)來以開發(fā)者/消費(fèi)者友好的方式構(gòu)建通用數(shù)據(jù)庫應(yīng)用 程序。
在606處,參考數(shù)據(jù)存儲模型,將查詢所指定的操作應(yīng)用于數(shù)據(jù)存儲。以此方式,可以用獨(dú)立于用來管理數(shù)據(jù)存儲上的信息的模式的特定格式(例如高度可表
達(dá)的EDM概念格式)來制定應(yīng)用程序和/或查詢模式。在608處,根據(jù)EDM模型 用操作結(jié)果回復(fù)查詢。例如,如果查詢操作要求將數(shù)據(jù)上傳到數(shù)據(jù)存儲,則在附圖 標(biāo)記608處可以返回操作成功、不成功等的指示。作為另一示例,如果査詢操作請 求從數(shù)據(jù)存儲中檢索數(shù)據(jù),則在附圖標(biāo)記608處的回復(fù)將包含這一數(shù)據(jù)。此外,如 上所述,該回復(fù)所指定的數(shù)據(jù)可以具有不同的格式,如凈荷格式。
現(xiàn)在參考圖7,描繪了根據(jù)本發(fā)明的各方面的用于提供可在市場上購得的服務(wù) 平臺的示例方法700。在702處,在EDM數(shù)據(jù)結(jié)構(gòu)和存儲建模結(jié)構(gòu)之間執(zhí)行轉(zhuǎn)換。 該轉(zhuǎn)換可以通過例如聯(lián)網(wǎng)服務(wù)器系統(tǒng)和客戶機(jī)系統(tǒng)之間的REST接口發(fā)生??蛇x 地,該轉(zhuǎn)換可以在與數(shù)據(jù)存儲設(shè)備、客戶機(jī)設(shè)備或中間設(shè)備相關(guān)的系統(tǒng)處發(fā)生。此 外,網(wǎng)絡(luò)可以是諸如因特網(wǎng)或公司內(nèi)聯(lián)網(wǎng)等web規(guī)模的網(wǎng)絡(luò)。另外,存儲數(shù)據(jù)建 模結(jié)構(gòu)可以是高度可伸縮的存儲建模結(jié)構(gòu)(例如對因特網(wǎng)類數(shù)據(jù)存儲所使用的)。 在704處,通過web規(guī)模的網(wǎng)絡(luò)(例如通過REST接口等)來展示用存儲數(shù)據(jù)建 模結(jié)構(gòu)建模的數(shù)據(jù)存儲。在706處,以變化的補(bǔ)償級別來提供訪問級別和/或?qū)υ?訪問的支持級別。支持和/或訪問級別可以包括例如數(shù)據(jù)備份和恢復(fù)服務(wù),對數(shù)據(jù) 丟失的保證,以特定質(zhì)量級別對數(shù)據(jù)的區(qū)域、全國或全球的可用性等??梢灾付?別以適合個人消費(fèi)者、小公司、大企業(yè)、政府等的需求。另外,對于支持和/或訪 問的補(bǔ)償?shù)募墑e可以至少對應(yīng)于這些訪問和/或支持級別本身。在708處,提供了 消費(fèi)者就緒應(yīng)用程序用戶界面。此外,在710處,可以通過REST式API接口提 供對數(shù)據(jù)存儲的直接訪問。
現(xiàn)在參考圖8,所示是可用于執(zhí)行所公開的體系結(jié)構(gòu)的示例性計(jì)算機(jī)系統(tǒng)的框 圖。為了提供用于所要求保護(hù)的主題的各方面的附加上下文,圖8及以下討論旨在 提供對其中可實(shí)現(xiàn)所要求保護(hù)的主題的各方面的合適的計(jì)算環(huán)境800的簡要概括
描述。另外,盡管上述所要求保護(hù)的主題適于在可在一個或多個計(jì)算機(jī)上運(yùn)行的計(jì) 算機(jī)可執(zhí)行指令的一般上下文中應(yīng)用,但是本領(lǐng)域的技術(shù)人員將認(rèn)識到,所要求保 護(hù)的主題也可結(jié)合其它程序模塊和/或作為硬件和軟件的組合來實(shí)現(xiàn)。
一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程 序、組件、數(shù)據(jù)結(jié)構(gòu)等等。此外,本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明的方法可用 其它計(jì)算機(jī)系統(tǒng)配置來實(shí)施,包括單處理器或多處理器計(jì)算機(jī)系統(tǒng)、小型機(jī)、大型 計(jì)算機(jī)、以及個人計(jì)算機(jī)、手持式計(jì)算設(shè)備、基于微處理器的或可編程消費(fèi)電子產(chǎn) 品等,其每一個都可操作上耦合到一個或多個相關(guān)聯(lián)的設(shè)備。
17所示的要求保護(hù)的主題的各方面也可在其中某些任務(wù)由通過通信網(wǎng)絡(luò)鏈接的 遠(yuǎn)程處理設(shè)備來執(zhí)行的分布式計(jì)算環(huán)境中實(shí)施。在分布式計(jì)算環(huán)境中,程序模塊可 以位于本地和遠(yuǎn)程存儲器存儲設(shè)備中。
計(jì)算機(jī)通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)訪
問的任一可用介質(zhì),并包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為 示例而非限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲 介質(zhì)可包括以用于存儲諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)這樣 的信息的任意方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計(jì)
算機(jī)存儲介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲器技術(shù)、 CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁盒、磁帶、磁盤存儲或其 它磁存儲設(shè)備、或可以用來儲存所期望的信息并可由計(jì)算機(jī)訪問的任一其它介質(zhì)。
通信介質(zhì)通常以諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號來體現(xiàn)計(jì)算機(jī)可 讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),且包含任何信息傳遞介質(zhì)。術(shù)語"已調(diào) 制數(shù)據(jù)信號"指的是其一個或多個特征以在信號中編碼信息的方式被設(shè)定或更改的 信號。作為示例而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接, 以及無線介質(zhì),諸如聲學(xué)、RF、紅外線和其它無線介質(zhì)。上述中的任意組合也應(yīng) 包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
再次參考圖8,用于實(shí)現(xiàn)所要求保護(hù)的主題的各方面的示例性環(huán)境800包括計(jì) 算機(jī)802,計(jì)算機(jī)802包括處理單元804、系統(tǒng)存儲器806和系統(tǒng)總線808。系統(tǒng) 總線808把包括但不限于系統(tǒng)存儲器806的系統(tǒng)組件耦合到處理單元804。處理單 元804可以是各種市場上可購買到的處理器中的任意一種。雙微處理器和其它多處 理器體系結(jié)構(gòu)也可用作處理單元804。
系統(tǒng)總線808可以是若干種總線結(jié)構(gòu)中的任一種,這些總線結(jié)構(gòu)還可互連到 存儲器總線(帶有或沒有存儲器控制器)、外圍總線、以及使用各類可購買到的總 線體系結(jié)構(gòu)中的任一種的局部總線。系統(tǒng)存儲器806包括只讀存儲器(ROM) 810 和隨機(jī)存取存儲器(RAM) 812?;据斎?輸出系統(tǒng)(BIOS)儲存在諸如ROM、 EPROM、 EEPROM等非易失性存儲器810中,其中BIOS包含幫助諸如在啟動期 間在計(jì)算機(jī)802內(nèi)的元件之間傳輸信息的基本例程。RAM 812還可包括諸如靜態(tài) RAM等高速RAM來用于高速緩存數(shù)據(jù)。
計(jì)算機(jī)802還包括內(nèi)置硬盤驅(qū)動器(HDD) 814 (例如,EIDE、 SATA),該 內(nèi)置硬盤驅(qū)動器814還可被配置成在合適的機(jī)殼(未示出)中外部使用;磁軟盤驅(qū)動器(FDD) 816 (例如,從可移動磁盤818中讀取或向其寫入);以及光盤驅(qū)動 器820 (例如,從CD-ROM盤822中讀取,或從諸如DVD等其它高容量光學(xué)介質(zhì) 中讀取或向其寫入)。硬盤驅(qū)動器814、磁盤驅(qū)動器816和光盤驅(qū)動器820可分別 通過硬盤驅(qū)動器接口 824、磁盤驅(qū)動器接口 826和光盤驅(qū)動器接口 828連接到系統(tǒng) 總線808。用于外置驅(qū)動器實(shí)現(xiàn)的接口 824包括通用串行總線(USB)和IEEE 1394 接口技術(shù)中的至少一種或兩者。其它外部驅(qū)動器連接技術(shù)在此處所要求保護(hù)的主題 所考慮的范圍之內(nèi)。
驅(qū)動器及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)提供了對數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可執(zhí) 行指令等的非易失性存儲。對于計(jì)算機(jī)802,驅(qū)動器和介質(zhì)容納適當(dāng)?shù)臄?shù)字格式的 任何數(shù)據(jù)的存儲。盡管以上對計(jì)算機(jī)可讀介質(zhì)的描述涉及HDD、可移動磁盤以及 諸如CD或DVD等可移動光學(xué)介質(zhì),但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,示例性操 作環(huán)境中也可使用可由計(jì)算機(jī)讀取的任何其它類型的介質(zhì),諸如zip驅(qū)動器、磁帶 盒、閃存卡、盒式磁帶等等,并且任何這樣的介質(zhì)可包含用于執(zhí)行本發(fā)明的方法的 計(jì)算機(jī)可執(zhí)行指令。
多個程序模塊可儲存在驅(qū)動器和RAM812中,包括操作系統(tǒng)830、 一個或多 個應(yīng)用程序832、其它程序模塊834和程序數(shù)據(jù)836。所有或部分操作系統(tǒng)、應(yīng)用 程序、模塊和/或數(shù)據(jù)也可被高速緩存在RAM812中。應(yīng)該明白,所要求保護(hù)的主 題可以用各種市場上可購買到的操作系統(tǒng)或操作系統(tǒng)的組合來實(shí)現(xiàn)。
用戶可以通過一個或多個有線/無線輸入設(shè)備,例如鍵盤838和諸如鼠標(biāo)840 等定點(diǎn)設(shè)備將命令和信息輸入到計(jì)算機(jī)802中。其它輸入設(shè)備(未示出)可包括話 筒、IR遙控器、操縱桿、游戲手柄、指示筆、觸摸屏等等。這些和其它輸入設(shè)備 通常通過耦合到系統(tǒng)總線808的輸入設(shè)備接口 842連接到處理單元804,但也可通 過其它接口連接,如并行端口、正EE 1394串行端口、游戲端口、 USB端口、 IR 接口等等。
監(jiān)視器844或其它類型的顯示設(shè)備也經(jīng)由接口,諸如視頻適配器846連接至 系統(tǒng)總線808。除了監(jiān)視器844之外,計(jì)算機(jī)通常包括諸如揚(yáng)聲器和打印機(jī)等的其 它外圍輸出設(shè)備(未示出)。
計(jì)算機(jī)802可使用經(jīng)由有線和/或無線通信至一個或多個遠(yuǎn)程計(jì)算機(jī),諸如遠(yuǎn) 程計(jì)算機(jī)848的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)848可以是工作站、服 務(wù)器計(jì)算機(jī)、路由器、個人計(jì)算機(jī)、便攜式計(jì)算機(jī)、基于微處理器的娛樂設(shè)備、對 等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點(diǎn),并且通常包括以上相對于計(jì)算機(jī)802描述的許多或所有元件,盡管為簡明起見僅示出了存儲器/存儲設(shè)備850。所描繪的邏輯連接包括
到局域網(wǎng)(LAN) 852禾卩/或例如廣域網(wǎng)(WAN) 854等更大的網(wǎng)絡(luò)的有線/無線連 接。這一LAN和WAN聯(lián)網(wǎng)環(huán)境常見于辦公室和公司,并且方便了諸如內(nèi)聯(lián)網(wǎng)等 企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò),所有這些都可連接到例如因特網(wǎng)等全球通信網(wǎng)絡(luò)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時,計(jì)算機(jī)802通過有線和/或無線通信網(wǎng)絡(luò)接口或 適配器856連接到局域網(wǎng)852。適配器856可以便于到LAN 852的有線或無線通 信,并且還可包括其上設(shè)置的用于與無線適配器856通信的無線接入點(diǎn)。
當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時,計(jì)算機(jī)802可包括調(diào)制解調(diào)器858,或連接到 WAN 854上的通信服務(wù)器,或具有用于通過WAN 854,諸如通過因特網(wǎng)建立通信 的其它裝置。或?yàn)閮?nèi)置或?yàn)橥庵靡约坝芯€或無線設(shè)備的調(diào)制解調(diào)器858經(jīng)由串行端 口接口 842連接到系統(tǒng)總線808。在網(wǎng)絡(luò)化環(huán)境中,相對于計(jì)算機(jī)802所描述的程 序模塊或其部分可以存儲在遠(yuǎn)程存儲器/存儲設(shè)備850中。應(yīng)該理解,所示網(wǎng)絡(luò)連 接是示例性的,并且可以使用在計(jì)算機(jī)之間建立通信鏈路的其它手段。
計(jì)算機(jī)802可用于與操作上設(shè)置在無線通信中的任何無線設(shè)備或?qū)嶓w通信, 這些設(shè)備或?qū)嶓w例如有打印機(jī)、掃描儀、臺式和/或便攜式計(jì)算機(jī)、便攜式數(shù)據(jù)助 理、通信衛(wèi)星、與無線可檢測標(biāo)簽相關(guān)聯(lián)的任何一個設(shè)備或位置(例如,公用電話 亭、報(bào)亭、休息室)以及電話。這至少包括Wi-Fi和藍(lán)牙TM無線技術(shù)。由此,通信 可以如對于常規(guī)網(wǎng)絡(luò)那樣是預(yù)定義結(jié)構(gòu),或者僅僅是至少兩個設(shè)備之間的自組織 (adhoc)通信。
Wi-Fi,即無線保真,允許從家里沙發(fā)、酒店房間的床上或工作的會議室連接 到因特網(wǎng)而不需要線纜。Wi-Fi是一種類似蜂窩電話中使用的無線技術(shù),它使得諸 如計(jì)算機(jī)等設(shè)備能夠在室內(nèi)和室外,在基站范圍內(nèi)的任何地方發(fā)送和接收數(shù)據(jù)。 Wi-Fi網(wǎng)絡(luò)使用稱為IEEE 802.il (a、 b、 g等等)的無線電技術(shù)來提供安全、可靠、 快速的無線連接。Wi-Fi網(wǎng)絡(luò)可用于將計(jì)算機(jī)彼此連接、連接到因特網(wǎng)以及連接到 有線網(wǎng)絡(luò)(使用IEEE 802.3或以太網(wǎng))。Wi-Fi網(wǎng)絡(luò)在未許可的2.4和5 GHz無線 電波段內(nèi)工作,例如以llMbps (802.11a)或54Mbps (802.11b)數(shù)據(jù)速率工作, 或者具有包含兩個波段(雙波段)的產(chǎn)品,因此該網(wǎng)絡(luò)可提供類似于許多辦公室中 使用的基本10BaseT有線以太網(wǎng)的真實(shí)性能。
現(xiàn)在參考圖9,所示是可用于執(zhí)行所公開的體系結(jié)構(gòu)的示例性計(jì)算機(jī)編譯系統(tǒng) 的示意性框圖。系統(tǒng)900包括一個或多個客戶機(jī)卯2??蛻魴C(jī)902可以是硬件和/ 或軟件(例如,線程、進(jìn)程、計(jì)算設(shè)備)??蛻魴C(jī)902可例如通過采用所要求保護(hù)
20的主題而容納cookie和/或相關(guān)聯(lián)的上下文信息。
系統(tǒng)900還包括一個或多個服務(wù)器904。服務(wù)器904也可以是硬件和/或軟件 (例如,線程、進(jìn)程、計(jì)算設(shè)備)。服務(wù)器904可以容納各線程以通過例如利用所 要求保護(hù)的主題來執(zhí)行轉(zhuǎn)換。在客戶機(jī)902和服務(wù)器904之間的一種可能的通信能 夠以適合在兩個或多個計(jì)算機(jī)進(jìn)程之間傳輸?shù)臄?shù)據(jù)分組的形式進(jìn)行。數(shù)據(jù)分組可包 括例如cookie和/或相關(guān)聯(lián)的上下文信息。系統(tǒng)900包括可以用來使客戶機(jī)902和 服務(wù)器904之間通信更容易的通信框架906 (例如,諸如因特網(wǎng)等全球通信網(wǎng)絡(luò))。
通信可經(jīng)由有線(包括光纖)和/或無線技術(shù)來促進(jìn)??蛻魴C(jī)902操作上被連 接到可以用來存儲對客戶機(jī)902本地的信息(例如,cookie和/或相關(guān)聯(lián)的上下文 信息)的一個或多個客戶機(jī)數(shù)據(jù)存儲908。同樣地,服務(wù)器904可在操作上連接到 可以用來存儲對服務(wù)器904本地的信息的一個或多個服務(wù)器數(shù)據(jù)存儲910。
以上所描述的包括各實(shí)施例的示例。當(dāng)然,出于描繪各實(shí)施例的目的而描述 組件或方法的每一個可以想到的組合是不可能的,但本領(lǐng)域內(nèi)的普通技術(shù)人員可以 認(rèn)識到,許多進(jìn)一步的組合和排列都是可能的。因此,本詳細(xì)描述旨在涵蓋所有這 些落入所附權(quán)利要求書的精神和范圍內(nèi)的更改、修改和變化。
特別地,對于由上述組件、設(shè)備、電路、系統(tǒng)等執(zhí)行的各種功能,除非另外 指明,否則用于描述這些組件的術(shù)語(包括對"裝置"的引用)旨在對應(yīng)于執(zhí)行所 描述的執(zhí)行此處在各實(shí)施例的示例性方面中所示的功能的組件的指定功能(例如, 功能上等效)的任何組件,即使這些組件在結(jié)構(gòu)上不等效于所公開的結(jié)構(gòu)。在這一 點(diǎn)上,也可認(rèn)識到各實(shí)施例包括用于執(zhí)行各方法的動作和/或事件的系統(tǒng)以及具有 用于執(zhí)行這些動作和/或事件的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
另外,盡管可相對于若干實(shí)現(xiàn)中的僅一個來公開一個特定特征,但是這一特 征可以如對任何給定或特定應(yīng)用所需且有利地與其它實(shí)現(xiàn)的一個或多個其它特征 相組合。此外,就在說明書或權(quán)利要求書中使用術(shù)語"包括"和"含有"及其變體 而言,這些術(shù)語旨在以與術(shù)語"包含"相似的方式為包含性的。
權(quán)利要求
1.一種提供網(wǎng)絡(luò)數(shù)據(jù)存儲作為服務(wù)的系統(tǒng)(100),包括包括定義數(shù)據(jù)存儲的結(jié)構(gòu)的存儲模型的數(shù)據(jù)存儲(104);可方便去往和來自所述數(shù)據(jù)存儲的信息交換的REST接口(106);以及可以在所述數(shù)據(jù)存儲模型和EDM概念模型之間進(jìn)行相關(guān)的映射組件(102),其中所述數(shù)據(jù)存儲模型和所述EDM概念模型是不同的。
2. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)存儲模型包括高效的存 儲模式。
3. 如權(quán)利要求l所述的系統(tǒng),其特征在于,所述EDM概念模型包括豐富的 高度可表達(dá)的EDM模式。
4. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)存儲是因特網(wǎng)數(shù)據(jù)存儲, 所述存儲模型是因特網(wǎng)規(guī)模的數(shù)據(jù)庫存儲模型。
5. 如權(quán)利要求l所述的系統(tǒng),其特征在于,所述數(shù)據(jù)存儲是因特網(wǎng)數(shù)據(jù)存儲, 所述存儲模型是結(jié)構(gòu)化查詢語言(SQL)數(shù)據(jù)庫存儲模型。
6. 如權(quán)利要求l所述的系統(tǒng),其特征在于,還包括可以通過所述REST接口 和映射組件來與所述數(shù)據(jù)存儲交互的客戶機(jī)應(yīng)用程序。
7. 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述客戶機(jī)應(yīng)用程序根據(jù)所述EDM 概念模型通過所述REST接口與所述數(shù)據(jù)存儲交互。
8. 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述數(shù)據(jù)存儲根據(jù)所述存儲模型 通過所述REST接口與所述客戶機(jī)應(yīng)用程序交互。
9. 一種用于提供在市場上可購買到的數(shù)據(jù)庫服務(wù)平臺的方法(700),包括 在EDM數(shù)據(jù)結(jié)構(gòu)和高度可伸縮的存儲建模結(jié)構(gòu)之間轉(zhuǎn)換(702);通過web規(guī)模的網(wǎng)絡(luò)經(jīng)由REST接口展示(704)用所述高度可伸縮的數(shù)據(jù)結(jié) 構(gòu)建模的數(shù)據(jù)存儲;以及以至少對應(yīng)于訪問級別、或?qū)υ撛L問的支持級別、或這兩種級別的補(bǔ)償級別 來提供(706)變化的所述訪問級別、支持級別、或這兩種級別。
10. 如權(quán)利要求9所述的方法,其特征在于,還包括提供訪問所述數(shù)據(jù)存儲 的消費(fèi)者就緒應(yīng)用程序用戶界面、或訪問所述數(shù)據(jù)存儲的直接訪問REST式API 接口、或兩者。
11. 一種用于提供網(wǎng)絡(luò)數(shù)據(jù)存儲作為服務(wù)的方法(500),包括-接收(502)通過實(shí)體數(shù)據(jù)模型(EDM)表征來表達(dá)的應(yīng)用程序概念模型; 在所述EDM表征和存儲表征格式之間映射(508)相關(guān);以及 提供(506)允許與數(shù)據(jù)存儲中的數(shù)據(jù)的無狀態(tài)的統(tǒng)一交互的代表性狀態(tài)傳輸 (REST)接口。
12. 如權(quán)利要求ll所述的方法,其特征在于,還包括提供用于存儲與所述應(yīng) 用程序概念模型有關(guān)的數(shù)據(jù)的web規(guī)模的網(wǎng)絡(luò)數(shù)據(jù)存儲,所述數(shù)據(jù)存儲是根據(jù)所 述存儲表征格式來構(gòu)造的。
13. 如權(quán)利要求11所述的方法,其特征在于,還包括響應(yīng)于查詢從所述存儲 傳送數(shù)據(jù)。
14. 如權(quán)利要求12所述的方法,其特征在于,所述實(shí)體處于對與所述應(yīng)用程 序概念模型相關(guān)聯(lián)的應(yīng)用程序有用的形式。
15. 如權(quán)利要求11所述的方法,其特征在于,所述EDM指定實(shí)體類型、實(shí) 體實(shí)例、或?qū)嶓w集合,關(guān)系類型、關(guān)系實(shí)例、或關(guān)系集合,或者動作類型、動作實(shí) 例、或動作集合,或其組合中的至少一個。
16. 如權(quán)利要求12所述的方法,其特征在于,還包括將所述EDM表征定義 的EDM模式應(yīng)用于與所述數(shù)據(jù)存儲中的數(shù)據(jù)的交互。
17. 如權(quán)利要求15所述的方法,其特征在于,還包括定義與應(yīng)用于與所述數(shù) 據(jù)存儲中的數(shù)據(jù)的交互的所述EDM模式不同的、用于所述數(shù)據(jù)存儲的存儲模式。
18. 如權(quán)利要求16所述的方法,其特征在于,還包括在應(yīng)用于與所述數(shù)據(jù)存 儲中的數(shù)據(jù)的交互的所述EDM模式和用于所述數(shù)據(jù)存儲的所述存儲模式之間映射 相關(guān)。
19. 如權(quán)利要求16所述的方法,其特征在于,所述存儲模式是與所述EDM 表征所定義的EDM模式不同的EDM模式。
20. 如權(quán)利要求12所述的方法,其特征在于,從所述存儲傳送的所述數(shù)據(jù)是 由一數(shù)據(jù)表示格式來表征的,所述數(shù)據(jù)表示格式可以包括Java腳本對象注釋(JSON)、資源描述框架(RDF)、或普通老式可擴(kuò)展標(biāo)記語言(POX)、或其 組合。
全文摘要
所要求保護(hù)的主題提供了可以在使用高度可表達(dá)的EDM概念格式的應(yīng)用程序接口和以高效的高度可伸縮的存儲格式來構(gòu)造的數(shù)據(jù)存儲之間進(jìn)行相關(guān)的在線的因特網(wǎng)類服務(wù)。這種服務(wù)可以包括在EDM模式和數(shù)據(jù)結(jié)構(gòu)格式之間進(jìn)行映射的組件。另外,查詢回復(fù)可以包括用不同于EDM查詢格式的凈荷格式呈現(xiàn)的數(shù)據(jù)。
文檔編號G06F17/40GK101617311SQ200880005232
公開日2009年12月30日 申請日期2008年2月18日 優(yōu)先權(quán)日2007年2月16日
發(fā)明者A·A·巴尼特, D·B·約翰斯通, P·卡斯特羅, T·I·馬拉柳 申請人:微軟公司