欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于實(shí)施可擴(kuò)展數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)和方法與流程

文檔序號:11323322閱讀:344來源:國知局
本申請是國際申請日為2012年6月27日的、名稱為“用于實(shí)施可擴(kuò)展數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)和方法”的發(fā)明專利申請no.201280037292.5(pct/us2012/044371)的分案申請。本申請涉及一種用于實(shí)施可擴(kuò)展數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)和方法。
背景技術(shù)
::多個(gè)前沿技術(shù)組織正投資構(gòu)建出售“軟件即服務(wù)”的技術(shù)。這些服務(wù)向客戶端或訂戶提供對共享存儲(chǔ)裝置(例如,數(shù)據(jù)庫系統(tǒng))和/或計(jì)算資源的訪問。在多層電子商務(wù)系統(tǒng)內(nèi),可以將不同資源分配給訂戶和/或來自整個(gè)機(jī)器的訂戶應(yīng)用、cpu、存儲(chǔ)器、網(wǎng)絡(luò)帶寬和i/o能力。出于多種原因中的任何一種(包括安全問題、災(zāi)難預(yù)防和恢復(fù)問題、數(shù)據(jù)局部性和可用性問題等),代表用戶管理大量數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng)可以在通常在不同位置中的兩個(gè)或更多個(gè)機(jī)器上分布和/或復(fù)制所述數(shù)據(jù)??梢杂萌魏螖?shù)量的方式配置這些機(jī)器,包括配置成共享資源池??蛻舳藨?yīng)用與數(shù)據(jù)庫服務(wù)器之間的交互通常包括讀操作(只讀查詢)、寫操作(用來存儲(chǔ)數(shù)據(jù))和可使用讀取-修改-寫入工作流程而概念化的更新操作。附圖說明圖1是示出被配置來實(shí)施基于網(wǎng)絡(luò)服務(wù)的數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)架構(gòu)的一個(gè)實(shí)施方案的方框圖。圖2a至圖2c是示出根據(jù)一個(gè)實(shí)施方案的網(wǎng)絡(luò)服務(wù)平臺(tái)的各種組件的方框圖。圖3a和圖3b是示出根據(jù)一個(gè)實(shí)施方案的將數(shù)據(jù)作為項(xiàng)目存儲(chǔ)在多個(gè)表格中的方框圖。圖4是示出根據(jù)一個(gè)實(shí)施方案的包括數(shù)值屬性的三個(gè)項(xiàng)目的方框圖,所述數(shù)值屬性被指定為存儲(chǔ)所述三個(gè)項(xiàng)目的表格的主鍵。圖5是示出用于代表存儲(chǔ)服務(wù)客戶端創(chuàng)建由數(shù)據(jù)存儲(chǔ)服務(wù)維護(hù)的表格的方法的一個(gè)實(shí)施方案的流程圖。圖6是示出用于響應(yīng)于通過網(wǎng)絡(luò)服務(wù)api接收的請求而創(chuàng)建表格的方法的一個(gè)實(shí)施方案的流程圖。圖7是示出用于生成表格元數(shù)據(jù)的方法的一個(gè)實(shí)施方案的流程圖。圖8是示出createtable工作流程的一個(gè)實(shí)施方案的流程圖。圖9是示出用于響應(yīng)于更新項(xiàng)目的請求而更新項(xiàng)目的方法的一個(gè)實(shí)施方案的流程圖。圖10是示出用于使用支持條件更新和/或多個(gè)輸出選項(xiàng)的api來更新項(xiàng)目的方法的一個(gè)實(shí)施方案的流程圖。圖11是示出用于將在非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中維護(hù)的表格分區(qū)的方法的一個(gè)實(shí)施方案的流程圖。圖12是示出用于執(zhí)行查詢的方法的一個(gè)實(shí)施方案的流程圖。圖13是示出用于執(zhí)行查詢的方法的另一實(shí)施方案的流程圖。圖14是示出用于執(zhí)行表格掃描操作的方法的一個(gè)實(shí)施方案的流程圖。圖15是示出根據(jù)一個(gè)實(shí)施方案的用于執(zhí)行已指定掃描或響應(yīng)限制的查詢或掃描操作的方法的流程圖。圖16是示出根據(jù)一個(gè)實(shí)施方案的用于提供數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)的數(shù)據(jù)模型的部分的方框圖。圖17是示出用于使用優(yōu)選吞吐量模型來代表數(shù)據(jù)存儲(chǔ)服務(wù)客戶端創(chuàng)建并管理表格的方法的一個(gè)實(shí)施方案的流程圖。圖18是示出用于當(dāng)維護(hù)或修改既定吞吐量水平時(shí)為針對特定表格的請求服務(wù)的方法的一個(gè)實(shí)施方案的流程圖。圖19是示出用于當(dāng)由數(shù)據(jù)存儲(chǔ)服務(wù)代表存儲(chǔ)服務(wù)客戶端維護(hù)的表格的分區(qū)“有效”時(shí)移動(dòng)所述分區(qū)的副本的方法的一個(gè)實(shí)施方案的流程圖。圖20是示出用于使用物理拷貝機(jī)制移動(dòng)副本的方法的一個(gè)實(shí)施方案的流程圖。圖21是示出用于響應(yīng)于劃分由數(shù)據(jù)存儲(chǔ)服務(wù)維護(hù)的表格的分區(qū)的請求而劃分所述分區(qū)的方法的一個(gè)實(shí)施方案的流程圖。圖22是示出用于響應(yīng)于檢測異常而移動(dòng)由數(shù)據(jù)存儲(chǔ)服務(wù)維護(hù)的表格的分區(qū)的方法的一個(gè)實(shí)施方案的流程圖。圖23是示出用于響應(yīng)于檢測到存儲(chǔ)節(jié)點(diǎn)上的熱點(diǎn)而移動(dòng)或劃分由數(shù)據(jù)存儲(chǔ)服務(wù)維護(hù)的表格的分區(qū)的方法的一個(gè)實(shí)施方案的流程圖。圖24是示出用于代表一個(gè)或多個(gè)存儲(chǔ)服務(wù)客戶端維護(hù)并管理多個(gè)表格的方法的一個(gè)實(shí)施方案的流程圖。圖25是示出根據(jù)一個(gè)實(shí)施方案的可以適用于實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的計(jì)算節(jié)點(diǎn)的方框圖。雖然本文中已通過以多個(gè)實(shí)施方案和說明性附圖為實(shí)例的方式描述實(shí)施方案,但是本領(lǐng)域那些技術(shù)人員應(yīng)認(rèn)識(shí)到實(shí)施方案不限于已描述的實(shí)施方案或附圖。應(yīng)了解,附圖和附圖的詳述不旨在將實(shí)施方案限于所公開的特定形式,而恰恰相反,本發(fā)明將涵蓋落在如由所附權(quán)利要求定義的精神和范圍內(nèi)的所有修改、等效物和替代。本文中使用的標(biāo)題是僅出于組織目的且并非意指用來限制描述或權(quán)利要求的范圍。如本申請全文中使用,以允許意義(即,意指具有……的可能)而非強(qiáng)制意義(即,意指必須)使用單詞“可以(may)”。類似地,單詞“包括(include)”、“包括(including)”和包括(includes)意指包括但不限于。具體實(shí)施方式可以以各種組合且在各種實(shí)施方案中采用本文中描述的系統(tǒng)和方法以實(shí)施向存儲(chǔ)服務(wù)客戶端(例如,用戶、訂戶或代表用戶或訂戶訪問數(shù)據(jù)存儲(chǔ)服務(wù)的客戶端應(yīng)用)提供數(shù)據(jù)存儲(chǔ)服務(wù)的基于網(wǎng)絡(luò)的服務(wù)。如本文中詳述,在一些實(shí)施方案中,服務(wù)可以支持代表客戶端在非關(guān)系數(shù)據(jù)存儲(chǔ)裝置(例如,非關(guān)系數(shù)據(jù)庫)中維護(hù)表格的無縫擴(kuò)展。在一些實(shí)施方案中,服務(wù)可以通過復(fù)制而提供高水平的持續(xù)性和可用性。在一些實(shí)施方案中,服務(wù)本身可能不一定強(qiáng)加最大表格大小或最大吞吐量的限制,且即使是具有大規(guī)模擴(kuò)展的表格也不一定需要客戶端分區(qū)。服務(wù)可以支持響應(yīng)于檢測到各種異常(例如,故障或錯(cuò)誤狀況、熱點(diǎn)或表格大小和/或服務(wù)請求吞吐量中的增加)而對數(shù)據(jù)進(jìn)行自動(dòng)現(xiàn)場再分區(qū),和/或?qū)?shù)據(jù)進(jìn)行顯式(例如,積極主動(dòng)和/或訂戶起始的)現(xiàn)場再分區(qū)以支持規(guī)劃或期望的表格大小和/或吞吐量增加。換句話說,在一些實(shí)施方案中,服務(wù)可以響應(yīng)于接收到存儲(chǔ)、檢索、修改或刪除可擴(kuò)展表格中的項(xiàng)目的一個(gè)或多個(gè)請求而開始對表格再調(diào)整(擴(kuò)展)和/或再分區(qū)。在各種實(shí)施方案中,本文中描述的服務(wù)可以支持靈活的綱目、多個(gè)可用一致性模型、各種服務(wù)水平和/或商業(yè)模型選項(xiàng)、多個(gè)索引選項(xiàng)和/或多個(gè)查詢類型。在一些實(shí)施方案中,存儲(chǔ)服務(wù)客戶端(例如,用戶、訂戶或客戶端應(yīng)用)可以通過使用相對較小(且相對簡易)的api集的網(wǎng)絡(luò)服務(wù)接口與服務(wù)進(jìn)行交互,使得服務(wù)的客戶端在很大程度上從數(shù)據(jù)庫管理的負(fù)擔(dān)中解脫。服務(wù)可以展現(xiàn)出服務(wù)請求中的低等待時(shí)間。與一些先前數(shù)據(jù)存儲(chǔ)服務(wù)不同的是,服務(wù)可以低成本支持可預(yù)測性能,同時(shí)支持多重租賃和自動(dòng)熱管理。在各種實(shí)施方案中,本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)可以提供應(yīng)用程序接口(api),其包括支持對由所述服務(wù)代表存儲(chǔ)服務(wù)客戶端維護(hù)的表格中的數(shù)據(jù)進(jìn)行下列操作中的一些或所有:放置(或存儲(chǔ))項(xiàng)目、獲取(或檢索)具有指定主鍵的一個(gè)或多個(gè)項(xiàng)目、刪除項(xiàng)目、更新單個(gè)項(xiàng)目中的屬性、使用索引查詢項(xiàng)目和掃描整個(gè)表格(例如,列出整個(gè)表格的項(xiàng)目),從而視情況篩選返回的項(xiàng)目。在一些實(shí)施方案中,除了支持最終一致讀取操作以外,服務(wù)(和/或?qū)嵤┓?wù)的底層系統(tǒng))還可以支持強(qiáng)一致性模型。在一些實(shí)施方案中,經(jīng)由api作出的服務(wù)請求可以包括一個(gè)或多個(gè)用戶優(yōu)選(諸如優(yōu)選一致性模型、優(yōu)選服務(wù)請求吞吐量水平或請求保證的服務(wù)請求吞吐量水平)的指示。在其它實(shí)施方案中,這些用戶優(yōu)選中的一些或所有可以在創(chuàng)建表格時(shí)被指定,或可以是客戶端專用、賬號專用、各種表格類型專用或由全系統(tǒng)默認(rèn)值指定,而非基于預(yù)請求指定。api可以支持極端擴(kuò)展和/或支持的可預(yù)測性能多于由先前數(shù)據(jù)存儲(chǔ)系統(tǒng)和服務(wù)提供的可預(yù)測性能。在一些實(shí)施方案中,服務(wù)(和/或底層系統(tǒng))可以強(qiáng)加上限于個(gè)別項(xiàng)目的大小,以(例如)允許服務(wù)將項(xiàng)目的全部內(nèi)容存儲(chǔ)在底層數(shù)據(jù)存儲(chǔ)系統(tǒng)中的單個(gè)分區(qū)中。這又可以促進(jìn)對項(xiàng)目執(zhí)行自動(dòng)更新且不大幅減小吞吐量,且使得可以更加容易地將項(xiàng)目內(nèi)容維護(hù)在穩(wěn)定工作集中。換句話說,在一些實(shí)施方案中,限制個(gè)別項(xiàng)目的大小可以促進(jìn)系統(tǒng)中的強(qiáng)一致性和高性能兩者。圖1中示出被配置來實(shí)施諸如本文中描述的基于網(wǎng)絡(luò)服務(wù)的數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)架構(gòu)的一個(gè)實(shí)施方案。應(yīng)注意,在給定組件的一個(gè)或多個(gè)實(shí)例可以存在的情況中,可以以單數(shù)或復(fù)數(shù)參考下文中的所述組件。然而,任何一種形式的使用不旨在排除另一種形式。在各種實(shí)施方案中,圖1中示出的組件可以作為可由計(jì)算機(jī)硬件(例如,微處理器或計(jì)算機(jī)系統(tǒng))直接或間接執(zhí)行的指令直接實(shí)施于計(jì)算機(jī)硬件內(nèi),或使用這些技術(shù)的組合而加以實(shí)施。例如,圖1的組件可以由包括多個(gè)計(jì)算節(jié)點(diǎn)(或簡稱為節(jié)點(diǎn))(諸如圖22中示出且下文論述的計(jì)算機(jī)節(jié)點(diǎn)實(shí)施方案)的分布式系統(tǒng)實(shí)施。在各種實(shí)施方案中,給定存儲(chǔ)服務(wù)系統(tǒng)組件的功能可以由特定計(jì)算節(jié)點(diǎn)實(shí)施或可以在多個(gè)計(jì)算節(jié)點(diǎn)上分布。在一些實(shí)施方案中,給定計(jì)算節(jié)點(diǎn)可以實(shí)施一個(gè)以上存儲(chǔ)服務(wù)系統(tǒng)組件的功能。一般來說,存儲(chǔ)服務(wù)客戶端110a至110n可以包括可配置來經(jīng)由網(wǎng)絡(luò)120將網(wǎng)絡(luò)服務(wù)請求提交給網(wǎng)絡(luò)服務(wù)平臺(tái)130的任何類型的客戶端。例如,給定存儲(chǔ)服務(wù)客戶端110可以包括網(wǎng)絡(luò)瀏覽器的合適版本或插件模塊或被配置來執(zhí)行為對由網(wǎng)絡(luò)瀏覽器提供以向存儲(chǔ)服務(wù)客戶端(例如,客戶端應(yīng)用、用戶和/或訂戶)提供對由網(wǎng)絡(luò)服務(wù)平臺(tái)130提供的數(shù)據(jù)存儲(chǔ)服務(wù)訪問的執(zhí)行環(huán)境的擴(kuò)充或在所述執(zhí)行環(huán)境內(nèi)執(zhí)行的其它類型的代碼模塊。替代地,存儲(chǔ)服務(wù)客戶端110可以包括應(yīng)用,諸如數(shù)據(jù)庫應(yīng)用、媒體應(yīng)用、辦公室應(yīng)用或可以利用持久性存儲(chǔ)資源的任何其它應(yīng)用。在一些實(shí)施方案中,這種應(yīng)用可以包括用于生成并處理網(wǎng)絡(luò)服務(wù)請求且無需對所有類型的基于網(wǎng)絡(luò)的數(shù)據(jù)實(shí)施全瀏覽器支持的充足協(xié)議支持(例如,超文本傳輸協(xié)議(http)的合適版本)。即,存儲(chǔ)服務(wù)客戶端110可以是被配置來與網(wǎng)絡(luò)服務(wù)平臺(tái)130直接交互的應(yīng)用。在各種實(shí)施方案中,存儲(chǔ)服務(wù)客戶端110可以被配置來根據(jù)表述性狀態(tài)轉(zhuǎn)移(rest)樣式網(wǎng)絡(luò)服務(wù)架構(gòu)、基于文檔或消息的網(wǎng)絡(luò)服務(wù)架構(gòu)或另一合適的網(wǎng)絡(luò)服務(wù)架構(gòu)生成網(wǎng)絡(luò)服務(wù)請求。在一些實(shí)施方案中,存儲(chǔ)服務(wù)客戶端110可以被配置來以對其他應(yīng)用透明的方式向所述應(yīng)用提供對基于網(wǎng)絡(luò)服務(wù)的存儲(chǔ)的訪問。例如,存儲(chǔ)服務(wù)客戶端110可以被配置來與操作系統(tǒng)或文件系統(tǒng)集成在一起以根據(jù)本文中描述的存儲(chǔ)模型的合適變體提供存儲(chǔ)。然而,操作系統(tǒng)或文件系統(tǒng)可以對應(yīng)用呈現(xiàn)不同存儲(chǔ)接口,諸如文件、目錄和/或文件夾的常規(guī)的文件系統(tǒng)層次。在這樣的實(shí)施方案中,應(yīng)用可以不需要進(jìn)行修改而利用本文中描述的存儲(chǔ)系統(tǒng)服務(wù)模型。相反地,可以由代表在操作系統(tǒng)環(huán)境內(nèi)執(zhí)行的應(yīng)用的存儲(chǔ)服務(wù)客戶端110和操作系統(tǒng)或文件系統(tǒng)來協(xié)調(diào)與網(wǎng)絡(luò)服務(wù)平臺(tái)130的對接細(xì)節(jié)。存儲(chǔ)服務(wù)客戶端110可以經(jīng)由網(wǎng)絡(luò)120將網(wǎng)絡(luò)服務(wù)請求傳達(dá)到網(wǎng)絡(luò)服務(wù)平臺(tái)130并從網(wǎng)絡(luò)服務(wù)平臺(tái)130接收響應(yīng)。在各種實(shí)施方案中,網(wǎng)絡(luò)120可以包括在客戶端110與平臺(tái)130之間建立基于網(wǎng)絡(luò)的通信所必需的聯(lián)網(wǎng)硬件和協(xié)議的任何合適的組合。例如,網(wǎng)絡(luò)120可以大體上包括共同地實(shí)施互聯(lián)網(wǎng)的各種電信網(wǎng)絡(luò)和服務(wù)供應(yīng)商。網(wǎng)絡(luò)120也可以包括專用網(wǎng)絡(luò),諸如局域網(wǎng)(lan)或廣域網(wǎng)(wan)和公共或?qū)S脽o線網(wǎng)。例如,給定客戶端110和網(wǎng)絡(luò)服務(wù)平臺(tái)130均可以被分別配備在本身具有內(nèi)部網(wǎng)絡(luò)的企業(yè)內(nèi)。在這樣的實(shí)施方案中,網(wǎng)絡(luò)120可以包括在給定客戶端110與互聯(lián)網(wǎng)之間和互聯(lián)網(wǎng)與網(wǎng)絡(luò)服務(wù)平臺(tái)130之間建立聯(lián)網(wǎng)鏈路所必需的硬件(例如,調(diào)制解調(diào)器、路由器、交換機(jī)、加載均衡器、代理服務(wù)器等)和軟件(例如,協(xié)議堆棧、審計(jì)軟件、防火墻/安全軟件等)。應(yīng)注意,在一些實(shí)施方案中,存儲(chǔ)服務(wù)客戶端110可以使用專用網(wǎng)絡(luò)而非公共互聯(lián)網(wǎng)來與網(wǎng)絡(luò)服務(wù)平臺(tái)130進(jìn)行通信。例如,客戶端110可以被配備在與本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))相同的企業(yè)內(nèi)。在這種情況下,客戶端110可以完全通過專用網(wǎng)絡(luò)120(例如,可以使用基于互聯(lián)網(wǎng)的通信協(xié)議但不可公共訪問的lan或wan)與平臺(tái)130進(jìn)行通信。一般來說,網(wǎng)絡(luò)服務(wù)平臺(tái)130可以被配置來實(shí)施一個(gè)或多個(gè)服務(wù)端點(diǎn),服務(wù)端點(diǎn)被配置來接收并處理網(wǎng)絡(luò)服務(wù)請求,諸如訪問由數(shù)據(jù)存儲(chǔ)服務(wù)代表客戶端/用戶維護(hù)的表格和/或存儲(chǔ)在所述表格中的項(xiàng)目和屬性的請求。例如,網(wǎng)絡(luò)服務(wù)平臺(tái)130可以包括被配置來實(shí)施各種服務(wù)端點(diǎn)且適當(dāng)?shù)亟邮詹⑻幚磲槍λ龆它c(diǎn)的基于http的網(wǎng)絡(luò)服務(wù)請求的硬件和/或軟件。在一個(gè)實(shí)施方案中,網(wǎng)絡(luò)服務(wù)平臺(tái)130可以實(shí)施為被配置來從客戶端110接收網(wǎng)絡(luò)服務(wù)請求并將其轉(zhuǎn)發(fā)到共同地實(shí)施數(shù)據(jù)存儲(chǔ)系統(tǒng)的各種組件以用于處理的服務(wù)器系統(tǒng)。在其它實(shí)施方案中,網(wǎng)絡(luò)服務(wù)平臺(tái)130可以被配置為實(shí)施加載均衡和被配置來動(dòng)態(tài)地管理處理負(fù)載的大型網(wǎng)絡(luò)服務(wù)請求的其它請求管理特征的多個(gè)相異系統(tǒng)(例如,集群拓?fù)渲?。如圖1中示出,網(wǎng)絡(luò)服務(wù)平臺(tái)130可以包括前端模塊140(除了其它方面以外,其還可以被配置來接收、認(rèn)證、解析、抑制和/或調(diào)度服務(wù)請求)、一個(gè)或多個(gè)管理組件或自動(dòng)管理實(shí)體150(如下文更詳細(xì)描述,其可以被配置來提供各種可見度和/或控制功能)和多個(gè)存儲(chǔ)節(jié)點(diǎn)實(shí)體(示為160a至160n),其中的每個(gè)可以代表客戶端/用戶或代表數(shù)據(jù)存儲(chǔ)服務(wù)(和其底層系統(tǒng))本身維護(hù)并管理一個(gè)或多個(gè)表格。根據(jù)各種實(shí)施方案下文更詳細(xì)地描述由這些類型的組件中的每個(gè)提供的功能中的一些。在各種實(shí)施方案中,網(wǎng)絡(luò)服務(wù)平臺(tái)130可以被配置來支持不同類型的網(wǎng)絡(luò)服務(wù)請求。例如,在一些實(shí)施方案中,平臺(tái)130可以被配置來實(shí)施特定網(wǎng)絡(luò)服務(wù)應(yīng)用程序接口(api),其支持對由數(shù)據(jù)存儲(chǔ)服務(wù)系統(tǒng)代表客戶端/用戶維護(hù)并管理的表格(和/或存儲(chǔ)在所述表格中的數(shù)據(jù))進(jìn)行各種操作。下文更詳細(xì)地描述由這種api支持的操作的實(shí)例。除了充當(dāng)客戶端的網(wǎng)絡(luò)服務(wù)請求的可尋址端點(diǎn)以外,在一些實(shí)施方案中,網(wǎng)絡(luò)服務(wù)平臺(tái)130還可以實(shí)施各種客戶端管理特征。例如,平臺(tái)130可以通過(諸如)追蹤以下各項(xiàng)來協(xié)調(diào)網(wǎng)絡(luò)服務(wù)(包括存儲(chǔ)資源)的客戶端使用的計(jì)量和審計(jì):請求客戶端110的身份、客戶端請求的次數(shù)和/或頻率、代表客戶端110存儲(chǔ)或檢索的表格和/或項(xiàng)目的大小、由客戶端110使用的總存儲(chǔ)帶寬、由客戶端110請求的存儲(chǔ)類別和/或任何其它可測量的客戶端使用參數(shù)。平臺(tái)130也可以實(shí)施財(cái)務(wù)審計(jì)和計(jì)費(fèi)系統(tǒng),或可以維護(hù)可以由用于報(bào)告和計(jì)費(fèi)客戶端使用活動(dòng)的外部系統(tǒng)查詢并處理的使用數(shù)據(jù)的數(shù)據(jù)庫。在一些實(shí)施方案中,平臺(tái)130可以包括封鎖管理程序和/或引導(dǎo)程序配置(未示出)。在各種實(shí)施方案中,可以在被配置來執(zhí)行本文中描述的功能的一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)上實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)。在一些實(shí)施方案中,可以由網(wǎng)絡(luò)服務(wù)平臺(tái)(諸如圖1中的網(wǎng)絡(luò)服務(wù)平臺(tái)130)實(shí)施服務(wù),網(wǎng)絡(luò)服務(wù)平臺(tái)是由多個(gè)計(jì)算節(jié)點(diǎn)組成,多個(gè)計(jì)算節(jié)點(diǎn)中的每個(gè)可以執(zhí)行本文中描述的功能中的一個(gè)或多個(gè)。計(jì)算節(jié)點(diǎn)的各種集合可以被配置來提供自動(dòng)管理集群、數(shù)據(jù)存儲(chǔ)服務(wù)專用的資源集群和外部資源的集合(在一些實(shí)施方案中,其可以由其它網(wǎng)絡(luò)服務(wù)或應(yīng)用共享)的功能。在一些實(shí)施方案中,與系統(tǒng)交互以提供本文中描述的功能的外部資源可以包括如圖1中示為簡易工作流程組件170的簡易工作流程組件。簡易工作流程組件170可以提供框架,其它組件通過所述框架與簡易工作流程系統(tǒng)交互。在一些實(shí)施方案中,網(wǎng)絡(luò)服務(wù)平臺(tái)130可以包括構(gòu)建在所述框架的頂部上的訪問api(未示出)。這個(gè)接口可以允許系統(tǒng)實(shí)施適用于數(shù)據(jù)存儲(chǔ)服務(wù)希望經(jīng)歷的使用模式的api。在一些實(shí)施方案中,系統(tǒng)中使用簡易工作流程組件170的組件或模塊可以包括這些接口而非與由簡易工作流程組件170的提供的接口直接對接。在一些實(shí)施方案中,除了簡易工作流程組件170以外,網(wǎng)絡(luò)服務(wù)平臺(tái)130還可以依賴于一個(gè)或多個(gè)外部資源,諸如外部存儲(chǔ)服務(wù)180和/或其它外部(且在一些情況下共享的)外部資源。在一些實(shí)施方案中,簡易工作流程組件170可以用來執(zhí)行分布式操作,諸如擴(kuò)充超出特定分區(qū)復(fù)制組的那些分布式操作。圖2a至圖2c示出根據(jù)一個(gè)實(shí)施方案的可以包括在網(wǎng)絡(luò)服務(wù)平臺(tái)130的多種類型的組件中的每個(gè)中的各種元件或模塊。如圖2a中示出,前端模塊140可以包括被配置來對服務(wù)請求執(zhí)行解析和/或抑制(示為210)、對服務(wù)請求執(zhí)行認(rèn)證和/或計(jì)量(示為215)、調(diào)度服務(wù)請求(示為225)和/或維護(hù)分區(qū)映射緩存(示為230)的一個(gè)或多個(gè)模塊。除了這些組件專用模塊以外,前端模塊140還可以包括共同地實(shí)施網(wǎng)絡(luò)服務(wù)平臺(tái)130的多種類型的計(jì)算節(jié)點(diǎn)共用的組件,諸如消息總線(示為235)和/或動(dòng)態(tài)配置模塊(示為240)。在其它實(shí)施方案中,前端模塊140中可以包括更多、更少或不同元件,或網(wǎng)絡(luò)服務(wù)平臺(tái)130的另一組件中或被配置來與網(wǎng)絡(luò)服務(wù)平臺(tái)130交互以提供本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)的組件中可以包括示為包括在前端模塊140中的元件中的任何一個(gè)。如圖2b中示出,自動(dòng)管理實(shí)體150可以包括被配置來向系統(tǒng)管理員提供可見度和控制(示為245)或執(zhí)行熱均衡(示為250)和/或異??刂?示為255)、資源分配(示為260)的一個(gè)或多個(gè)模塊。自動(dòng)管理實(shí)體150也可以包括管理主控臺(tái)265,系統(tǒng)管理員可以通過管理主控臺(tái)265與數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))交互。在一些實(shí)施方案中,管理主控臺(tái)265可以是數(shù)據(jù)存儲(chǔ)服務(wù)的可見度和控制的主要點(diǎn)(例如,由系統(tǒng)管理員進(jìn)行配置或再配置)。例如,管理主控臺(tái)265可以實(shí)施為相對較瘦客戶端,其在功能上向系統(tǒng)管理員和/或其它特權(quán)用戶提供顯示和控制,且可以通過其來觀察和/或更新系統(tǒng)狀態(tài)指示符、元數(shù)據(jù)和/或操作參數(shù)。除了這些組件專用模塊以外,自動(dòng)管理實(shí)體150也可以包括共同地實(shí)施網(wǎng)絡(luò)服務(wù)平臺(tái)130的不同類型的計(jì)算節(jié)點(diǎn)共用的組件,諸如消息總線(示為235)和/或動(dòng)態(tài)配置模塊(示為240)。在其它實(shí)施方案中,自動(dòng)管理實(shí)體150中可以包括更多、更少或不同元件,或網(wǎng)絡(luò)服務(wù)平臺(tái)130的另一組件中或被配置來與網(wǎng)絡(luò)服務(wù)平臺(tái)130交互以提供本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)的組件中可以包括示為包括在自動(dòng)管理實(shí)體150中的元件中的任何一個(gè)。如圖2c中示出,存儲(chǔ)節(jié)點(diǎn)實(shí)體160可以包括被配置來提供分區(qū)管理(示為270)、實(shí)施復(fù)制和故障轉(zhuǎn)移程序(示為275)和/或?qū)?yīng)用程序接口(api)提供給底層存儲(chǔ)裝置(示為280)的一個(gè)或多個(gè)模塊。如這個(gè)實(shí)例中示出,每個(gè)存儲(chǔ)節(jié)點(diǎn)實(shí)體160可以包括存儲(chǔ)引擎285,其可以被配置來代表一個(gè)或多個(gè)客戶端/用戶將一個(gè)或多個(gè)表格(和相關(guān)表格數(shù)據(jù))維護(hù)(即,存儲(chǔ)和管理)在存儲(chǔ)裝置280(在一些實(shí)施方案中,其可以是非關(guān)系數(shù)據(jù)庫)中。除了這些組件專用模塊以外,存儲(chǔ)節(jié)點(diǎn)實(shí)體160還可以包括共同地實(shí)施網(wǎng)絡(luò)服務(wù)平臺(tái)130的不同類型的計(jì)算節(jié)點(diǎn)共用的組件,諸如消息總線(示為235)和/或動(dòng)態(tài)配置模塊(示為240)。在其它實(shí)施方案中,存儲(chǔ)節(jié)點(diǎn)實(shí)體160中可以包括更多、更少或不同元件,或網(wǎng)絡(luò)服務(wù)平臺(tái)130的另一組件中或被配置來與網(wǎng)絡(luò)服務(wù)平臺(tái)130交互以提供本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)的組件中可以包括示為包括在存儲(chǔ)節(jié)點(diǎn)實(shí)體160中的元件中的任何一個(gè)。以本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)為基礎(chǔ)的系統(tǒng)可以代表存儲(chǔ)服務(wù)客戶端(例如,客戶端應(yīng)用、用戶和/或訂戶)將數(shù)據(jù)存儲(chǔ)在包括具有一個(gè)或多個(gè)屬性的項(xiàng)目的表格中。在一些實(shí)施方案中,數(shù)據(jù)存儲(chǔ)服務(wù)可以給客戶端/用戶呈現(xiàn)數(shù)據(jù)模型,在數(shù)據(jù)模型中代表客戶端/用戶維護(hù)的每個(gè)表格包括一個(gè)或多個(gè)項(xiàng)目且每個(gè)項(xiàng)目包括屬性集合。項(xiàng)目的屬性可以是按任何次序的名稱值對的集合。在一些實(shí)施方案中,項(xiàng)目中的每個(gè)屬性可以具有名稱、類型和值。一些屬性可以是單值,使得屬性名稱被映射到單個(gè)值,而其它屬性可以是多值,使得屬性名稱被映射到兩個(gè)或更多個(gè)值。在一些實(shí)施方案中,屬性的名稱可以總是字符串,但是其值可以是字符串、數(shù)字、字符串集或數(shù)集。以下是屬性的所有實(shí)例:"imageid"=1、"title"="flower"、"tags"={"flower"、"jasmine"、"white"}、"ratings"={3,4,2}。項(xiàng)目可以通過給每個(gè)項(xiàng)目指派主鍵值(其可以包括一個(gè)或多個(gè)屬性值)來管理,且這個(gè)主鍵值也可以用來唯一識(shí)別所述項(xiàng)目。在一些實(shí)施方案中,可以在表格中的項(xiàng)目上定義大量屬性,但是每個(gè)項(xiàng)目可以包括這些屬性的稀疏集(其中指定用于一個(gè)項(xiàng)目的特定屬性與相同表格中的另一項(xiàng)目的屬性無關(guān)),且可以選用除了主鍵屬性以外的所有屬性。換句話說,不同于傳統(tǒng)的數(shù)據(jù)庫,由數(shù)據(jù)存儲(chǔ)服務(wù)(和底層存儲(chǔ)系統(tǒng))維護(hù)的表格除了其依賴于主鍵以外可以不具有預(yù)定義綱目。注意在一些實(shí)施方案中,如果屬性包括在項(xiàng)目中,那么其值不能是空值或不能為空(例如,屬性名稱和值不能是空的字符串),且在單個(gè)項(xiàng)目內(nèi),其屬性名稱可以是唯一的。數(shù)據(jù)存儲(chǔ)系統(tǒng)中可以采用各種類型以支持按已排序索引排序數(shù)據(jù)。在一些實(shí)施方案中,數(shù)據(jù)存儲(chǔ)服務(wù)可以僅支持少數(shù)種類型(例如,字符串和十進(jìn)制數(shù)),且所有屬性值必須具有標(biāo)量或集合(多個(gè)值)類型。例如,在一些實(shí)施方案中,服務(wù)(和/或?qū)嵤┓?wù)的底層系統(tǒng))可以僅支持兩種標(biāo)量數(shù)據(jù)類型:字符串和數(shù)字(例如,十進(jìn)制數(shù))。在此類實(shí)施方案中,可以將日期編碼為整數(shù)(例如,unix紀(jì)元時(shí)間戳)而非使用“日期”數(shù)據(jù)類型來編碼日期。在其它實(shí)施方案中,可以支持更多、更少或不同數(shù)據(jù)類型。如上文提及,在一些實(shí)施方案中,屬性名稱可以總是數(shù)據(jù)類型“字符串”。在一些實(shí)施方案中,服務(wù)(和/或底層系統(tǒng))可以支持源于所支持標(biāo)量類型的多值類型,如下列實(shí)例:scalartype:={n|s}multivaluedtype:={ns|ss}在這個(gè)實(shí)例中,n表示數(shù)字,s表示字符串,ns表示數(shù)集,且ss表示字符串集。在各種實(shí)施方案中,類型“字符串”的屬性可以是鍵的部分或索引的部分,且字符串的最大大小可以受限于索引鍵的大小(例如,范圍鍵累積1024個(gè)字節(jié)或每個(gè)散列鍵累積2048個(gè)字節(jié))或項(xiàng)目大小(例如,64k)。在各種實(shí)施方案中,類型“數(shù)字”的屬性可以用來存儲(chǔ)精確值十進(jìn)制和整數(shù),且可以具有可變寬度編碼。在一些實(shí)施方案中,可被這種類型的屬性占據(jù)的空間量可以限于預(yù)定量。也應(yīng)注意,在各種實(shí)施方案中,數(shù)字可以具有精度p(指示可被存儲(chǔ)的有效位的最大數(shù)字)和/或標(biāo)度s(指示從十進(jìn)制小數(shù)點(diǎn)到最低有效位的位數(shù))。在一些情況下,數(shù)字的精度和標(biāo)度可以由服務(wù)自動(dòng)地推斷,且所述數(shù)字可以使用適當(dāng)存儲(chǔ)大小。在一些實(shí)施方案中,可以在數(shù)字開始處使用負(fù)號來指定負(fù)數(shù),但是可以不存儲(chǔ)指定在數(shù)字前面的正號。在不同實(shí)施方案中,可以存儲(chǔ)或可以不存儲(chǔ)前導(dǎo)零和/或尾隨零。以下是可以由本文中描述的服務(wù)(和底層系統(tǒng))采用的數(shù)字格式的實(shí)例:number_format=[+|-][{integer}][{.integer}]如上文提及,項(xiàng)目可以包括一個(gè)或多個(gè)屬性。每個(gè)屬性可以具有兩個(gè)部分:屬性名稱(例如,utf8字符串)和屬性值(其可以表達(dá)為類型和值對象的組合,其中類型描述值的類型)。在一些實(shí)施方案中,單值屬性可以具有名稱和標(biāo)量值,且屬性的類型可以編碼在屬性值中,如以下實(shí)例:{"my-string-attr":{"s":"my-string-value"}}#字符串類型{"my-number-attr":{"n":123456.7}}#數(shù)字類型在一些實(shí)施方案中,多值屬性可以具有名稱和指定類型的一個(gè)或多個(gè)值。在此類實(shí)施方案中,值可以是唯一的,如下列實(shí)例:{"size":{"ss":「"xl","l","m","s"]}#字符串集{"singledigitprimes":{"ns":[2,3,5,7]}#數(shù)集在一些實(shí)施方案中,本文中描述的系統(tǒng)可以采用稍微受限的索引和/或查詢模型以為用戶/訂戶或客戶端應(yīng)用提供大量(即,幾乎無限制的)擴(kuò)展、可預(yù)測性和簡易性。例如,在一些實(shí)施方案中,可以僅由主鍵索引并分區(qū)數(shù)據(jù)(例如,在底層數(shù)據(jù)庫中進(jìn)行分區(qū))。在此類實(shí)施方案中,用于索引用戶表格中的數(shù)據(jù)的主鍵可以在代表用戶創(chuàng)建表格時(shí)由用戶指定。此后,用戶的數(shù)據(jù)的分區(qū)可以由系統(tǒng)處理,且從用戶提取出來。在一些實(shí)施方案中,用于索引數(shù)據(jù)的主鍵可以由單個(gè)屬性散列鍵組成。在其它實(shí)施方案中,用于索引和/或分區(qū)數(shù)據(jù)的主鍵可以是包括散列鍵組件和另一組件(有時(shí)候在本文中稱作范圍鍵組件)的組合鍵。如本文中更詳細(xì)地描述,在各種實(shí)施方案中,可以支持對索引的屬性進(jìn)行查詢,且可以提供全表格掃描功能(例如,支持檢修)。在一些實(shí)施方案中,用戶可以基于除了主鍵的屬性以外的一個(gè)或多個(gè)屬性定義表格的次級索引,且然后可以使用用戶定義的索引查詢項(xiàng)目。例如,在一些實(shí)施方案中,系統(tǒng)可以支持(例如,使用createindexapi)實(shí)時(shí)創(chuàng)建次級索引的創(chuàng)建,且這些次級索引可以基于存儲(chǔ)要求(例如,增加或降低數(shù)據(jù)量)和/或讀/寫通信量而自動(dòng)地?cái)U(kuò)展。在一些實(shí)施方案中,此類次級索引可以隨著更新表格中的項(xiàng)目而異步地更新。如先前提及,在一些實(shí)施方案中,由數(shù)據(jù)存儲(chǔ)服務(wù)維護(hù)的每個(gè)表格中的項(xiàng)目數(shù)可以沒有預(yù)定義限制。從概念上來說,每個(gè)項(xiàng)目可以被認(rèn)為是屬性名稱到對應(yīng)屬性值的映射。使用這種類比,映射中的每個(gè)條目是屬性。在各種實(shí)施方案中,每個(gè)項(xiàng)目可以包括鍵屬性、正零或更多非鍵屬性。在一些實(shí)施方案中,鍵屬性必須是單值屬性,而非鍵屬性可以是單值屬性或多值屬性。以下是具有5個(gè)屬性的項(xiàng)目的實(shí)例:pictureid(字符串類型)、customerid(數(shù)字類型)、title(字符串類型)和tags(多值字符串屬性)。在各種實(shí)施方案中,服務(wù)(和/或底層系統(tǒng))可以強(qiáng)加限制表格名稱、項(xiàng)目、屬性值、主鍵值和/或?qū)傩悦Q的預(yù)定大小。例如,在一些實(shí)施方案中,可以限制所有屬性名稱的總大小和項(xiàng)目中的值(例如,行大小)。圖3a和圖3b示出根據(jù)一個(gè)實(shí)施方案的將數(shù)據(jù)存儲(chǔ)在多個(gè)表格中。如圖3a示出且如上所述,多個(gè)表格(示為表格320a至320n)中的每個(gè)可以存儲(chǔ)多個(gè)項(xiàng)目。在已示出的實(shí)例中,表格320a存儲(chǔ)項(xiàng)目321a至321n,且表格320n存儲(chǔ)項(xiàng)目322a至322n。如圖3b中示出,存儲(chǔ)在表格中的項(xiàng)目中的每個(gè)可以包括多個(gè)屬性,且屬性中的每個(gè)可以包括屬性名稱和標(biāo)量或集合類型值。在這個(gè)實(shí)例中,項(xiàng)目321a(存儲(chǔ)在表格320a中)包括值是1的數(shù)值“imageid”屬性、值是20100915的數(shù)值“日期”屬性、名稱是“標(biāo)題”且值是“flower”的字符串屬性和名稱是“標(biāo)簽”且值是包括字符串“flower”、“jasmine”和“white”的集合的字符串屬性。在這個(gè)實(shí)例中,項(xiàng)目321b(也存儲(chǔ)在表格320a中)包括值是2的數(shù)值“imageid”屬性、名稱是“分級”且值是包括數(shù)值3、4和2的集合的數(shù)值屬性、名稱是“標(biāo)題”且值是“credenza”的字符串屬性、值是1024的數(shù)值“寬度”屬性和值是768的數(shù)值“深度”屬性。在這個(gè)實(shí)例中,項(xiàng)目321n(也存儲(chǔ)在表格320a中)包括值是n的數(shù)值“imageid”屬性、值是20110327的數(shù)值“日期”屬性和名稱是“標(biāo)簽”且值是包括字符串“france”和“architecture”的集合的字符串屬性。注意,即使項(xiàng)目321a、321b和321n全部存儲(chǔ)在相同表格(表格320a)中,它們也不會(huì)全部包括相同的屬性集合。相反地,每個(gè)項(xiàng)目包括來自指定用于存儲(chǔ)在表格320a中的項(xiàng)目集合的所有屬性中的屬性的稀疏集。在一些實(shí)施方案中,除了用戶數(shù)據(jù)以外,諸如本文中描述的那些表格的表格還可以用來存儲(chǔ)并管理系統(tǒng)元數(shù)據(jù)。上述稀疏填充的項(xiàng)目可以由下表1中的網(wǎng)格表示進(jìn)一步示出。注意,下表1的網(wǎng)格形式僅僅是用于示出以下事實(shí)的便捷機(jī)制:單個(gè)表格中的各項(xiàng)目可以包括表格中的項(xiàng)目集合中包括的項(xiàng)目屬性的不同子集。這并不意指暗示本文中描述的在非關(guān)系數(shù)據(jù)庫系統(tǒng)中維護(hù)的表格或項(xiàng)目本身的任何特定結(jié)構(gòu)。因此,表格1的行和列的選擇和布置可以被視為任意且僅為了說明目的。如本文中描述,由本文中描述的系統(tǒng)維護(hù)的表格可以不具有固定綱目。因此,項(xiàng)目可以不包括未包括在其中的屬性的占位符(即,空元素),且可以將屬性(和其值)添加到一個(gè)或多個(gè)項(xiàng)目而無需將其添加到所有其它項(xiàng)目。表格1—稀疏填充的項(xiàng)目屬性的實(shí)例在一些實(shí)施方案中,由數(shù)據(jù)存儲(chǔ)服務(wù)代表客戶端/用戶維護(hù)的表格可以具有識(shí)別其項(xiàng)目的主鍵。在各種實(shí)施方案中,可以對一個(gè)屬性定義主鍵(且主鍵可以是如上所述的單值)或?qū)Χ鄠€(gè)屬性定義主鍵(即,其可以是如上所述的組合主鍵)。因?yàn)橹麈I屬性唯一地識(shí)別表格內(nèi)的項(xiàng)目,所以主鍵屬性可以不可變,可以具有固定類型,且可以強(qiáng)制用于每個(gè)項(xiàng)目。在一些實(shí)施方案中,主鍵是經(jīng)索引的表格的唯一部分,且當(dāng)創(chuàng)建表格時(shí)可以指定索引類型。例如,當(dāng)創(chuàng)建項(xiàng)目的表格時(shí),可以將屬性指定為表格的主鍵屬性(或可以指定兩個(gè)屬性用于組合主鍵)。表格中的所有項(xiàng)目必須包括指定用于主鍵的屬性,且數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))可以確保對于表格中的每個(gè)項(xiàng)目來說所述屬性名稱的值(或值組合)是唯一的。例如,如果嘗試添加具有與現(xiàn)有項(xiàng)目相同的主鍵值的新項(xiàng)目,那么新項(xiàng)目可以替換表格中的現(xiàn)有項(xiàng)目。圖4示出根據(jù)一個(gè)實(shí)施方案的可以存儲(chǔ)在表格中且其中名稱是“imageid”的數(shù)值屬性被指定為主鍵的三個(gè)項(xiàng)目。在這個(gè)實(shí)例中,項(xiàng)目410a包括imageid屬性(其具有值1)和用于至少三個(gè)其它屬性(例如,日期屬性、標(biāo)題屬性和標(biāo)簽屬性)的值。類似地,項(xiàng)目410b包括imageid屬性(其具有值2)和用于至少三個(gè)其它屬性(例如,專輯屬性、分級屬性和標(biāo)簽屬性)的值。在這個(gè)實(shí)例中,項(xiàng)目410c包括imageid屬性(其具有值3)和用于至少三個(gè)其它屬性(例如,日期屬性、價(jià)格屬性和作者屬性)的值。在這個(gè)實(shí)例中,存儲(chǔ)在表格中的項(xiàng)目可以根據(jù)其主鍵值來索引。換句話說,這些項(xiàng)目中的每個(gè)可以單獨(dú)由其主鍵值唯一識(shí)別,且檢索項(xiàng)目(其已由其主鍵值識(shí)別)的操作可以包括檢索項(xiàng)目其它屬性中的一些或所有的值。如上文提及,數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))可以基于主鍵創(chuàng)建索引。索引類型可以取決于表格是否使用簡易主鍵或組合主鍵。例如,數(shù)據(jù)存儲(chǔ)服務(wù)可以將主鍵索引為散列索引或散列和范圍索引,如下文:·hash-a可以是字符串或數(shù)字。簡易主鍵可以具有一個(gè)索引值:散列索引,其可以是字符串或數(shù)字?!ange-a范圍可以是字符串或數(shù)字。范圍可以允許排序表格項(xiàng)目使得數(shù)據(jù)查詢可基于范圍而細(xì)化結(jié)果。組合主鍵可以包括索引的兩個(gè)值:散列索引(有時(shí)候在本文中稱作散列鍵值)和范圍索引(有時(shí)候在本文中稱作范圍鍵值)。簡易主鍵可以足以用于表格數(shù)據(jù)的數(shù)據(jù)收集和不頻繁掃描(例如,使用下文描述的掃描api)。組合主鍵可以允許更精確地組織表格數(shù)據(jù),且可以允許使用下文描述的queryapi以進(jìn)行更有效的數(shù)據(jù)檢索。下列地址表格(表格2)示出使用單個(gè)屬性作為主鍵以唯一地識(shí)別表格中的每個(gè)項(xiàng)目。表格2-使用簡易主鍵(字符串)在這個(gè)實(shí)例中,每個(gè)項(xiàng)目中需要主鍵(稱作userid的屬性)且對于每個(gè)項(xiàng)目來說其類型(“字符串”)是固定的。然而,每個(gè)項(xiàng)目也可以包括額外屬性的任何組合。在一些實(shí)施方案中,數(shù)據(jù)存儲(chǔ)系統(tǒng)可以被配置來確保userid的值對于表格中的每個(gè)項(xiàng)目來說是唯一的。如上文提及,在一些實(shí)施方案中,屬性值不能是空值或空的。在此類實(shí)施方案中,屬性不存在于表格中直到其具有與其相關(guān)聯(lián)的值為止/除非屬性具有與其相關(guān)聯(lián)的值,否則屬性不存在于表格中。下列表格(表格3)指定數(shù)值屬性(在這種情況下,imageid)作為主鍵,通過主鍵可以唯一地識(shí)別表格中的項(xiàng)目:表格3-使用簡易主鍵(數(shù)字)在這個(gè)實(shí)例中,每個(gè)項(xiàng)目中需要主鍵imageid且對于每個(gè)項(xiàng)目來說其類型(“數(shù)字”)是固定的,但是每個(gè)項(xiàng)目可以包括其它屬性的任何組合。如在先前實(shí)例中,在一些實(shí)施方案中,數(shù)據(jù)存儲(chǔ)系統(tǒng)可以被配置來確保imageid的值對于表格中的每個(gè)項(xiàng)目來說是唯一的。如上文提及,在一些實(shí)施方案中,屬性值不能是空值或空的。在此類實(shí)施方案中,屬性不存在于表格中直到其具有與其相關(guān)聯(lián)的值為止/除非屬性具有與其相關(guān)聯(lián)的值,否則屬性不存在于表格中。圖5中的流程圖示出用于創(chuàng)建由數(shù)據(jù)存儲(chǔ)服務(wù)代表存儲(chǔ)服務(wù)客戶端維護(hù)的表格的方法的一個(gè)實(shí)施方案。如510處示出,在這個(gè)實(shí)例中,所述方法可以包括實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)的組件(例如,前端模塊或底層系統(tǒng)的另一組件)接收代表用戶創(chuàng)建表格的服務(wù)請求。所述請求可以指定表格的名稱和表格的簡易或組合主鍵。在一些實(shí)施方案中,所述請求也可以包括針對表格的最終表格大小的估計(jì)和/或工作量(即,通信量)的估計(jì),和/或請求的容量或吞吐量通信量。在一些實(shí)施方案中,這種信息(如果包括在請求中)可以用來確定表格的初始大小和/或表格的分區(qū)的初始數(shù)量。在其它實(shí)施方案中,客戶端或訂戶賬號信息(例如,優(yōu)選)或特定存儲(chǔ)服務(wù)客戶端(例如,特定用戶、訂戶或客戶端應(yīng)用)的歷史數(shù)據(jù)可以用來確定所創(chuàng)建的表格的初始大小和/或分區(qū)數(shù)量。如這個(gè)實(shí)例中示出,所述方法可以包括確定系統(tǒng)中是否已經(jīng)存在請求中指定表格名稱的有效表格(如520)。如果是(示為520的肯定退出),那么所述方法可以包括返回錯(cuò)誤指示(如525)。如果不存在具有指定表格名稱的有效表格(示為520的否定退出),那么所述方法可以包括系統(tǒng)開始在非關(guān)系數(shù)據(jù)存儲(chǔ)裝置(例如,非關(guān)系數(shù)據(jù)庫或其它存儲(chǔ)結(jié)構(gòu))中創(chuàng)建新表格(具有指定表格名稱)(如530)。在一些實(shí)施方案中,可以解析所述請求以確定各種服務(wù)選項(xiàng)。例如,所述請求可以包括一個(gè)或多個(gè)用戶優(yōu)選的指示,諸如優(yōu)選服務(wù)請求吞吐量水平或請求保證的服務(wù)請求吞吐量水平。在一些實(shí)施方案中,存儲(chǔ)在新創(chuàng)建的表格中的數(shù)據(jù)可以包括在創(chuàng)建表格的請求中,而在其它實(shí)施方案中,存儲(chǔ)在表格中的數(shù)據(jù)可以包括在接收到創(chuàng)建表格的請求之后由數(shù)據(jù)存儲(chǔ)系統(tǒng)接收的一個(gè)或多個(gè)服務(wù)請求中。在各種實(shí)施方案中,由數(shù)據(jù)存儲(chǔ)服務(wù)維護(hù)的表格可以不存在預(yù)定大小限制或綱目。在一些實(shí)施方案中,響應(yīng)于(通過包括將存儲(chǔ)在表格中的數(shù)據(jù)的任何數(shù)量的服務(wù)請求)接收將存儲(chǔ)在表格中的數(shù)據(jù),系統(tǒng)可以被配置來確定將存儲(chǔ)在表格中的數(shù)據(jù)量是否太多而不能存儲(chǔ)在系統(tǒng)中的單個(gè)分區(qū)中。例如,在一些實(shí)施方案中,雖然系統(tǒng)可以不強(qiáng)加限制可存儲(chǔ)在表格中的項(xiàng)目數(shù)(和/或大小),但是其可以強(qiáng)加預(yù)定限制于可存儲(chǔ)在非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中的每個(gè)分區(qū)中的項(xiàng)目數(shù)(和/或大小)。在一些實(shí)施方案中,用戶輸入可以指示是否在表格實(shí)施為單個(gè)分區(qū)時(shí)希望存在針對表格的太多數(shù)據(jù)或太多通信量而不能使系統(tǒng)具有合理的性能。如果是(示為540的肯定退出),那么所述方法可以包括系統(tǒng)根據(jù)指定主鍵創(chuàng)建存儲(chǔ)表格數(shù)據(jù)的兩個(gè)或更多個(gè)分區(qū)(如550)。例如,在主鍵是簡易鍵的實(shí)施方案中,可以使用項(xiàng)目中的每個(gè)的主鍵值的散列表來對數(shù)據(jù)分區(qū)。在主鍵是組合鍵的實(shí)施方案中,可以首先由散列鍵組件的散列表對數(shù)據(jù)分區(qū)且然后由范圍鍵組件來對數(shù)據(jù)分區(qū)。例如,如果范圍鍵組件表示數(shù)值識(shí)別符(通過其對具有相同散列鍵組件值的項(xiàng)目排序),那么可以按前n個(gè)項(xiàng)目的范圍鍵組件值的次序?qū)⑺銮皀個(gè)項(xiàng)目置于一個(gè)分區(qū)中(其中n是小于可存儲(chǔ)在單個(gè)分區(qū)中的項(xiàng)目數(shù)的數(shù)字),且可以將接下來的n個(gè)項(xiàng)目置于另一分區(qū)中,以此類推。如果將存儲(chǔ)在表格中的數(shù)據(jù)量或針對表格的通信量對于表格來說并非太多以作為單個(gè)分區(qū)存儲(chǔ)在系統(tǒng)中(示為540的否定退出),那么所述方法可以包括系統(tǒng)創(chuàng)建存儲(chǔ)表格數(shù)據(jù)的單個(gè)分區(qū)(如560)。此后,系統(tǒng)可以被配置來響應(yīng)于工作量和/或系統(tǒng)狀態(tài)的改變和/或響應(yīng)于從用戶/訂戶或客戶端應(yīng)用接收到各種服務(wù)請求而代表客戶端/用戶以編程方式(即,自動(dòng)地)管理非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中的表格(如570)。例如,在一些實(shí)施方案中,系統(tǒng)可以被配置來監(jiān)視系統(tǒng)硬件的狀態(tài)、服務(wù)請求吞吐量的任何改變、任何表格大小增加(或降低)和/或傳入服務(wù)請求的頻率或目標(biāo)的任何改變,且按要求或響應(yīng)于接收自存儲(chǔ)服務(wù)客戶端的顯式服務(wù)請求而自動(dòng)地(例如,以編程方式)擴(kuò)展、再配置和/或再分區(qū)表格。本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))可以提供用于請求將代表存儲(chǔ)服務(wù)客戶端維護(hù)的表格、項(xiàng)目和/或?qū)傩宰鳛槟繕?biāo)的各種操作的應(yīng)用程序接口(api)。在一些實(shí)施方案中,服務(wù)(和/或底層系統(tǒng))可以提供控制平面api和數(shù)據(jù)平面api兩者。例如,數(shù)據(jù)存儲(chǔ)服務(wù)可以提供執(zhí)行以下操作中的任何一個(gè)或所有的api的集合:·創(chuàng)建或刪除表格。·請求某個(gè)表格或多個(gè)表格的當(dāng)前狀態(tài),包括主鍵和創(chuàng)建信息?!㈨?xiàng)目置于(存儲(chǔ)在)表格中?!そ?jīng)由主鍵獲取(檢索)一個(gè)或多個(gè)項(xiàng)目(和/或其屬性)?!谋砀裰袆h除項(xiàng)目?!じ聠蝹€(gè)項(xiàng)目中的屬性?!な褂梅秶饕捅容^運(yùn)算符查詢項(xiàng)目?!呙枵麄€(gè)表格,視情況使用比較運(yùn)算符篩選返回的項(xiàng)目。由數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))提供的控制平面api可以用來操控表格級別的條目,諸如表格和索引。(當(dāng)與數(shù)據(jù)平面api相比時(shí))可以相對較不頻繁地調(diào)用這些api。在一些實(shí)施方案中,由服務(wù)提供的控制平面api可以用來創(chuàng)建表格、刪除表格和/或描述表格。在一些實(shí)施方案中,對表格級別的條目執(zhí)行更新的控制平面api可以調(diào)用異步工作流程以執(zhí)行所請求的操作。(例如,經(jīng)由describetablesapi)請求“描述”信息的方法可以簡單地返回由服務(wù)代表客戶端/用戶維護(hù)的表格的當(dāng)前已知狀態(tài)。由數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))提供的數(shù)據(jù)平面api可以用來執(zhí)行項(xiàng)目級別操作,諸如存儲(chǔ)、刪除、檢索和/或更新項(xiàng)目和/或其屬性,或跨表格中的多個(gè)項(xiàng)目執(zhí)行基于索引的搜索類型操作,諸如查詢和掃描。在不同實(shí)施方案中,由本文中描述的服務(wù)提供的api可以支持以一個(gè)或多個(gè)行業(yè)標(biāo)準(zhǔn)或?qū)S袛?shù)據(jù)交換格式編碼的請求和響應(yīng)參數(shù)。例如,在各種實(shí)施方案中,請求和響應(yīng)可以遵循人類可讀(例如,基于文字的)數(shù)據(jù)互換標(biāo)準(zhǔn)(例如,javascript對象符號或json),或可以使用二進(jìn)制編碼來表示(在一些情況下,其可能比基于文字的表示法更加緊湊)。在各種實(shí)施方案中,系統(tǒng)可以為本文中描述的api的輸入?yún)?shù)中的一個(gè)或多個(gè)供應(yīng)默認(rèn)值(例如,全系統(tǒng)默認(rèn)值、用戶專用默認(rèn)值或賬號專用默認(rèn)值)。如上文提及,由服務(wù)支持的控制平面api可以包括對表格執(zhí)行更新的api(例如,createtableapi和/或deletetableapi)。在各種實(shí)施方案中,這些api可以調(diào)用異步工作流程以執(zhí)行所請求的操作。此外,所述服務(wù)可以支持返回當(dāng)前已知狀態(tài)(例如,describetablesapi)的方法。在一些實(shí)施方案中,通常使用的模型可以使客戶端(例如,使用createtableapi)請求進(jìn)行動(dòng)作,且然后經(jīng)由對應(yīng)描述api輪詢其完成(例如,describetables)。在各種實(shí)施方案中,createtableapi可以用來創(chuàng)建具有指定主索引(即,主鍵)的表格。在一些實(shí)施方案中,響應(yīng)于接收到經(jīng)由這個(gè)api代表存儲(chǔ)服務(wù)客戶端創(chuàng)建表格的請求,所述服務(wù)可以引發(fā)(和/或?qū)嵤┧龇?wù)的底層系統(tǒng)可以調(diào)用)立即返回(即,無需等待完成工作流程)的異步createtable工作流程。在此類實(shí)施方案中,可以隨后通過經(jīng)由describetablesapi核對表格的狀態(tài)來確定工作流程的成功。例如,由所述服務(wù)代表客戶端/用戶管理的每個(gè)表格可以處于以下表格狀態(tài)之一,且可以響應(yīng)于describetables請求而返回每個(gè)表格的狀態(tài)的指示:創(chuàng)建-其中創(chuàng)建表格有效-其中存在表格刪除-其中刪除表格圖6中的流程圖示出用于響應(yīng)于通過網(wǎng)絡(luò)服務(wù)api接收的請求而創(chuàng)建表格的方法的一個(gè)實(shí)施方案。如這個(gè)實(shí)例中示出,所述方法可以包括實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)接收代表用戶創(chuàng)建表格的服務(wù)請求(如610)。所述請求可以包括要?jiǎng)?chuàng)建的表格的名稱且可以為表格指定簡易主鍵或組合鍵。響應(yīng)于接收到所述請求且如果尚不存在具有指定表格名稱的有效表格,那么系統(tǒng)可以生成表格的元數(shù)據(jù)(如620)。根據(jù)一個(gè)實(shí)施方案,圖7中示出且下文詳細(xì)描述表格元數(shù)據(jù)的生成。在創(chuàng)建表格的元數(shù)據(jù)之后,所述方法可以包括系統(tǒng)調(diào)用異步createtable工作流程(例如,系統(tǒng)的組件可以向createtable方法發(fā)出調(diào)用)(如630)。圖8中示出且下文描述這種工作流程的一個(gè)實(shí)施方案。在一些實(shí)施方案中,可以立即(即,在完成createtable工作流程之前,或在一些情況下在createtable工作流程開始創(chuàng)建表格的程序之前)從createtable工作流程返回響應(yīng)。在一些實(shí)施方案中,在調(diào)用createtable工作流程之后,系統(tǒng)可以繼續(xù)進(jìn)行其它工作,而非等待完成createtable工作流程。例如,系統(tǒng)(或其組件)或應(yīng)用(代表用戶)可以被配置來定期或偶爾核對新表格的狀態(tài)以查看其是否處于“有效”狀態(tài)(如640)。在一些實(shí)施方案中,這可能涉及使用本文中描述的describetablesapi發(fā)出服務(wù)請求??梢灾貜?fù)地核對表格的狀態(tài)直到其狀態(tài)為“有效”為止(示為640的否定退出到640的輸入的反饋環(huán)路)。一旦表格狀態(tài)為“有效”,就可以將表格創(chuàng)建程序視為完成(如650)。在一些實(shí)施方案中,createtableapi的輸入?yún)?shù)可以包括tablename(其可以是包括要?jiǎng)?chuàng)建的表格的名稱的字符串)和這個(gè)api的keyschema(其可以描述要?jiǎng)?chuàng)建的表格的主鍵)。在一些實(shí)施方案中,keyschema可以包括描述簡易或組合主鍵的數(shù)組。例如,簡易主鍵可以包括單個(gè)散列鍵,而組合鍵可以包括散列鍵和范圍鍵。在一個(gè)實(shí)施方案中,主鍵的索引類型可以是hash或range,且主鍵的每個(gè)屬性可以包括名稱(其可以是包括屬性的名稱的字符串)、屬性值的數(shù)據(jù)類型(例如,n或s)和屬性值。如先前提及,在不同實(shí)施方案中,createtable請求可以以json請求格式或另一合適的格式提出。以下是創(chuàng)建帶有具有兩個(gè)屬性的組合主索引的表格的請求的實(shí)例:folderid(字符串類型的散列索引)和datecreated(日期的范圍,每個(gè)表示為數(shù)字)。示例性請求格式:在一些實(shí)施方案中,createtableapi的輸出參數(shù)可以包括tablename(例如,包括所創(chuàng)建的表格的名稱的字符串)、tablestatus(例如,具有值“creating”的字符串)、keyschema(例如,描述主鍵的數(shù)組,主鍵可以是簡易散列鍵或包括范圍)和datecreated(其可以是指示創(chuàng)建表格時(shí)的日期和/或時(shí)間的字符串或數(shù)字)。如先前提及,在不同實(shí)施方案中,對createtable請求的響應(yīng)可以以json響應(yīng)格式或另一合適的格式提出。在一些實(shí)施方案中,如果嘗試創(chuàng)建已經(jīng)存在的表格(例如,具有相同名稱、主鍵和/或鍵綱目的表格),那么可以由所述服務(wù)返回錯(cuò)誤狀況(例如,resourceinuse錯(cuò)誤狀況)的指示。以下是接收自數(shù)據(jù)存儲(chǔ)服務(wù)且對應(yīng)于createtable請求的響應(yīng)的實(shí)例。示例性響應(yīng)格式:如上文提及,在一些實(shí)施方案中,響應(yīng)于接收到(例如,使用createtableapi)代表存儲(chǔ)服務(wù)客戶端/用戶創(chuàng)建表格的請求,數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))可以生成與表格相關(guān)聯(lián)的元數(shù)據(jù)并調(diào)用異步createtable工作流程以創(chuàng)建表格。在一些實(shí)施方案中,可以存在存儲(chǔ)和/或維護(hù)與表格創(chuàng)建相關(guān)聯(lián)的元數(shù)據(jù)的多個(gè)表格,且可以在創(chuàng)建新表格時(shí)更新這些表格中的一個(gè)或多個(gè)。例如,在各種實(shí)施方案中,系統(tǒng)可以維護(hù)下列表格中的任何一個(gè)或所有:·tables表格:這個(gè)表格可以將每個(gè)表格的清單和表格的當(dāng)前狀態(tài)(例如,創(chuàng)建、有效、刪除等)維護(hù)在系統(tǒng)中。在一些實(shí)施方案中,這個(gè)表格的主鍵可以包括subscriberid屬性(其可以用來識(shí)別將代表其維護(hù)表格的用戶)和tablename屬性(其可以指定將創(chuàng)建的表格的名稱)。當(dāng)為新表格創(chuàng)建條目時(shí),可以將表格狀態(tài)設(shè)置成“創(chuàng)建掛起(creationpending)”,其可以指示已接受創(chuàng)建表格,但是仍未調(diào)用工作流程來創(chuàng)建表格?!び啈舯砀瘢哼@個(gè)表格可以維護(hù)代表單個(gè)客戶端(即,用戶/訂戶或客戶端應(yīng)用)維護(hù)的表格的總數(shù)的計(jì)數(shù),且也可以指示所述表格中有多少表格處于狀態(tài)有效、創(chuàng)建和/或刪除中的每個(gè)中。在一些實(shí)施方案中,如上所述,這個(gè)表格的主鍵可以包括subscriberid屬性。在一些實(shí)施方案中,可以將這個(gè)表格視為tables表格的次級索引??梢皂憫?yīng)于createtable工作流程的調(diào)用而使表格的總數(shù)的計(jì)數(shù)和/或處于創(chuàng)建狀態(tài)的表格數(shù)量的計(jì)數(shù)遞增。·分區(qū)表格:這個(gè)表格可以維護(hù)特定表格的所有分區(qū)的清單,且可以指示其位置。在一些實(shí)施方案中,這個(gè)表格的主鍵可以包括tableid屬性和partitionid屬性?!す?jié)點(diǎn)表格:這個(gè)表格可以維護(hù)節(jié)點(diǎn)的清單,且可以指示托管在節(jié)點(diǎn)中的每個(gè)上的分區(qū)。在一些實(shí)施方案中,這個(gè)表格的主鍵可以包括nodeid屬性。在一些實(shí)施方案中,可以將這個(gè)表格視為分區(qū)表格的次級索引。圖7中的流程圖示出用于生成所創(chuàng)建表格的表格元數(shù)據(jù)的方法的一個(gè)實(shí)施方案。如上所述,這種方法可以由實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)響應(yīng)于接收到代表用戶創(chuàng)建表格的請求而調(diào)用,其中所述請求指定表格名稱和簡易或組合主鍵。表格名稱對于給定用戶或整個(gè)給定訂戶賬號來說可以是唯一的。如這個(gè)實(shí)例中示出,一旦調(diào)用所述方法(如710),其就可以包括為表格創(chuàng)建唯一表格識(shí)別符(如720)。例如,系統(tǒng)的組件可以被配置來創(chuàng)建在整個(gè)系統(tǒng)上唯一的表格識(shí)別符。如這個(gè)實(shí)例中示出,所述方法可以包括決定將要?jiǎng)?chuàng)建的分區(qū)的數(shù)量和創(chuàng)建對應(yīng)的分區(qū)識(shí)別符(如730)。例如,系統(tǒng)的組件可以被配置來應(yīng)用(例如,用戶/訂戶或客戶端應(yīng)用的)歷史使用數(shù)據(jù)、由用戶/訂戶提供的未來使用的評估和/或其它準(zhǔn)則以確定表格的分區(qū)的適當(dāng)數(shù)量并為每個(gè)分區(qū)創(chuàng)建分區(qū)識(shí)別符,分區(qū)識(shí)別符在整個(gè)系統(tǒng)上唯一的。在一些實(shí)施方案中,所述方法可以包括在(諸如上文描述的)tables表格中為新表格創(chuàng)建條目和將新表格的狀態(tài)設(shè)置成“創(chuàng)建掛起”(如740)。所述方法也可以包括使維護(hù)在系統(tǒng)中的表格的總數(shù)的計(jì)數(shù)和/或系統(tǒng)中處于創(chuàng)建掛起狀態(tài)的表格數(shù)量的計(jì)數(shù)遞增(如750)。如這個(gè)實(shí)例中示出,一旦為表格生成元數(shù)據(jù)且更新一個(gè)或多個(gè)元數(shù)據(jù)表格以反映新表格的掛起創(chuàng)建,所述方法就可以包括調(diào)用createtable工作流程(如760)。如圖8的810處示出,在一些實(shí)施方案中,可以將表格名稱、表格識(shí)別符和/或分區(qū)識(shí)別符作為所述程序的輸入全部傳遞到createtable工作流程。注意,這(和/或本文中描述的任何其它服務(wù)請求)可以包括識(shí)別特定訂戶的輸入?yún)?shù),諸如accountid參數(shù)。在此類實(shí)施方案中,可以將這個(gè)輸入?yún)?shù)的值傳遞到響應(yīng)于接收到服務(wù)請求而調(diào)用的任何工作流程(例如,createtable工作流程)。注意,在其它實(shí)施方案中,可以不同于上述實(shí)例來組織由數(shù)據(jù)存儲(chǔ)服務(wù)代表一個(gè)或多個(gè)存儲(chǔ)系統(tǒng)客戶端維護(hù)的表格的元數(shù)據(jù)。例如,在其它實(shí)施方案中,系統(tǒng)可以采用更多、更少或不同元數(shù)據(jù)表格,與這個(gè)實(shí)例相比元數(shù)據(jù)表格可以存儲(chǔ)更多或更少元數(shù)據(jù)和/或與這個(gè)實(shí)例中描述的類型的元數(shù)據(jù)相比元數(shù)據(jù)表格可以存儲(chǔ)不同類型的不同元數(shù)據(jù)。也應(yīng)注意,在一些實(shí)施方案中,當(dāng)接收到創(chuàng)建表格的請求時(shí)可以將所述請求放在隊(duì)列中且在某個(gè)時(shí)間段之前(例如,當(dāng)調(diào)用createtable工作流程以執(zhí)行表格創(chuàng)建時(shí))可以不生成或存儲(chǔ)所述表格的元數(shù)據(jù)。如先前提及,被配置來實(shí)施本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)可以依賴于使用簡易工作流程服務(wù)執(zhí)行的一個(gè)或多個(gè)工作流程。在一些實(shí)施方案中,createtable工作流程可以為新表格分配一個(gè)或多個(gè)分區(qū)、為分區(qū)中的每個(gè)創(chuàng)建兩個(gè)或更多個(gè)副本以及響應(yīng)于創(chuàng)建表格而更新適當(dāng)?shù)脑獢?shù)據(jù)。圖8中的流程圖示出這個(gè)工作流程的一個(gè)實(shí)施方案。在一些實(shí)施方案中,所述工作流程可能旨在自我修復(fù)。在此類實(shí)施方案中,如果程序在完成之前失敗,那么可以一次或多次再運(yùn)行整個(gè)工作流程直到程序成功為止。例如,可以響應(yīng)于故障而一次又一次重試圖8中示出的操作中的每個(gè)。注意在這個(gè)實(shí)例中,假設(shè)僅在確定不存在具有指定表格名稱的有效表格之后方才調(diào)用所述工作流程。如這個(gè)實(shí)例中示出,所述工作流程可以包括將表格的狀態(tài)更新成“創(chuàng)建”以反映工作流程目前工作以創(chuàng)建表格的事實(shí)(如820)。在一些實(shí)施方案中,表格狀態(tài)可以自動(dòng)更新成“創(chuàng)建”。在此類實(shí)施方案中,如果多個(gè)工作流程嘗試執(zhí)行這個(gè)相同的表格創(chuàng)建操作,那么只有一個(gè)工作流程將會(huì)成功,因此在這種情況下允許系統(tǒng)避免出現(xiàn)競爭狀況。所述工作流程也可以包括確定是否存在包括指定用于新表格的表格名稱的任何舊的分區(qū)(如830)。例如,如果過去已嘗試指定這個(gè)表格名稱的創(chuàng)建操作(且所述創(chuàng)建操作失敗),那么系統(tǒng)中可能仍保留應(yīng)在繼續(xù)進(jìn)行createtable工作流程的剩余部分之前刪除的殘余分區(qū)。在一些實(shí)施方案中,所述工作流程可以包括查詢與這個(gè)表格名稱相關(guān)聯(lián)的任何分區(qū)的元數(shù)據(jù)(例如,tables表格)。例如,在系統(tǒng)中可能存在創(chuàng)建具有這個(gè)表格名稱的表格的先前失敗嘗試的殘余物,包括一個(gè)或多個(gè)元數(shù)據(jù)表格中的表格的元數(shù)據(jù)。對于發(fā)現(xiàn)的每個(gè)分區(qū),可能存在多個(gè)副本,且可以從上面駐留這些副本的存儲(chǔ)節(jié)點(diǎn)物理地刪除這些副本中的每個(gè)(如835)。在發(fā)現(xiàn)不存在與指定表格名稱相關(guān)聯(lián)的分區(qū)時(shí)(例如,如果先前未嘗試進(jìn)行這個(gè)表格創(chuàng)建操作且這個(gè)表格創(chuàng)建操作失敗)(示為830的否定退出)或一旦刪除此類殘余物,所述工作流程就可以為新表格創(chuàng)建一個(gè)或多個(gè)分區(qū)(如840)。如先前描述,在一些實(shí)施方案中,所創(chuàng)建的分區(qū)數(shù)量可以基于用戶輸入、歷史數(shù)據(jù)和/或全系統(tǒng)默認(rèn)值、客戶端專用默認(rèn)值或應(yīng)用專用默認(rèn)值。如圖8中示出,為新表格創(chuàng)建分區(qū)可以包括選擇上面存儲(chǔ)分區(qū)中的每個(gè)的多個(gè)副本的節(jié)點(diǎn)、創(chuàng)建多個(gè)副本和更新分區(qū)元數(shù)據(jù)(例如,更新分區(qū)表格使其包括新創(chuàng)建的副本并指示其位置)。在一些實(shí)施方案中,選擇上面存儲(chǔ)副本的節(jié)點(diǎn)可以包括查詢元數(shù)據(jù)以找到上面可存儲(chǔ)副本的健全節(jié)點(diǎn)和使用各種合適的分配算法中的任何一種將副本分配到健全節(jié)點(diǎn)中的各個(gè)節(jié)點(diǎn)。在一些實(shí)施方案中,系統(tǒng)可以支持兩種或更多種靈活和/或可擴(kuò)充分配算法,包括(但不限于)選擇具有最可用的存儲(chǔ)空間的節(jié)點(diǎn)、選擇經(jīng)歷工作量最小的節(jié)點(diǎn)(例如,接收最少服務(wù)請求的節(jié)點(diǎn))或隨機(jī)選擇節(jié)點(diǎn)(這可以最小化所有新分區(qū)通向負(fù)載最小的節(jié)點(diǎn)的羊群效應(yīng))。如圖8中所示,createtable工作流程可以包括(例如,在節(jié)點(diǎn)表格中)為新創(chuàng)建的表格更新節(jié)點(diǎn)相關(guān)的元數(shù)據(jù)(如850)。例如,所示工作流程可以包括從分區(qū)表格(其在840中更新)中讀取新創(chuàng)建的副本的所有節(jié)點(diǎn)位置和將新創(chuàng)建的副本中的每個(gè)添加到節(jié)點(diǎn)表格的適當(dāng)條目。一旦創(chuàng)建表格的分區(qū)(和其副本)且更新適當(dāng)元數(shù)據(jù)以反映新表格的創(chuàng)建,所述工作流程就可以包括將新創(chuàng)建的表格的狀態(tài)更新成“有效”(如860)。在一些實(shí)施方案中,將新創(chuàng)建的表格的狀態(tài)更新成“有效”可以包括使上述訂戶表格中處于創(chuàng)建狀態(tài)的表格數(shù)量的計(jì)數(shù)遞減。如上文提及,在一些實(shí)施方案中,如果圖8中示出的操作中的任何一個(gè)失敗,那么它們可以重試多達(dá)預(yù)定最大嘗試次數(shù)。例如,在一個(gè)實(shí)施方案中,未成功的任何createtable工作流程步驟可以重試多達(dá)10次,且可以在多次嘗試之間采用指數(shù)回退。在一些實(shí)施方案中,如果所述工作流程步驟在最大嘗試次數(shù)之后的確未成功完成,那么可以將所創(chuàng)建的表格的狀態(tài)重設(shè)成創(chuàng)建掛起以指示沒有任何工作流程當(dāng)前工作于創(chuàng)建該表格。在這樣的情況下,系統(tǒng)可以執(zhí)行或可以不執(zhí)行未成功嘗試期間創(chuàng)建的任何殘留副本的清理。例如,在一些實(shí)施方案中,可以將這種清理留給后續(xù)createtable工作流程。在一些實(shí)施方案中,清掃器工作流程可以定期(例如,每隔30分鐘一次)運(yùn)行,以及可以掃描tables表格以確定是否有任何表格當(dāng)前處于狀態(tài)創(chuàng)建掛起中。如果有且如果從清掃器工作流程上一次掃描tables表格以來仍未更新這個(gè)表格的狀態(tài),那么清掃器工作流程可以假設(shè)這個(gè)表格的創(chuàng)建失敗且可以嘗試調(diào)用新的createtable工作流程來創(chuàng)建表格。createtableapi的使用可以通過下列實(shí)例(即,通過下文的偽代碼)來示出。在第一實(shí)例中,請求創(chuàng)建名稱是“商品”的表格,其中主鍵是散列值“id”且其中表格中的每個(gè)id值必須是數(shù)字:在第二實(shí)例中,請求創(chuàng)建名稱是“商品”的表格,其中主鍵是散列和范圍鍵(即,組合鍵)。在這個(gè)實(shí)例中,主鍵包括散列值“id”(其中表格中的每個(gè)id值必須是數(shù)字),且也包括添加到“歌曲”的主鍵的范圍(其中每首歌曲是字符串)。在這個(gè)實(shí)例中,在請求創(chuàng)建表格之后,使用createtableapi重復(fù)地調(diào)用describetablesapi以輪詢服務(wù)器直到創(chuàng)建新的表格且新的表格有效為止。//輪詢并休眠直到表格準(zhǔn)備就緒。在一些實(shí)施方案中,存儲(chǔ)服務(wù)客戶端(例如,用戶、訂戶或訪問服務(wù)的客戶端應(yīng)用)可以能夠創(chuàng)建多個(gè)表格。在一些這樣的實(shí)施方案中,系統(tǒng)可以強(qiáng)加預(yù)定限制于客戶端可創(chuàng)建的表格數(shù)量。這種限制可以保護(hù)系統(tǒng)和/或客戶端/用戶使得失控程序不能無意地創(chuàng)建大量表格的可能性。在采用這種限制的一些實(shí)施方案中,可以由系統(tǒng)管理員或其它特權(quán)用戶(例如,經(jīng)由如上所述的管理主控臺(tái))撤銷所述限制。在一些實(shí)施方案中,所有表格可以由根用戶(例如,表格擁有者或其它特權(quán)客戶)擁有,且這個(gè)根用戶可以能夠?qū)pi級別許可指派到各種表格以允許和/或約束其它用戶(例如,子用戶)對所述表格進(jìn)行的操作。例如,在一些實(shí)施方案中,個(gè)別用戶可以由根用戶識(shí)別符和子用戶識(shí)別符的組合來定義如下:user={root|sub-user}。在一些實(shí)施方案中,除了表格級以外還可以以項(xiàng)目級和/或?qū)傩约壎x訪問控制篩選器,或可以以項(xiàng)目級和/或?qū)傩约壌嬉员砀窦壎x訪問控制篩選器。在各種實(shí)施方案中,deletetableapi可以用來刪除表格和表格的所有索引。在一些實(shí)施方案中,如果是deletetableapi的目標(biāo)的表格在接收到代表存儲(chǔ)服務(wù)客戶端刪除所述表格的請求時(shí)處于創(chuàng)建狀態(tài),那么服務(wù)可以返回錯(cuò)誤的指示(例如,400“resourceinuse”錯(cuò)誤指示)。如果表格在接收到所述請求時(shí)處于有效狀態(tài),那么服務(wù)可以引發(fā)(和/或?qū)嵤┧龇?wù)的底層系統(tǒng)可以調(diào)用)立即返回的異步deletetable工作流程(即,無需等待完成所述工作流程)。在此類實(shí)施方案中,可以隨后通過經(jīng)由describetablesapi核對表格的狀態(tài)來確定工作流程的成功。例如,如果響應(yīng)于describetables請求而返回的表格的狀態(tài)的指示是“刪除”,那么可以進(jìn)行刪除操作。在一些實(shí)施方案中,在這種情況下將不會(huì)返回錯(cuò)誤指示。一旦完成刪除程序,對describetables請求的響應(yīng)就可以不再包括已刪除表格的條目。在一些實(shí)施方案中,deletetableapi的輸入?yún)?shù)可以包括tablename(其可以是包括要?jiǎng)h除的表格的名稱的字符串)。在一些實(shí)施方案中,deletetableapi的輸出參數(shù)可以包括tablename(例如,包括被刪除的表格的名稱的字符串)、tablestatus(例如,具有值“deleting”的字符串)、keyschema(例如,描述主鍵的數(shù)組)和datecreated(其可以是指示創(chuàng)建表格時(shí)的日期和/或時(shí)間的字符串或數(shù)字)。如上所述,在一些實(shí)施方案中,keyschema可以包括描述簡易或組合主鍵的數(shù)組。例如,簡易主鍵可以包括單個(gè)散列鍵,而組合鍵可以包括散列鍵和范圍鍵。在一個(gè)實(shí)施方案中,主鍵的索引類型可以是hash或range,且主鍵的每個(gè)屬性可以包括名稱(其可以是包括屬性的名稱的字符串)、屬性值的數(shù)據(jù)類型(例如,n或s)和屬性值。如先前提及,在不同實(shí)施方案中,deletetable請求和/或響應(yīng)可以以json請求/響應(yīng)格式或另一合適的格式提出。根據(jù)一個(gè)實(shí)施方案,下文發(fā)現(xiàn)對數(shù)據(jù)存儲(chǔ)服務(wù)的請求和接收自數(shù)據(jù)存儲(chǔ)服務(wù)且對應(yīng)于deletetableapi的響應(yīng)的實(shí)例。示例性請求格式:示例性響應(yīng)格式:在各種實(shí)施方案中,describetablesapi可以用來枚舉(例如,列舉)關(guān)于屬于給定存儲(chǔ)服務(wù)客戶端的表格的信息。例如,響應(yīng)于接收代表用戶描述屬于所述用戶的表格的請求,數(shù)據(jù)存儲(chǔ)系統(tǒng)可以返回請求中指定的任何表格或(如果沒有指定表格)屬于所述用戶的所有表格的主鍵信息和/或狀態(tài)。在一些實(shí)施方案中,describetablesapi的輸入?yún)?shù)可以包括tablenames參數(shù)(其可以是包括要描述的表格的名稱的字符串的清單)和/或lasttablename參數(shù)(其可以是包括在超過對可包括在響應(yīng)中的表格數(shù)量的預(yù)定限制時(shí)繼續(xù)列舉其表格信息的表格的名稱的字符串)。例如,在一些實(shí)施方案中,如果要返回的表格數(shù)量超過預(yù)定限制,那么可以提前終止查詢(即,不描述請求作為目標(biāo)的所有表格)且可以返回由查詢考慮的最后表格的名稱。在此類實(shí)施方案中,這個(gè)最后表格的名稱隨后可以用來繼續(xù)從所述點(diǎn)向上查詢。在一些實(shí)施方案中,如果tablenames參數(shù)是空的(或未用其他方式指定),那么可以在對describetables請求的一個(gè)或多個(gè)響應(yīng)中描述屬于用戶的所有表格。在一些實(shí)施方案中,describetablesapi的輸出參數(shù)可以包括tables參數(shù)(其可以包括給定用戶擁有的表格的清單和關(guān)于所述表格中的每個(gè)的信息)和/或lasttablename參數(shù)(其可以指示返回關(guān)于其信息的最后表格的名稱(如果表格的數(shù)量超過關(guān)于可響應(yīng)于單個(gè)describetables調(diào)用而返回其信息的表格的最大數(shù)量))。在一些實(shí)施方案中,對于響應(yīng)中列舉的每個(gè)表格,可以包括下列信息中的任何一個(gè)或所有:tablename(例如,包括表格的名稱的字符串)、tablestatus(例如,具有值“creating”、“active”或“deleting”的字符串)、keyschema(例如,描述主鍵的數(shù)組)和datecreated(其可以是指示創(chuàng)建表格時(shí)的日期和/或時(shí)間的字符串或數(shù)字)。如上所述,在一些實(shí)施方案中,keyschema可以包括描述簡易或組合主鍵的數(shù)組。例如,簡易主鍵可以包括單個(gè)散列鍵,而組合鍵可以包括散列鍵和范圍鍵。在一個(gè)實(shí)施方案中,主鍵的索引類型可以是hash或range,且主鍵的每個(gè)屬性可以包括名稱(其可以是包括屬性的名稱的字符串)、屬性值的數(shù)據(jù)類型(例如,n或s)和屬性值。在一些實(shí)施方案中,如果不存在describetables請求中指定的表格中的一個(gè)或多個(gè),那么可以響應(yīng)于請求而返回錯(cuò)誤指示(例如,400“resourcenotfound”錯(cuò)誤指示)。正如由數(shù)據(jù)存儲(chǔ)服務(wù)提供的其它api,在不同實(shí)施方案中,describetables請求和/或響應(yīng)可以以json請求/響應(yīng)格式或另一合適的格式提出。根據(jù)一個(gè)實(shí)施方案,下文發(fā)現(xiàn)對數(shù)據(jù)存儲(chǔ)服務(wù)的請求和接收自數(shù)據(jù)存儲(chǔ)服務(wù)且對應(yīng)于describetablesapi的響應(yīng)的實(shí)例。示例性請求格式:示例性響應(yīng)格式:如上文提及,本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))可以提供用于執(zhí)行項(xiàng)目級操作的各種數(shù)據(jù)平面api(諸如putitemapi、getitemapi、deleteitemapi和/或updateitemapi)和用于跨表格中的多個(gè)項(xiàng)目執(zhí)行一個(gè)或多個(gè)基于索引的尋求/遍歷操作的各種數(shù)據(jù)平面api(諸如queryapi和/或scanapi)。在一些實(shí)施方案中,putitemapi可以用來將新的(單個(gè))項(xiàng)目插入到表格中。在一些實(shí)施方案中,這個(gè)api可以用來執(zhí)行條件放置操作。例如,如果表格中尚不存在項(xiàng)目(根據(jù)主鍵的指定值),那么這個(gè)api可以用來將項(xiàng)目插入到所述表格中,或如果所述項(xiàng)目具有某些屬性值(例如,指定主鍵),那么所述項(xiàng)目可以用來替換表格中的單個(gè)現(xiàn)有項(xiàng)目。更具體地說,在一些實(shí)施方案中,這個(gè)api可以用來用新的屬性完全替換現(xiàn)有項(xiàng)目的(除了主鍵以外的)所有屬性以創(chuàng)建“新”項(xiàng)目。在此類實(shí)施方案中,數(shù)據(jù)存儲(chǔ)系統(tǒng)可以保證自動(dòng)地執(zhí)行這個(gè)替換操作。換句話說,系統(tǒng)可以用保證僅用其所有新屬性或其所有先前屬性就可觀察到項(xiàng)目而在過渡狀態(tài)中(例如,先前屬性和新屬性混合)無法觀察所述項(xiàng)目的方式來執(zhí)行替換操作。在一些實(shí)施方案中,如果沒有指定條件放置操作,那么putitemapi可以是冪等api。換句話說,即使以相同輸入?yún)?shù)值多次調(diào)用putitemapi,使用putitemapi的非條件形式作出的請求也可以只將指定新項(xiàng)目精確地插入到表格中一次。在一些實(shí)施方案中,putitemapi的輸入?yún)?shù)可以包括tablename(其可以是包括要插入或替換項(xiàng)目的表格的名稱的字符串)、item參數(shù)(其可以將一個(gè)或多個(gè)屬性名稱映射到各自屬性值)、expected參數(shù)(其可以為條件放置指定屬性名稱到各自屬性值的映射)和/或returnvalues參數(shù)(其可以是指示(如果有)應(yīng)將哪些值作為操作的結(jié)果(例如,“none”、“all_old”或“all_new“)返回的字符串)。在一些實(shí)施方案中,如果指定returnvalues參數(shù)值“none”,那么這個(gè)api可以不返回值。如果指定returnvalues參數(shù)值“all_old”,那么這個(gè)api可以返回由putitem操作重寫的項(xiàng)目的先前內(nèi)容。如果指定returnvalues參數(shù)值“all_new“,那么這個(gè)api可以在putitem操作之后返回所述項(xiàng)目的內(nèi)容。注意在一些實(shí)施方案中,包括在item參數(shù)中的映射必須包括如定義用于指定表格的主鍵屬性。在一些實(shí)施方案中,包括在expected參數(shù)中的每個(gè)屬性可以包括expectedattributevalue(其可以是具有值“exists”或“value”的字符串)、attributevalue(其可以指示用于條件評估的屬性的值或可以具有空白或空值)和/或exists參數(shù)(其可以指示要評估的條件是是否當(dāng)前為現(xiàn)有項(xiàng)目指定包括在expected參數(shù)中的屬性)。在這個(gè)實(shí)例中,如果將expectedattributevalue設(shè)置成“value”,那么必須為attributevalue供應(yīng)值,而如果將expectedattributevalue設(shè)置成“exists”,那么attributevalue應(yīng)是空值或空白的。如果不滿足請求中經(jīng)由putitemapi指定的條件(例如,如果一個(gè)或多個(gè)屬性的期望值不匹配存儲(chǔ)在表格中的值),那么可以由數(shù)據(jù)存儲(chǔ)系統(tǒng)返回錯(cuò)誤指示(例如,conditionalcheckfailed)。在不同實(shí)施方案中,putitem請求可以以json請求格式或另一合適的格式提出。以下是僅在項(xiàng)目尚不包括填充“標(biāo)簽”字段的條件下將所述項(xiàng)目存儲(chǔ)在表格中的putitem請求的實(shí)例。本質(zhì)上,這個(gè)實(shí)例示出具有put-if-absent語義的放置操作。示例性請求格式:在一些實(shí)施方案中,putitemapi的輸出參數(shù)可以包括屬性參數(shù)(其可以將一個(gè)或多個(gè)屬性名稱映射到其各自值)。在上述實(shí)例中,僅當(dāng)輸入?yún)?shù)returnvalues并非“none”時(shí)才可以返回這個(gè)映射。以下是接收自數(shù)據(jù)存儲(chǔ)服務(wù)且對應(yīng)于其中將returnvalues指定為"all_old"的putitem請求的響應(yīng)的實(shí)例。示例性響應(yīng)格式:putitemapi的使用可以通過下列實(shí)例(即,通過下文的偽代碼)來進(jìn)一步示出。在第一實(shí)例中,請求將主鍵是散列值“id”的新項(xiàng)目添加到名稱是“my-table2”的表格。在這個(gè)實(shí)例中,項(xiàng)目包括id值(是數(shù)字)和額外屬性類別、子類別、顏色和大小(其中的每個(gè)指定一個(gè)或多個(gè)字符串)的值。在第二實(shí)例中,請求使用putitemapi替換現(xiàn)有項(xiàng)目。在這個(gè)實(shí)例中,請求用具有新屬性的項(xiàng)目替換現(xiàn)有項(xiàng)目(具有主鍵值id=1的項(xiàng)目)。注意,通過將returnvalues參數(shù)設(shè)置成“all_old“,這個(gè)請求指定應(yīng)返回項(xiàng)目的舊屬性。在各種實(shí)施方案中,deleteitemapi可以用來刪除表格中的單個(gè)項(xiàng)目,其中項(xiàng)目是由其主鍵識(shí)別。在一些實(shí)施方案中,這個(gè)api可以用來執(zhí)行條件刪除操作。例如,如果項(xiàng)目存在或如果項(xiàng)目具有某些屬性值(例如,除了指定主鍵以外的特定屬性值),那么這個(gè)api可以用來刪除所述項(xiàng)目。在一些實(shí)施方案中,如果未指定條件放置操作,那么deleteitemapi可以是冪等api。換句話說,即使以相同輸入?yún)?shù)值多次調(diào)用deleteitemapi,使用deleteitemapi的非條件形式作出的請求也可以只能造成系統(tǒng)精確地刪除表格中的指定新項(xiàng)目一次。在這些和其它實(shí)施方案中,嘗試刪除不存在項(xiàng)目可能不會(huì)造成錯(cuò)誤狀況,且可能不會(huì)造成返回錯(cuò)誤指示。在一些實(shí)施方案中,deleteitemapi的輸入?yún)?shù)可以包括tablename(其可以是包括要從其中刪除項(xiàng)目的表格的名稱的字符串)、key(其可以指定識(shí)別要?jiǎng)h除的項(xiàng)目的簡易/單個(gè)或組合主鍵)、expected參數(shù)(其可以為條件刪除指定屬性名稱到各自屬性值的映射)和/或returnvalues(其可以是指示(如果有)應(yīng)將哪些值作為操作的結(jié)果(例如,“none”、“all_old”)返回的字符串)。在一些實(shí)施方案中,如果指定returnvalues參數(shù)值“none”,那么這個(gè)api可以不返回值。如果指定returnvalues參數(shù)值“all_old”,那么這個(gè)api可以返回由這個(gè)操作刪除的項(xiàng)目的內(nèi)容。例如,當(dāng)指定“all_old”時(shí),這個(gè)api的輸出參數(shù)可以包括attributes參數(shù)(其可以包括已刪除項(xiàng)目的所有屬性的屬性名稱與其各自值之間的映射)。在一些實(shí)施方案中,包括在expected參數(shù)中的每個(gè)屬性可以包括expectedattributevalue(其可以是具有值“exists”或“value”的字符串)、attributevalue(其可以指示屬性的值或可以具有空白或空值)和/或exists參數(shù)(其可以指示要評估的條件是是否當(dāng)前為現(xiàn)有項(xiàng)目指定包括在expected參數(shù)中的屬性)。如果不滿足請求中經(jīng)由deleteitemapi指定的條件(例如,如果一個(gè)或多個(gè)屬性的期望值不匹配存儲(chǔ)在表格中的值),那么可以由數(shù)據(jù)存儲(chǔ)系統(tǒng)返回錯(cuò)誤指示(例如,conditionalcheckfailed)。在一些實(shí)施方案中,在不同實(shí)施方案中,deleteitem請求和/或響應(yīng)可以以json請求/響應(yīng)格式或另一合適的格式呈現(xiàn)。根據(jù)一個(gè)實(shí)施方案,下文發(fā)現(xiàn)刪除項(xiàng)目的請求和接收自數(shù)據(jù)存儲(chǔ)服務(wù)且對應(yīng)于deleteitemapi的響應(yīng)的實(shí)例。示例性請求格式:示例性響應(yīng)格式:注意在上文示出的實(shí)例中,所述請求未指定returnvalues參數(shù)值,但是返回舊的屬性值。這示出returnvalues參數(shù)的默認(rèn)值是"all_old"的實(shí)施方案。在其它實(shí)施方案中,這個(gè)參數(shù)的默認(rèn)值可以是不同值(例如,"all_new"或"none"),或這個(gè)參數(shù)可以沒有默認(rèn)值(即,其可以是強(qiáng)制輸入?yún)?shù))。在各種實(shí)施方案中,getitemsapi可以用來就一個(gè)或多個(gè)項(xiàng)目的給定主鍵而檢索所述一個(gè)或多個(gè)項(xiàng)目(即,返回所述項(xiàng)目的一個(gè)或多個(gè)屬性)。在一些實(shí)施方案中,可響應(yīng)于單個(gè)getitems請求而檢索的項(xiàng)目數(shù)可能受到限制,和/或所檢索的項(xiàng)目必須全部存儲(chǔ)在相同表格中。例如,在一個(gè)實(shí)施方案中,可以響應(yīng)于單個(gè)getitems請求而返回最大為8個(gè)項(xiàng)目的屬性。在一些實(shí)施方案中,可以從表格中并行檢索多個(gè)項(xiàng)目,這可以最小化等待時(shí)間。在各種實(shí)施方案中,數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))可以支持投影和/或一致讀取(未受到等待時(shí)間懲罰)。在一些實(shí)施方案中,系統(tǒng)可以默認(rèn)支持最終一致性模型,這可以造成服務(wù)請求的吞吐量較高。在以單個(gè)getitems請求來請求多個(gè)項(xiàng)目的一些實(shí)施方案中,將不會(huì)返回目標(biāo)表格中不存在的項(xiàng)目。在這種情況下,可以返回或可以不返回任何錯(cuò)誤消息以指示不返回所請求項(xiàng)目中的一個(gè)或多個(gè)。在一些實(shí)施方案中,getitemsapi的輸入?yún)?shù)可以包括tablename(其可以是包括要從其中刪除項(xiàng)目的表格的名稱的字符串)、keys參數(shù)(其可以指定識(shí)別要檢索的項(xiàng)目的簡易/單個(gè)或組合主鍵的清單)、attributestoget參數(shù)(其可以是作為字符串的屬性名稱的數(shù)組)和/或consistentread參數(shù)(其可以是指示將是否發(fā)出一致讀取的布爾值)。在一些實(shí)施方案中,如果未指定屬性名稱,那么可以返回定義用于所識(shí)別項(xiàng)目的所有屬性值。在一些實(shí)施方案中,如果未發(fā)現(xiàn)指定屬性中的任何一個(gè)的值,那么結(jié)果中將不會(huì)出現(xiàn)對應(yīng)屬性名稱。在一些實(shí)施方案中,如果將consistentread參數(shù)設(shè)置成真,那么將發(fā)出一致讀取操作。否則,將執(zhí)行最終一致讀取操作。注意在一些實(shí)施方案中,嚴(yán)格一致讀取(例如,對于所述讀取consistentread參數(shù)的值是真)可能針對給定副本組的主副本,而經(jīng)執(zhí)行具有最終一致性的讀取可能針對給定副本組的副本中的任何一個(gè)。如先前提及,在一些實(shí)施方案中,可響應(yīng)于單個(gè)getitems請求而檢索的項(xiàng)目數(shù)可以限于預(yù)定數(shù)量。getitemsapi的輸出參數(shù)可以包括items參數(shù),其可以是項(xiàng)目的數(shù)組,項(xiàng)目中的每個(gè)包括所請求屬性和其值的映射(如果為項(xiàng)目指定任何一個(gè),即,非空)。注意在一些實(shí)施方案中,可以不以任何特定方式排序數(shù)組中的項(xiàng)目。在此類實(shí)施方案中,所請求屬性的清單中包括主鍵可以提供一種識(shí)別對應(yīng)于每個(gè)檢索項(xiàng)目的屬性和/或確定所請求項(xiàng)目中的哪一個(gè)被(和/或未被)發(fā)現(xiàn)并檢索的方式。在一些實(shí)施方案中,雖然可以應(yīng)用表格9中列舉且本文中描述的錯(cuò)誤指示符中的一個(gè)或多個(gè),但是這個(gè)api可以不存在任何具體定義的錯(cuò)誤指示。根據(jù)一個(gè)實(shí)施方案,下文發(fā)現(xiàn)使用getitemsapi檢索多個(gè)項(xiàng)目的請求和接收自數(shù)據(jù)存儲(chǔ)服務(wù)且對應(yīng)于所述請求的響應(yīng)的實(shí)例。示例性請求格式:示例性響應(yīng)格式:在各種實(shí)施方案中,可以由數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))提供updateitemapi。這個(gè)api可以用來在項(xiàng)目尚不存在時(shí)插入所述項(xiàng)目,或用來在屬性級別操控現(xiàn)有項(xiàng)目(例如,修改其屬性中的一個(gè)或多個(gè)的值)。例如,更新項(xiàng)目可以包括插入、替換和/或刪除現(xiàn)有項(xiàng)目的各種屬性。在一些實(shí)施方案中,更新項(xiàng)目可以包括使具有數(shù)字類型的屬性的值自動(dòng)遞增或遞減。雖然上述putitemapi可以用來替換現(xiàn)有項(xiàng)目的所有屬性值,但是本文中描述的updateitemapi可以提供更細(xì)的替換操作。換句話說,這個(gè)api可以用來修改現(xiàn)有項(xiàng)目的屬性值的子集和/或修改定義用于現(xiàn)有項(xiàng)目的屬性集。圖9中的流程圖示出用于響應(yīng)于更新項(xiàng)目的請求而更新項(xiàng)目的方法的一個(gè)實(shí)施方案。如910處示出,在這個(gè)實(shí)例中,所述方法可以包括接收更新非關(guān)系數(shù)據(jù)庫中的表格(代表數(shù)據(jù)存儲(chǔ)服務(wù)客戶端維護(hù)的表格)中的項(xiàng)目的服務(wù)請求。如在先前實(shí)例中,updateitem請求可以包括表格名稱和主鍵(其可以共同地識(shí)別是更新請求目標(biāo)的項(xiàng)目)和指示所請求的更新的一個(gè)或多個(gè)其它輸入?yún)?shù)值。如果所述請求指示應(yīng)給項(xiàng)目添加項(xiàng)目屬性(如920),那么包括在所述請求中的屬性可以被添加到所述項(xiàng)目且可以被指派也包括在所述請求中的值(如925)。例如,響應(yīng)于包括用于尚不存在于項(xiàng)目中的特定屬性名稱的put動(dòng)作的updateitem請求,可以將對應(yīng)于put動(dòng)作的屬性名稱值對添加到項(xiàng)目。類似地,響應(yīng)于包括用于尚不存在于項(xiàng)目中的標(biāo)量數(shù)值屬性或集合類型屬性的add動(dòng)作的updateitem請求,可以將對應(yīng)于add動(dòng)作的屬性名稱值對添加到項(xiàng)目。如這個(gè)實(shí)例中示出,如果所述請求指示應(yīng)替換項(xiàng)目中的項(xiàng)目屬性的值(如930),那么包括在所述請求中的屬性的值可以由也包括在所述請求中的值替換(如935)。例如,響應(yīng)于包括用于尚不存在于項(xiàng)目中的特定屬性名稱的put動(dòng)作的updateitem請求,可以用與所述請求中的put動(dòng)作相關(guān)聯(lián)的屬性名稱值對中指定的值來更新所述屬性的值。如圖9中示出,如果所述請求指示應(yīng)從項(xiàng)目中移除項(xiàng)目屬性(如940),那么可以從所述項(xiàng)目中移除所述屬性和其值(如945)。例如,響應(yīng)于包括用于存在于項(xiàng)目中的標(biāo)量類型屬性的delete動(dòng)作的updateitem請求,可以從所述項(xiàng)目中移除所述屬性和其值。類似地,響應(yīng)于包括用于存在于項(xiàng)目中的集合類型屬性的delete動(dòng)作的updateitem請求,如果所述請求未指定屬性的集合中的值的任何一個(gè),那么可以從所述項(xiàng)目中移除所述屬性和其整個(gè)值集合。如這個(gè)實(shí)例中示出,如果所述請求指示應(yīng)給項(xiàng)目屬性的值集合添加或從項(xiàng)目屬性的值集合中移除一個(gè)或多個(gè)值(如950),那么可以給所述集合添加或從所述集合中移除包括在所述請求中的屬性的指定值(如955)。例如,響應(yīng)于包括用于已經(jīng)存在于項(xiàng)目中的集合類型屬性名稱的add動(dòng)作的updateitem請求,可以給項(xiàng)目中的屬性的值集合添加與所述請求中的add動(dòng)作相關(guān)聯(lián)的屬性名稱值對中指定的一個(gè)或多個(gè)值。相反地,響應(yīng)于包括用于已經(jīng)存在于項(xiàng)目中的集合類型屬性名稱的delete動(dòng)作的updateitem請求,可以從項(xiàng)目中的屬性的值集合中移除與所述請求中的delete動(dòng)作相關(guān)聯(lián)的屬性名稱值對中指定的一個(gè)或多個(gè)值。如果所述請求指示應(yīng)遞增或遞減項(xiàng)目中的屬性的值(如960),那么包括在所述請求中的屬性的值可以自動(dòng)遞增或遞減某個(gè)量,這個(gè)量也可以包括在所述請求中(如965)。例如,響應(yīng)于包括用于已經(jīng)存在于項(xiàng)目中的標(biāo)量數(shù)值屬性名稱的add動(dòng)作的updateitem請求,所述項(xiàng)目的值可以自動(dòng)地遞增所述請求中指定的量(例如,如果指定量是正數(shù))或自動(dòng)地遞減達(dá)所述請求中指定的量(例如,如果指定量是負(fù)數(shù))。在其它實(shí)施方案中,數(shù)值屬性的值總是可以遞增或遞減默認(rèn)量,或可以在請求中未指定值遞增或遞減的量時(shí)遞增或遞減默認(rèn)量。如圖9中的970處示出,一旦執(zhí)行updateitem請求中指定的任何有效更新,就可以完成所述方法。然而,如果指定更新中的任何一個(gè)是無效的(例如,如果丟失任何輸入?yún)?shù)或其值是錯(cuò)誤類型,等等),那么所述方法可以包括返回一個(gè)或多個(gè)錯(cuò)誤指示。在一些實(shí)施方案中,即使請求中指定的其它更新是無效的,也可以執(zhí)行請求中指定的任何有效更新。在其它實(shí)施方案中,如果指定更新中的任何一個(gè)是無效的,那么將不會(huì)執(zhí)行更新中的任何一個(gè)。如上文提及,在一些實(shí)施方案中,單個(gè)updateitem服務(wù)請求可以指定施加多次更新于單個(gè)項(xiàng)目的各種屬性。因此,如果單個(gè)服務(wù)請求中指定對應(yīng)類型的多次更新中的兩次,那么可以多次執(zhí)行圖9中示出的更新操作(例如,925、935、945、955、965)中的每個(gè)。此外,單個(gè)請求可以指示應(yīng)對各自項(xiàng)目屬性執(zhí)行不同類型的更新。因此,可以響應(yīng)于單個(gè)updateitem請求而執(zhí)行圖9中示出的更新操作(例如,925、935、945、955、965)中的多個(gè)操作。這在圖9中由從925到930的反饋、從935到940的反饋、從945到950的反饋和從955到960的反饋來加以示出。在各種實(shí)施方案中,由數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))提供的updateitemapi可以執(zhí)行條件更新。在此類實(shí)施方案中,這個(gè)api可以用來有條件地插入項(xiàng)目(例如,如果項(xiàng)目尚不存在,那么創(chuàng)建項(xiàng)目),或(例如,只有在項(xiàng)目的屬性匹配任何指定期望值時(shí),方能)有條件地替換(即,更新)項(xiàng)目。更新項(xiàng)目可以包括插入、更新和/或刪除現(xiàn)有項(xiàng)目的各種屬性。在一些實(shí)施方案中,數(shù)據(jù)存儲(chǔ)系統(tǒng)可以視情況為使用這個(gè)api替換/更新的項(xiàng)目返回舊的屬性值。在一些實(shí)施方案中,updateitemapi的輸入?yún)?shù)可以包括tablename(其可以是包括其中存儲(chǔ)要更新項(xiàng)目的或其中要有條件地插入項(xiàng)目的表格的名稱的字符串)、key參數(shù)(其可以指定識(shí)別要有條件地更新或插入的項(xiàng)目的簡易/單個(gè)或組合主鍵)、attributeupdates參數(shù)(其可以是將一個(gè)或多個(gè)指定屬性名稱中的每個(gè)映射到各自attributeupdate結(jié)構(gòu)的數(shù)組)、expected參數(shù)(其可以為條件放置指定屬性名稱到各自屬性值的映射)和/或returnvalues參數(shù)(其可以是指示(如果有)應(yīng)將哪些值作為操作的結(jié)果(例如,“none”,“all_old”、“update_old”、“all_new”或“updated_new”)返回的字符串)。每個(gè)attributeupdate結(jié)構(gòu)可以包括attributevalue參數(shù)(其可以為對應(yīng)屬性指定更新值)和action參數(shù)(其可以是指定要采取的動(dòng)作的字符串(例如,“put”、“add”或“delete”)。當(dāng)支持add動(dòng)作時(shí),add動(dòng)作可以允許數(shù)值屬性值自動(dòng)地遞增或遞減指定量。注意,因?yàn)榭梢詾橐薷牡拿總€(gè)屬性指定各自action參數(shù)值,所以可以使用單個(gè)updateitem操作來施加不同動(dòng)作于updateitem請求作為目標(biāo)的屬性中的每個(gè)。例如,響應(yīng)于單個(gè)updateitem請求,數(shù)據(jù)存儲(chǔ)系統(tǒng)可以刪除指定項(xiàng)目的一個(gè)或多個(gè)屬性值、使指定項(xiàng)目的一個(gè)或多個(gè)其它屬性值遞增或遞減和/或用指定的新值替換一個(gè)或多個(gè)其它屬性值。在一些實(shí)施方案中,action參數(shù)的默認(rèn)值(例如,如果未指定任何值)可以是“put”。注意,因?yàn)槊總€(gè)項(xiàng)目必須具有不變主鍵,所以不能使用updateitemapi來修改或刪除是所述鍵的部分的屬性。換句話說,attributeupdates參數(shù)不能包括對任何主鍵屬性的參考。也應(yīng)注意,當(dāng)指定action參數(shù)值是“delete”時(shí),可以任選attributevalue參數(shù)。在一些實(shí)施方案中,包括在expected參數(shù)中的每個(gè)屬性可以包括expectedattributevalue(其可以是具有值“exists”或“value”的字符串)、attributevalue(其可以指示屬性的值或可以具有空白或空值)和/或exists參數(shù)(其可以指示要評估的條件是是否當(dāng)前為現(xiàn)有項(xiàng)目指定包括在expected參數(shù)中的屬性)。如果不滿足請求中經(jīng)由updateitemapi指定的條件(例如,如果一個(gè)或多個(gè)屬性的期望值不匹配存儲(chǔ)在表格中的值),那么可以由數(shù)據(jù)存儲(chǔ)裝置返回錯(cuò)誤指示(例如,conditionalcheckfailed)。在一些實(shí)施方案中,如果指定returnvalues參數(shù)值“none”,那么這個(gè)api可以不返回任何值。如果指定returnvalues參數(shù)值“all_old”,那么這個(gè)api可以返回在執(zhí)行updateitem操作之前updateitem操作作為目標(biāo)的項(xiàng)目的內(nèi)容(即,所有屬性值)。如果指定returnvalues參數(shù)值“update_old”,那么可以僅返回任何已更新屬性的先前值(而非所有屬性值)。如果指定returnvalues參數(shù)值“all_new”,那么可以返回目標(biāo)項(xiàng)目的新版本的所有屬性(即,在執(zhí)行updateitem操作之后所述項(xiàng)目的所有屬性值)。如果指定returnvalues參數(shù)值“update_new”,那么可以僅返回任何已更新屬性的新值(而非所有屬性值)。圖10中的流程圖示出用于使用支持條件更新和/或多個(gè)輸出選項(xiàng)的api來更新項(xiàng)目的方法的一個(gè)實(shí)施方案。如這個(gè)實(shí)例中示出,所述方法可以包括接收更新非關(guān)系數(shù)據(jù)庫中的表格(代表數(shù)據(jù)存儲(chǔ)服務(wù)客戶端維護(hù)的表格)中的項(xiàng)目的服務(wù)請求。如在先前實(shí)例中,updateitem請求可以包括表格名稱和主鍵(其可以共同地識(shí)別是更新請求目標(biāo)的項(xiàng)目)和指示所請求的更新的一個(gè)或多個(gè)其它輸入?yún)?shù)值。如果更新請求并非以項(xiàng)目中的任何屬性值為條件(示為1020的否定退出),那么可以執(zhí)行請求中指定的更新(如1050)。然而,如果更新請求是以項(xiàng)目中匹配請求中指定的對應(yīng)值的一個(gè)或多個(gè)屬性值為條件(例如,如果updateitem請求的輸入包括指定要滿足的一個(gè)或多個(gè)條件的expected結(jié)構(gòu))(示為1020的肯定退出),那么所述方法可以包括確定是否滿足指定條件中的每個(gè)。如這個(gè)實(shí)例中示出,可以在執(zhí)行請求中指定的更新之前評估指定條件中的每個(gè)(如1030)。如果滿足給定條件(示為1030的肯定退出),但是所述請求指定額外條件(示為1040的肯定退出),那么可以評估所述額外條件(示為從1040到1030的反饋)。如果滿足給定條件(示為1030的肯定退出)且所述請求未指定任何額外條件(示為1040的否定退出),那么可以執(zhí)行所請求更新(如1050)。如果不滿足指定條件中的任何一個(gè)(示為1030的否定退出),那么可以不執(zhí)行所請求更新。如這個(gè)實(shí)例中示出,如果服務(wù)請求指定應(yīng)輸出項(xiàng)目的屬性的更新前和/或更新后的值(示為1060的肯定退出),那么所述方法可以包括返回所述項(xiàng)目的更新前和/或更新后的屬性值(如1070),且可以完成更新項(xiàng)目操作(如1080)。例如,如果將updateitem請求的returnvalues參數(shù)設(shè)置成“all_old”、“update_old”、“all_new”或“updated_new”,那么可以響應(yīng)于完成項(xiàng)目更新程序而返回對應(yīng)舊和/或新的屬性值。如果將returnvalues參數(shù)設(shè)置成“none”或未指定用于請求,那么可以不返回任何屬性值。注意,如果不滿足指定條件中的任何一個(gè),那么所述響應(yīng)可以包括一個(gè)或多個(gè)錯(cuò)誤指示(諸如本文中描述的那些指示),而不論所述響應(yīng)中是否返回舊和/或新的屬性值中的任何一個(gè)。根據(jù)一個(gè)實(shí)施方案,下表中總結(jié)了對在對應(yīng)屬性值上指定可能的action參數(shù)值中的響應(yīng)。表格4-將現(xiàn)有項(xiàng)目作為目標(biāo)的更新動(dòng)作表格5-將不存在的項(xiàng)目作為目標(biāo)的更新動(dòng)作注意,在一些實(shí)施方案中,為標(biāo)量屬性的刪除類型更新供應(yīng)屬性值可能出現(xiàn)錯(cuò)誤。在一些實(shí)施方案中,為集合類型屬性的刪除類型更新供應(yīng)空集合可能出現(xiàn)錯(cuò)誤。在一些實(shí)施方案中,集合類型屬性的刪除類型更新和/或集合類型屬性的添加類型更新的供應(yīng)值的類型必須匹配現(xiàn)有值類型。如上所述,add動(dòng)作可以僅對類型數(shù)字的標(biāo)量屬性或集合類型屬性有效,且可以對標(biāo)量字符串類型無效。如上表中所示,在一些實(shí)施方案中,當(dāng)updateitem請求作為目標(biāo)的項(xiàng)目不存在且使用至少一個(gè)put或add動(dòng)作參數(shù)值實(shí)行更新動(dòng)作時(shí),可以創(chuàng)建項(xiàng)目。然而,如果updateitem操作是將不存在項(xiàng)目作為目標(biāo)且僅指定delete動(dòng)作,那么將不會(huì)創(chuàng)建新項(xiàng)目。在不同實(shí)施方案中,正如由數(shù)據(jù)存儲(chǔ)服務(wù)提供的其它api,updateitem請求和/或響應(yīng)可以以json請求/響應(yīng)格式或另一合適的格式呈現(xiàn)。根據(jù)一個(gè)實(shí)施方案,下文發(fā)現(xiàn)對數(shù)據(jù)存儲(chǔ)服務(wù)的請求和接收自數(shù)據(jù)存儲(chǔ)服務(wù)且對應(yīng)于updateitemapi的響應(yīng)的實(shí)例。示例性請求格式:示例性響應(yīng)格式:在這個(gè)實(shí)例中,指定更新是以rating屬性的不存在和以是“flower”的title屬性的值為條件。響應(yīng)于確定這些條件均評估為真,對title和tags屬性進(jìn)行指定更新。注意在這個(gè)實(shí)例中,將包括returnvalues參數(shù)的updateitem請求設(shè)置成update_new。因此,所述響應(yīng)僅包括經(jīng)定義用于指定更新操作作為目標(biāo)的屬性的新值(即,“title”屬性的新值和“tags”屬性的新值)。如先前提及,在主鍵是簡易鍵的實(shí)施方案中,可以使用代表存儲(chǔ)服務(wù)客戶端維護(hù)的表格中的項(xiàng)目中的每個(gè)的主鍵值的散列表來分區(qū)所述項(xiàng)目,而在主鍵是組合鍵的實(shí)施方案中,可以首先由散列鍵組件的散列表來分區(qū)數(shù)據(jù)且然后由范圍鍵組件來分區(qū)數(shù)據(jù)。圖11示出根據(jù)一個(gè)實(shí)施方案的用于使用簡易和/或組合鍵分區(qū)表格數(shù)據(jù)的方法的一個(gè)實(shí)施方案。如1110處示出,在這個(gè)實(shí)例中,所述方法可以包括數(shù)據(jù)存儲(chǔ)服務(wù)(或?qū)嵤?shù)據(jù)存儲(chǔ)的底層系統(tǒng)的組件,諸如存儲(chǔ)節(jié)點(diǎn)實(shí)體或管理組件)開始對代表存儲(chǔ)服務(wù)客戶端在非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中維護(hù)的表格進(jìn)行分區(qū)。如果表格中的多個(gè)項(xiàng)目共享散列鍵屬性值(示為1120的肯定退出),那么所述方法可以包括數(shù)據(jù)存儲(chǔ)裝置首先取決于表格中具有給定散列鍵屬性值的項(xiàng)目的范圍鍵屬性值的散列表且然后取決于所述項(xiàng)目的范圍鍵屬性值來將所述項(xiàng)目分成兩個(gè)或更多個(gè)分區(qū)(例如,數(shù)據(jù)庫分區(qū))(如1140)。換句話說,如果表格的主鍵是包括散列鍵組件(其值可以用來識(shí)別一組項(xiàng)目)和范圍鍵組件(其值可以用來排序具有相同散列鍵屬性值的項(xiàng)目并唯一地識(shí)別所述項(xiàng)目中的每個(gè))的組合鍵,那么散列鍵屬性值和范圍鍵屬性值均可以用來分區(qū)表格中的項(xiàng)目。例如,對于具有相同散列鍵屬性值的一組項(xiàng)目,所述組中的前n個(gè)項(xiàng)目(由其各自范圍鍵屬性值排序)可以被指派到一個(gè)分區(qū),所述組中的接下來的m個(gè)項(xiàng)目可以被指派到第二分區(qū),以此類推。注意在一些實(shí)施方案中,每個(gè)分區(qū)可以包括共享一個(gè)散列鍵屬性值的項(xiàng)目的部分且也可以包括具有其它散列鍵屬性值的其它項(xiàng)目。如果表格中的項(xiàng)目均沒有共享散列鍵屬性值(示為1120的否定退出),那么所述方法可以包括數(shù)據(jù)存儲(chǔ)裝置取決于表格中的項(xiàng)目的各自散列鍵屬性值的散列表將所述項(xiàng)目分成兩個(gè)或更多個(gè)分區(qū)(如1130)。例如,如果表格的主鍵是包括散列鍵組件(其值可以用來唯一地識(shí)別表格中的項(xiàng)目中的每個(gè))的簡易鍵,那么可以取決于散列鍵屬性值的散列表但不取決于任何其它項(xiàng)目屬性值來分區(qū)表格中的項(xiàng)目(即,將所述項(xiàng)目指派給多個(gè)分區(qū)之一)。在一些實(shí)施方案中,如果主鍵是組合鍵,但是表格中的項(xiàng)目均不共享散列鍵屬性值(即,如果每個(gè)項(xiàng)目具有唯一散列鍵屬性值),那么數(shù)據(jù)存儲(chǔ)裝置可以分區(qū)項(xiàng)目如同主鍵是簡易鍵一樣(即,其可以僅使用散列鍵屬性值分區(qū)表格中的項(xiàng)目)。一旦數(shù)據(jù)存儲(chǔ)裝置將所有項(xiàng)目指派到分區(qū),數(shù)據(jù)存儲(chǔ)裝置就可以將分區(qū)中的每個(gè)存儲(chǔ)在各自存儲(chǔ)節(jié)點(diǎn)(例如,各自計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置)上(如1150)。在一些實(shí)施方案中,單個(gè)表格的每個(gè)分區(qū)可以存儲(chǔ)在不同存儲(chǔ)節(jié)點(diǎn)上,而在其它實(shí)施方案中,分區(qū)中的兩個(gè)或更多個(gè)可以維護(hù)在相同存儲(chǔ)節(jié)點(diǎn)上。注意在一些實(shí)施方案中,可以預(yù)確定給定表格的項(xiàng)目被分區(qū)的分區(qū)數(shù)量(例如,其可以基于用戶輸入/優(yōu)選或客戶端的歷史數(shù)據(jù)、賬號或表格類型),而在其它實(shí)施方案中,可以隨著分區(qū)操作的進(jìn)展(例如,基于散列結(jié)果的每個(gè)范圍中的項(xiàng)目數(shù)和/或范圍鍵屬性值的每個(gè)范圍中的項(xiàng)目數(shù))確定給定表格的項(xiàng)目被分區(qū)的分區(qū)數(shù)量。也應(yīng)注意,因?yàn)榉謪^(qū)是基于散列結(jié)果,所以可以稍微使可以在可用分區(qū)中指派和分布多組項(xiàng)目的次序隨機(jī)化。在一些情況下,例如,如果一些項(xiàng)目的存取頻率遠(yuǎn)大于其它項(xiàng)目或一些項(xiàng)目組包括的項(xiàng)目數(shù)高于其它組,那么初始分區(qū)可以造成熱點(diǎn)。在此類情況下,可以執(zhí)行再分區(qū)操作以(例如,關(guān)于數(shù)據(jù)量和/或服務(wù)請求通信量)將項(xiàng)目更均勻地分布在可用分區(qū)中。也應(yīng)注意,在一些實(shí)施方案中,可以使用單個(gè)散列鍵組件和兩個(gè)或更多個(gè)范圍鍵組件分區(qū)表格中的項(xiàng)目。下表6示出使用類似于圖11中示出的方法的方法對表格中的項(xiàng)目進(jìn)行分區(qū)的實(shí)例。在這個(gè)實(shí)例中,散列鍵屬性是“用戶名”屬性且范圍鍵屬性是“消息id”屬性。表格存儲(chǔ)與三個(gè)用戶名(bob、sue和phil)中的每個(gè)相關(guān)聯(lián)的多個(gè)消息。如表格6中示出,給定表格的一些分區(qū)可以僅包括具有相同散列鍵屬性值的項(xiàng)目。在這個(gè)實(shí)例中,由分區(qū)id值a識(shí)別的分區(qū)僅存儲(chǔ)具有散列鍵屬性值“bob”的消息。注意,這個(gè)分區(qū)未存儲(chǔ)bob的所有消息,僅存儲(chǔ)具有消息id值(即,范圍鍵屬性值)1至199的消息。bob的另一組消息(具有范圍鍵屬性值200至299的那些消息)存儲(chǔ)在由分區(qū)id值b識(shí)別的分區(qū)中。這個(gè)分區(qū)也存儲(chǔ)具有散列鍵屬性值“sue”的消息,具體地說具有范圍鍵值1至50的那些消息。bob的又一組消息(具有范圍鍵屬性值300至399的那些消息)存儲(chǔ)在由分區(qū)id值c識(shí)別的分區(qū)中。這個(gè)分區(qū)也存儲(chǔ)具有散列鍵屬性值“phil”的消息,具體地說具有范圍鍵值1至100的那些消息。表格6在上述實(shí)例中,檢索bob的所有消息的請求可以檢索來自分區(qū)a的消息1至199(其可以維護(hù)在特定存儲(chǔ)節(jié)點(diǎn)上)、來自分區(qū)b的消息200至299(其可以維護(hù)在不同存儲(chǔ)節(jié)點(diǎn)上)和來自分區(qū)c的消息300至399(其可以維護(hù)在另外一個(gè)存儲(chǔ)節(jié)點(diǎn)上)。如下文更詳細(xì)地描述,在一些實(shí)施方案中,(例如,如果達(dá)到響應(yīng)限制),可以提前終止檢索所有這些消息的請求,且可以響應(yīng)于后續(xù)請求而檢索剩余消息。在一些實(shí)施方案中,本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))可以提供用于代表存儲(chǔ)服務(wù)客戶端搜索維護(hù)在表格中的數(shù)據(jù)的兩個(gè)不同api:scanapi和queryapi。在一些實(shí)施方案中,scanapi可以用來請求進(jìn)行掃描整個(gè)表格的操作。scan請求可以指定施加一個(gè)或多個(gè)篩選器于掃描操作的結(jié)果(例如,以細(xì)化在完成掃描之后返回到請求器的值)。在一些實(shí)施方案中,服務(wù)(和/或底層系統(tǒng))可以強(qiáng)加限制掃描結(jié)果,且可以在篩選結(jié)果之前施加限制。例如,在一些實(shí)施方案中,系統(tǒng)可以使用分頁(例如,就評估或返回的項(xiàng)目數(shù)或掃描或返回的數(shù)據(jù)量將掃描或查詢程序分成具有預(yù)定最大大小的不同片段)以快速對掃描和/或查詢作出響應(yīng)。例如,為了掃描大于預(yù)定最大大小(例如,1mb)或所得數(shù)據(jù)集大于預(yù)定最大大小(例如,1mb)的表格,可能需要執(zhí)行多個(gè)掃描或查詢操作以按1mb增量掃描整個(gè)表格。如果表格數(shù)據(jù)均不滿足指定篩選準(zhǔn)則,那么掃描操作可能不返回任何結(jié)果。在一些實(shí)施方案中,queryapi可以支持比較操作以將搜索程序限于匹配所供應(yīng)查詢條件(例如,以項(xiàng)目的屬性為條件)的數(shù)據(jù)。例如,query請求可以用來尋找表格中匹配請求中指定的參數(shù)的所有數(shù)據(jù),直到預(yù)定義限制為止(如果系統(tǒng)強(qiáng)加這種限制)。在一些實(shí)施方案中,query請求可以總是返回結(jié)果,但是系統(tǒng)可以在查詢條件(即,屬性篩選準(zhǔn)則)不匹配結(jié)果中的任何一個(gè)時(shí)返回空白值。在各種實(shí)施方案中,queryapi可以用來在代表存儲(chǔ)服務(wù)客戶端(例如,用戶、顧客、訂戶或客戶端應(yīng)用)維護(hù)的表格中查詢存儲(chǔ)在所述表格中的信息。在一些實(shí)施方案中,可以基于主索引(根據(jù)指定散列鍵,且在一些情況下根據(jù)滿足指定范圍鍵預(yù)測的單個(gè)范圍鍵值)執(zhí)行查詢。在其它實(shí)施方案中,主鍵可以包括單個(gè)散列鍵組件和兩個(gè)或更多個(gè)范圍鍵組件。在一些實(shí)施方案中,queryapi的輸入?yún)?shù)可以包括tablename(其可以是包括存儲(chǔ)要更新的項(xiàng)目或要有條件地插入項(xiàng)目的表格的名稱的字符串)、attributestoget參數(shù)(其可以是要返回值的屬性的數(shù)組)、limit參數(shù)(其可以是指定響應(yīng)于單個(gè)查詢請求而返回的結(jié)果的最大數(shù)的整數(shù))、consistentread參數(shù)(其可以是指示是否將發(fā)出一致讀取的布爾值)、count參數(shù)(其可以是指示是否應(yīng)返回匹配查詢的項(xiàng)目的計(jì)數(shù)(而非所述項(xiàng)目的屬性值)的布爾值)、hashkeyvalue(其可以為主鍵的散列組件指定attributevalue且可以強(qiáng)制性約束查詢)、rangekeycondition(其可以指定約束主鍵的rangekey組件,且可以結(jié)合hashkeyvalue識(shí)別查詢請求的一個(gè)或多個(gè)目標(biāo))、scanindexforward參數(shù)(其可以是指示是否向前或向后遍歷索引的布爾值)和/或lastevaluatedkey參數(shù)(其可以在查詢是可響應(yīng)于單個(gè)查詢請求而返回屬性的項(xiàng)目數(shù)的預(yù)定限制已被超過的查詢的延續(xù)時(shí)指定主鍵值用作所述查詢的開始點(diǎn))。在一些實(shí)施方案中,rangekeycondition參數(shù)可以取決于表格中的項(xiàng)目的范圍鍵組件的值來指定要評估的數(shù)學(xué)或邏輯表達(dá)式。rangekeycondition參數(shù)可以包括comparisonoperator參數(shù)和一個(gè)或多個(gè)attributevalue。例如,在一個(gè)實(shí)施方案中,comparisonoperator可以是下列運(yùn)算符之一:“eq”(即,等于)、“gt”(即,大于)、“ge”(即,大于或等于)、“l(fā)t”(即,小于)、“l(fā)e”(即,小于或等于)、"beginswith"或"between"。在此類實(shí)施方案中,如果comparisonoperator是“eq”、“gt”、“ge”、“l(fā)t”、“l(fā)e”或"beginswith"之一,那么attributevalue參數(shù)中僅可以包括一個(gè)值,而如果comparisonoperator是"between",那么attributevalue參數(shù)中可以包括兩個(gè)值。注意在一些實(shí)施方案中,可以按字典編輯對具有類型“字符串”(例如,具有表示為二進(jìn)制字符串的utf8字符串)的屬性進(jìn)行指定比較,且可以按數(shù)值對具有類型“數(shù)字”的屬性進(jìn)行指定比較。在一些實(shí)施方案中,可以包括指定用于"between"運(yùn)算符的所述兩個(gè)值,其中第一值小于第二值。"beginswith"運(yùn)算符可以是僅對標(biāo)量字符串有效的前置運(yùn)算符。在一些實(shí)施方案中,attributestoget參數(shù)可以包括屬性類型和其名稱。在一些實(shí)施方案中,如果未對查詢請求指定屬性名稱(且如果count參數(shù)是“假”),那么可以返回匹配查詢條件的項(xiàng)目的所有屬性。在一些實(shí)施方案中,如果count參數(shù)是“真”,那么可以不對響應(yīng)于查詢請求而由數(shù)據(jù)存儲(chǔ)系統(tǒng)返回的匹配項(xiàng)目數(shù)施加任何預(yù)定義限制。(在單個(gè)查詢請求中)將count參數(shù)設(shè)置成“真”和提供attributestoget的清單可能無效,且可能造成數(shù)據(jù)存儲(chǔ)系統(tǒng)返回錯(cuò)誤指示(例如,驗(yàn)證錯(cuò)誤的指示)。在一些實(shí)施方案中,如果將consistentread參數(shù)設(shè)置成真,那么將發(fā)出一致讀取操作。否則,將執(zhí)行最終一致讀取操作。如上文提及,如果匹配單個(gè)查詢請求的項(xiàng)目數(shù)超過limit參數(shù)的值,那么當(dāng)達(dá)到限制時(shí)可以終止查詢。在這種情況下,數(shù)據(jù)存儲(chǔ)系統(tǒng)可以為多個(gè)匹配項(xiàng)目返回屬性值,直到返回limit參數(shù)的值為止,且可以包括可以用來(例如,通過包括lastevaluatedkey作為后續(xù)查詢請求的輸入)繼續(xù)進(jìn)行查詢的延續(xù)令牌(即,這個(gè)lastevaluatedkey參數(shù))。注意在一些實(shí)施方案中,數(shù)據(jù)存儲(chǔ)系統(tǒng)可以支持使用queryapi對響應(yīng)于查詢請求而返回的匹配項(xiàng)目數(shù)進(jìn)行全系統(tǒng)限制和/或(即,使用上述limit參數(shù))對匹配項(xiàng)目數(shù)進(jìn)行請求專用限制。在一些這樣的實(shí)施方案中,當(dāng)滿足這些限制中的任何一個(gè)時(shí)(例如,如果在滿足請求專用限制之前滿足全系統(tǒng)限制,或反之亦然)可以終止查詢并將延續(xù)令牌返回到請求器。在一些實(shí)施方案中,query請求的返回參數(shù)可以包括items參數(shù)(其可以包括匹配指定查詢條件的項(xiàng)目的清單和/或項(xiàng)目相關(guān)屬性值)、count參數(shù)(其可以指示響應(yīng)中的項(xiàng)目數(shù))和/或lastevaluatedkey參數(shù)(如上所述,其可以指定在達(dá)到對可以響應(yīng)于單個(gè)查詢請求而返回關(guān)于其信息的項(xiàng)目的數(shù)量的預(yù)定限制之前的查詢期間評估的最后項(xiàng)目的主鍵值)。如上文提及,如果已超過對可響應(yīng)于單個(gè)查詢請求而返回關(guān)于其信息的項(xiàng)目的數(shù)量的預(yù)定限制,那么lastevaluatedkey參數(shù)可以用作查詢的延續(xù)的開始點(diǎn)。注意在一些實(shí)施方案中,對于queryapi,響應(yīng)中總是可以返回count參數(shù)而不論是否也返回匹配項(xiàng)目(和/或其屬性)。正如由數(shù)據(jù)存儲(chǔ)服務(wù)提供的其它api,在不同實(shí)施方案中,query請求和/或響應(yīng)可以以json請求/響應(yīng)格式或另一合適的格式呈現(xiàn)。根據(jù)一個(gè)實(shí)施方案,下文發(fā)現(xiàn)對數(shù)據(jù)存儲(chǔ)服務(wù)的請求和接收自數(shù)據(jù)存儲(chǔ)服務(wù)且對應(yīng)于queryapi的響應(yīng)的實(shí)例。根據(jù)一個(gè)實(shí)施方案,下文實(shí)例示出可以用來為單個(gè)顧客(即,customerid是“12345678”的顧客)檢索來自稱作“pictures”的表格的所有項(xiàng)目(其具有介于"***"與"****"之間的分級)的查詢和對所述查詢請求作出的響應(yīng)。示例性請求格式:示例性響應(yīng)格式圖12中的流程圖示出用于執(zhí)行如由本文中描述的api指定的查詢的方法的一個(gè)實(shí)施方案。如1210處示出,在這個(gè)實(shí)例中,所述方法可以包括接收執(zhí)行針對非關(guān)系數(shù)據(jù)庫中的表格(例如,代表數(shù)據(jù)存儲(chǔ)服務(wù)客戶端維護(hù)的表格)中的一個(gè)或多個(gè)項(xiàng)目的查詢的服務(wù)請求。如在先前實(shí)例中,所述請求可以包括表格名稱(其可以識(shí)別是查詢請求的目標(biāo)的表格)和主鍵值。如果指定主鍵值是單個(gè)屬性散列鍵值(例如,如果所識(shí)別表格的主鍵是取決于單個(gè)屬性的值的簡易主鍵時(shí)),查詢可以將由表格名稱和主鍵值的組合唯一地識(shí)別的單個(gè)項(xiàng)目作為目標(biāo)。在這種情況下(示為1220的肯定退出),所述方法可以包括取決于指定散列鍵值使查詢針對表格中包括所述項(xiàng)目的單個(gè)分區(qū)。在這種情況下,所述方法也可以包括返回包括所識(shí)別的單個(gè)項(xiàng)目的一個(gè)或多個(gè)屬性值的響應(yīng)(如1250)。如本文中所述,如果指定主鍵值是組合鍵值(例如,如果所識(shí)別表格的主鍵是取決于散列鍵值和范圍鍵值的組合主鍵),那么查詢可以針對匹配指定散列鍵值和指定范圍鍵條件的一個(gè)或多個(gè)項(xiàng)目。在這個(gè)實(shí)例中,如果所述請求指定散列鍵屬性值和單個(gè)范圍鍵屬性值(例如,如果所述請求包括范圍鍵條件指定范圍鍵值等于特定值)(示為1240的肯定退出),那么所述方法可以再次包括取決于指定散列鍵值使查詢針對表格中包括所述項(xiàng)目的單個(gè)分區(qū)和返回包括所識(shí)別的單個(gè)項(xiàng)目的一個(gè)或多個(gè)屬性值的響應(yīng)(如1250)。在這個(gè)實(shí)例中,如果所述請求指定散列鍵屬性值和可以匹配多個(gè)范圍鍵屬性值的范圍鍵條件(示為1240的否定退出),那么所述方法可以包括取決于指定散列鍵值和范圍鍵條件使查詢針對表格的一個(gè)或多個(gè)分區(qū)(如1260)。例如,如果匹配指定散列鍵值的項(xiàng)目(例如,范圍鍵值落在給定范圍內(nèi)的項(xiàng)目)中的一些存儲(chǔ)在表格的一個(gè)分區(qū)上,但是匹配指定散列鍵值的其它項(xiàng)目(例如,范圍鍵值落在不同范圍內(nèi)的項(xiàng)目)存儲(chǔ)在表格的另一分區(qū)上,那么可以使查詢針對多個(gè)分區(qū)(且在一些情況下,上面托管所述分區(qū)的多個(gè)機(jī)器)以識(shí)別匹配指定散列鍵值和指定范圍鍵條件兩者的所有項(xiàng)目。在這種情況下,所述方法可以包括返回包括匹配散列鍵值和范圍鍵條件兩者的一個(gè)或多個(gè)項(xiàng)目的一個(gè)或多個(gè)屬性值的響應(yīng)(如1270),其中可以從不同分區(qū)(且在一些情況下,不同機(jī)器)中檢索匹配散列鍵值和范圍鍵條件兩者的所述一個(gè)或多個(gè)項(xiàng)目中的一些。注意,針對單個(gè)項(xiàng)目(例如,為簡易主鍵指定散列鍵值或指定散列鍵值和單個(gè)范圍鍵值的一個(gè)項(xiàng)目(如1240的肯定退出))的查詢可以實(shí)施類似于對應(yīng)getitem請求的功能的功能,其中支持參數(shù)個(gè)數(shù)和類型的一定變動(dòng)。在一些實(shí)施方案中,可以由queryapi提供getitemapi的功能(如上所述),而在其它實(shí)施方案中,可以由不同api(例如,getitemapi和queryapi)提供本文中描述的getitem功能和本文中描述的query功能。根據(jù)一個(gè)實(shí)施方案,圖13中的流程圖示出用于執(zhí)行如由本文中描述的api指定的查詢的方法的更詳細(xì)實(shí)例。如1310處示出,在這個(gè)實(shí)例中,所述方法可以包括接收執(zhí)行針對非關(guān)系數(shù)據(jù)庫中的表格(例如,代表數(shù)據(jù)存儲(chǔ)服務(wù)客戶端維護(hù)的表格)中的一個(gè)或多個(gè)項(xiàng)目的查詢的服務(wù)請求。如在先前實(shí)例中,所述請求可以包括表格名稱(其可以識(shí)別是查詢的目標(biāo)的表格)和主鍵值。如本文中所述,在這個(gè)實(shí)例中,指定主鍵值是組合鍵值(即,所識(shí)別表格的主鍵是取決于散列鍵值和范圍鍵值的組合主鍵),且所述查詢可以將匹配請求中指定的散列鍵值和范圍鍵條件的多個(gè)項(xiàng)目作為目標(biāo)。如1320處示出,所述方法可以包括解析所述請求以確定請求中指定的散列值和范圍值。所述方法可以包括取決于指定散列值和范圍值使查詢針對包括查詢的初始目標(biāo)的分區(qū)和從所述分區(qū)中檢索關(guān)于查詢的一個(gè)或多個(gè)目標(biāo)的信息(例如,查詢作為目標(biāo)的項(xiàng)目的屬性值)(如1330)。例如,在一些實(shí)施方案中,匹配特定散列鍵值的項(xiàng)目可以由其范圍鍵值在表格中加以排序。在此類實(shí)施方案中,指定散列鍵值和匹配指定范圍鍵條件的第一范圍鍵值的組合可以唯一地識(shí)別表格中匹配查詢條件的第一項(xiàng)目。在此類實(shí)施方案中,可以首先使查詢針對包括由這個(gè)組合識(shí)別的項(xiàng)目的分區(qū)。在一些情況下,查詢針對的第一分區(qū)上可以存在匹配指定散列鍵值和指定范圍鍵條件的一個(gè)或多個(gè)額外項(xiàng)目,且可以響應(yīng)于查詢而返回所有這些目標(biāo)(即,項(xiàng)目本身和/或其屬性值的指定子集)。在一些情況下,匹配指定散列鍵值和指定范圍鍵條件兩者的項(xiàng)目中的一些可以存儲(chǔ)在表格中除了查詢針對的第一分區(qū)以外的一個(gè)或多個(gè)分區(qū)上。如果是(示為1340的否定退出),那么查詢可以針對所述一個(gè)或多個(gè)其它分區(qū),且可以檢索這些額外查詢目標(biāo)(如1350)。例如,匹配指定散列鍵值和指定范圍鍵條件兩者的項(xiàng)目數(shù)可以大于存儲(chǔ)在表格的每個(gè)分區(qū)中的項(xiàng)目數(shù)。在另一實(shí)例中,由于在表格中排序項(xiàng)目并將項(xiàng)目存儲(chǔ)在表格中和/或?qū)㈨?xiàng)目指派到各個(gè)分區(qū)的次序(例如,在項(xiàng)目以特定次序排序并根據(jù)其范圍鍵值指派到特定分區(qū)的實(shí)施方案中),目標(biāo)項(xiàng)目可以跨分區(qū)邊界。在這些和其它情況下,所述方法可以包括返回包括匹配散列鍵值和范圍鍵條件兩者的一個(gè)或多個(gè)項(xiàng)目的一個(gè)或多個(gè)屬性值的響應(yīng)(如1370),其中可以從不同分區(qū)(且在一些情況下,不同物理計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置)中檢索匹配散列鍵值和范圍鍵條件兩者的所述一個(gè)或多個(gè)項(xiàng)目中的一些。然而,如圖13中示出,如果匹配指定散列鍵值和指定范圍鍵條件兩者的所有項(xiàng)目存儲(chǔ)在查詢針對的第一分區(qū)上(示為1340的肯定退出),那么所述方法可以包括返回包括匹配散列鍵值和范圍鍵條件兩者的一個(gè)或多個(gè)項(xiàng)目的一個(gè)或多個(gè)屬性值的響應(yīng)(如1360),其中從最初目標(biāo)分區(qū)(且因此,單個(gè)物理計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置)中檢索匹配散列鍵值和范圍鍵條件兩者的所述一個(gè)或多個(gè)項(xiàng)目中的所有項(xiàng)目。queryapi的使用可以通過下列實(shí)例(即,下文的偽代碼)來進(jìn)一步示出。在第一實(shí)例中,請求對表格執(zhí)行查詢操作以檢索存儲(chǔ)在表格中開始于單詞“the”且與單個(gè)顧客id編號相關(guān)聯(lián)的所有電影標(biāo)題。這個(gè)實(shí)例假設(shè)表格具有基于屬性“id”和“電影標(biāo)題”的組合主鍵。這個(gè)query請求可以用來對主鍵散列值2(例如,顧客id=2)檢索具有開始于“the”的范圍值的所有項(xiàng)目(即,開始于“the”的電影標(biāo)題)。如上文提及,在一些實(shí)施方案中,可以限制由單次查詢(在篩選之前)返回的項(xiàng)目數(shù)(例如,限于1mb數(shù)據(jù))。在此類實(shí)施方案中,如果查詢需要返回1mb以上數(shù)據(jù),那么可以基于具有最后返回值的項(xiàng)目的主鍵設(shè)置第二次查詢。queryapi可以使用lastevaluatedkey參數(shù)中返回的值作為第二次查詢的開始點(diǎn)。例如,由截?cái)嗖樵兎祷氐膌astevaluatedkey參數(shù)可以存儲(chǔ)在變量中且作為exclusivestartkey輸入?yún)?shù)值提供給下一次查詢。下文的示例性偽代碼示出這個(gè)系列操作。如本文中所述,可以將組合主鍵索引為散列索引和范圍索引。這種多部鍵可以維持第一索引值與第二索引值之間的等級。例如,在下文示為表格7的地址表格使用顧客的userid作為散列值且使用表格中輸入地址的年份作為識(shí)別地址表格中的每個(gè)項(xiàng)目的范圍。表格中的所有條目必須具有userid和年份,而每個(gè)userid/年份主鍵可具有其它屬性的任何集合。表格7在這個(gè)實(shí)例中,userid是散列索引,且僅支持對等式作出比較(即,值的精確匹配)。在這個(gè)實(shí)例中,年份是范圍索引。因此,可以施加各種比較運(yùn)算符于年份以在對表格執(zhí)行查詢時(shí)約束搜索。例如,query請求可以用來檢索2010年之前的年份的bob的所有地址信息(即,查詢指定年份屬性值小于2010的條件)。這次查詢將返回年份2009和2004的bob的地址信息,如表格7的第五個(gè)和第六個(gè)條目所示。注意,對于其它表格(諸如下文示出的表格8),范圍鍵可以是字符串類型屬性,諸如電影標(biāo)題。在這個(gè)實(shí)例中,表格可以由具有相同userid的項(xiàng)目的標(biāo)題屬性值(即,其范圍鍵值)的值以字母表次序排序所述項(xiàng)目,且每個(gè)userid/標(biāo)題對可以唯一地識(shí)別表格中的單個(gè)項(xiàng)目。表格8在各種實(shí)施方案中,scanapi可以用來通過跨表格執(zhí)行全掃描來代表存儲(chǔ)服務(wù)客戶端檢索存儲(chǔ)在表格中的一個(gè)或多個(gè)項(xiàng)目和屬性??梢酝ㄟ^指定篩選器來限制返回的項(xiàng)目。在一些實(shí)施方案中,scanapi支持的語義可以比上述queryapi更豐富。例如,它可以支持比較運(yùn)算符,諸如"contains"、"isnull"、"in"等。在一些實(shí)施方案中,scanapi的輸入?yún)?shù)可以包括支持用于上述queryapi的相同輸入?yún)?shù)中的一些。例如,輸入?yún)?shù)可以包括tablename(其可以是包括存儲(chǔ)要更新的項(xiàng)目或要有條件地插入項(xiàng)目的表格的名稱的字符串)、attributestoget參數(shù)(其可以是要返回值的屬性的數(shù)組)、limit參數(shù)(其可以是指定響應(yīng)于單個(gè)查詢請求而返回的結(jié)果的最大數(shù)的整數(shù))、count參數(shù)(其可以是指示是否應(yīng)返回匹配查詢的項(xiàng)目的計(jì)數(shù)(而非所述項(xiàng)目的屬性值)的布爾值)和/或lastevaluatedkey參數(shù)(其可以在掃描操作是可響應(yīng)于單個(gè)scan請求而返回信息的項(xiàng)目數(shù)的預(yù)定限制已被超過的掃描操作的延續(xù)時(shí)指定主鍵值用作所述掃描操作的開始點(diǎn))。scanapi輸入?yún)?shù)也可以包括scanfilter參數(shù),其可以指定施加篩選器于結(jié)果集合。如下文所述,scanfilter可以將一個(gè)或多個(gè)attibutename值映射到對應(yīng)scancondition結(jié)構(gòu)。在一些實(shí)施方案中,項(xiàng)目要匹配篩選器可能需要滿足所有指定掃描條件且所述掃描條件包括在結(jié)果集合中。在一些實(shí)施方案中,每個(gè)scancondition結(jié)構(gòu)可以指定匹配的條件且對應(yīng)attributesvalues參數(shù)可以包括將與掃描條件進(jìn)行比較的屬性值的清單。在一些實(shí)施方案中,可以使用具有下列值之一的comparisonoperator參數(shù)指定掃描條件:“eq”(即,等于)、“ne”(即,不等于)、“gt”(即,大于)、“ge”(即,大于或等于)、“l(fā)t”(即,小于)、“l(fā)e”(即,小于或等于)、"notnull"(即,屬性存在)、"null"(即,屬性不存在)、“contains”(即,多值屬性包括指定值)、“notcontains”(即,多值屬性不包括指定值)、"beginswith"、“in”(即,屬性匹配指定值之一)或"between"。在一些實(shí)施方案中,如果comparisonoperator是“eq”、“gt”、“ge”、“l(fā)t”、“l(fā)e”或"beginswith"之一,那么attributevalues參數(shù)中可以包括單個(gè)標(biāo)量值。如果comparisonoperator是“in”,那么所有指定屬性值可以是標(biāo)量且是相同類型。如果comparisonoperator是"between",那么attributevalues參數(shù)中可以包括兩個(gè)值。如果comparisonoperator是“contains”或“notcontains”,那么attributevalues參數(shù)可以是多值或標(biāo)量字符串(例如,對于標(biāo)量字符串屬性,所述比較可以轉(zhuǎn)化成對子字符串匹配的搜索)。如果comparisonoperator是"null"或"notnull",那么attributevalues參數(shù)可以是空白的(或空值),且為attributevalues參數(shù)提供任何值可以造成返回錯(cuò)誤指示。注意在一些實(shí)施方案中,可以按字典編輯對具有類型“字符串”(例如,具有表示為二進(jìn)制字符串的utf8字符串)的屬性進(jìn)行指定比較,且可以按數(shù)值對具有類型“數(shù)字”的屬性進(jìn)行指定比較。在一些實(shí)施方案中,可以包括指定用于"between"運(yùn)算符的所述兩個(gè)值,其中第一值小于第二值。"beginswith"運(yùn)算符可以是僅對標(biāo)量字符串有效的前置運(yùn)算符。在一些實(shí)施方案中,attributestoget參數(shù)可以包括屬性類型和其名稱。在一些實(shí)施方案中,如果未對掃描請求指定屬性名稱(且如果count參數(shù)是“假”),那么可以返回匹配掃描條件的項(xiàng)目的所有屬性。在一些實(shí)施方案中,如果count參數(shù)是“真”,那么可以不對響應(yīng)于掃描請求而由數(shù)據(jù)存儲(chǔ)系統(tǒng)返回的匹配項(xiàng)目數(shù)施加任何預(yù)定義限制。(在單個(gè)掃描請求中)將count參數(shù)設(shè)置成“真”和提供attributestoget的清單可能無效,且可能造成數(shù)據(jù)存儲(chǔ)系統(tǒng)返回錯(cuò)誤指示(例如,驗(yàn)證錯(cuò)誤的指示)。如上文提及,如果匹配單個(gè)掃描請求的項(xiàng)目數(shù)超過limit參數(shù)的值,那么當(dāng)達(dá)到限制時(shí)可以終止掃描操作。在這種情況下,數(shù)據(jù)存儲(chǔ)系統(tǒng)可以為多個(gè)匹配項(xiàng)目返回屬性值,直到返回limit參數(shù)的值為止,且可以包括可以用來(例如,通過包括lastevaluatedkey作為后續(xù)掃描請求的輸入)繼續(xù)進(jìn)行掃描操作的延續(xù)令牌(即,這個(gè)lastevaluatedkey參數(shù))。注意在一些實(shí)施方案中,數(shù)據(jù)存儲(chǔ)系統(tǒng)可以支持使用scanapi對響應(yīng)于掃描請求而返回的匹配項(xiàng)目數(shù)進(jìn)行全系統(tǒng)限制和/或(即,使用上述limit參數(shù))對匹配項(xiàng)目數(shù)進(jìn)行請求專用限制。在一些這樣的實(shí)施方案中,當(dāng)滿足這些限制中的任何一個(gè)時(shí)(例如,如果在滿足請求專用限制之前滿足全系統(tǒng)限制,或反之亦然)可以終止掃描操作并將延續(xù)令牌返回到請求器。注意在一些實(shí)施方案中,如上所述,響應(yīng)于scan請求而執(zhí)行的掃描程序可能并非一致讀取操作。換句話說,掃描結(jié)果中可以不包括當(dāng)發(fā)生掃描時(shí)已“掃描”的數(shù)據(jù)的變化。另一方面,如上所述,響應(yīng)于query請求而執(zhí)行的查詢程序可以默認(rèn)是最終一致讀取操作,且可以支持指定應(yīng)將查詢執(zhí)行為一致讀取操作的選項(xiàng)。注意,在一些情況下,最終一致讀取可能未反映最近完成的putitem或updateitem操作的結(jié)果。在一些實(shí)施方案中,scan請求的返回參數(shù)可以包括items參數(shù)(其可以包括項(xiàng)目的數(shù)組,其中的每個(gè)包括匹配指定掃描條件的屬性值的映射)、count參數(shù)(其可以指示響應(yīng)中表示的項(xiàng)目數(shù))、scannedcount參數(shù)(其可以指示響應(yīng)于scan請求而掃描的項(xiàng)目數(shù))和/或lastevaluatedkey參數(shù)(如上所述,其可以指定在達(dá)到對響應(yīng)于單個(gè)掃描請求而返回屬性的項(xiàng)目數(shù)的預(yù)定限制之前的掃描操作期間評估的最后項(xiàng)目的主鍵值)。如上文提及,如果已超過對可響應(yīng)于單個(gè)掃描請求而返回關(guān)于其信息的項(xiàng)目的數(shù)量的預(yù)定限制,那么lastevaluatedkey參數(shù)的值可以用作掃描操作的延續(xù)的開始點(diǎn)。注意在一些實(shí)施方案中,對于scanapi,響應(yīng)中總是可以返回count參數(shù)而不論是否也返回匹配項(xiàng)目(和/或其屬性)。正如由數(shù)據(jù)存儲(chǔ)服務(wù)提供的其它api,在不同實(shí)施方案中,scan請求和/或響應(yīng)可以以json請求/響應(yīng)格式或另一合適的格式呈現(xiàn)。根據(jù)一個(gè)實(shí)施方案,下文發(fā)現(xiàn)對數(shù)據(jù)存儲(chǔ)服務(wù)的請求和接收自數(shù)據(jù)存儲(chǔ)服務(wù)且對應(yīng)于scanapi的響應(yīng)的實(shí)例。根據(jù)一個(gè)實(shí)施方案,下文實(shí)例示出可以用來檢索存儲(chǔ)在稱作“pictures”的表格中的所有項(xiàng)目(其創(chuàng)建于“2009-12-12t10:30:30z”之后且具有分級"*"或"*****"(例如,最佳和最壞可用分級值))的標(biāo)題和創(chuàng)建日期和對應(yīng)響應(yīng)。示例性請求格式示例性響應(yīng)格式圖14中的流程圖示出用于執(zhí)行表格掃描操作(諸如由本文中描述的scanapi定義的一個(gè)表格掃描操作)的方法的一個(gè)實(shí)施方案。注意在一些實(shí)施方案中,掃描整個(gè)表格可以涉及掃描兩個(gè)或更多個(gè)分區(qū),這些分區(qū)可以托管在兩個(gè)或更多個(gè)物理計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上。如1410處示出,在這個(gè)實(shí)例中,所述方法可以包括接收掃描非關(guān)系數(shù)據(jù)庫中的表格(例如,代表數(shù)據(jù)存儲(chǔ)服務(wù)客戶端維護(hù)的表格)并返回一個(gè)或多個(gè)項(xiàng)目和/或其屬性的服務(wù)請求。如在先前實(shí)例中,掃描請求可以包括表格名稱(其可以識(shí)別是掃描請求的目標(biāo)的表格)。請求也可以指定要返回值的一個(gè)或多個(gè)屬性和/或一個(gè)或多個(gè)條件(通過其篩選或排序掃描操作的結(jié)果)。如果所述請求指定篩選準(zhǔn)則(示為1420的肯定退出),那么所述方法可以包括掃描表格和對篩選準(zhǔn)則評估項(xiàng)目(如1430)。如上所述,篩選準(zhǔn)則可以為表格中的項(xiàng)目的各種屬性指定值、條件或值的范圍。如果項(xiàng)目的屬性值滿足指定篩選準(zhǔn)則(示為1440的肯定退出),且所述請求指定響應(yīng)中要返回值的一個(gè)或多個(gè)屬性(示為1450的肯定退出),那么項(xiàng)目中的指定屬性的值可以包括在掃描請求的結(jié)果集合中(如1460)。如果項(xiàng)目的屬性值滿足指定篩選準(zhǔn)則(示為1440的肯定退出),但是所述請求未指定響應(yīng)中要返回值的任何屬性(示為1450的否定退出),那么項(xiàng)目中的所有屬性的值可以包括在掃描請求的結(jié)果集合中(如1470)。如果項(xiàng)目的屬性值不滿足指定篩選準(zhǔn)則(示為1440的否定退出),那么項(xiàng)目(即,其屬性值)可以不包括在掃描請求的結(jié)果集合中。如果要處理更多項(xiàng)目(即,對指定篩選準(zhǔn)則掃描和/或評估更多項(xiàng)目)且仍不滿足掃描限制(例如,對可掃描或可響應(yīng)于單個(gè)掃描請求而返回結(jié)果的項(xiàng)目數(shù)的預(yù)定限制)(示為1480的肯定退出),那么可以對表格中的額外項(xiàng)目重復(fù)示為1440、1450、1460、1470和/或1480的操作直到?jīng)]有更多項(xiàng)目要檢查為止或直到達(dá)到這種掃描限制為止。這在圖14中由從1480到1440的反饋加以示出。如圖14中示出,一旦處理了表格中的所有項(xiàng)目或滿足了響應(yīng)于單個(gè)掃描請求而掃描和/或返回的項(xiàng)目數(shù)的預(yù)定限制(示為1480的否定退出),所述方法就可以包括返回對請求器的響應(yīng)(如1490)。如1490中所示且下文更詳細(xì)地描述,在一些情況下,響應(yīng)于單個(gè)scan請求而返回到請求器的結(jié)果可以僅包括滿足指定準(zhǔn)則的項(xiàng)目和/或?qū)傩灾档牟糠?。如果所述請求未指定任何篩選準(zhǔn)則(示為1420的否定退出),但是所述請求指定要返回值的一個(gè)或多個(gè)屬性(示為1425的肯定退出),那么結(jié)果集合可以包括表格中的所有項(xiàng)目的指定屬性的值。換句話說,在這種情況下,這個(gè)掃描操作的完整的結(jié)果集合將包括表格中的所有項(xiàng)目的指定屬性的值。然而,應(yīng)注意,在一些實(shí)施方案中,響應(yīng)于單個(gè)掃描請求可能不會(huì)返回(或甚至不一定找到)所有這些結(jié)果(例如,如果對響應(yīng)于單個(gè)掃描請求而掃描和/或返回的項(xiàng)目數(shù)的預(yù)定限制已被指定用于所述請求或由全系統(tǒng)或客戶端專用參數(shù)指定)。例如,表格中的第一項(xiàng)目的指定屬性的值可以包括在結(jié)果集合中(如1435),且如果有其它項(xiàng)目要處理且仍未達(dá)到掃描限制(示為1455的肯定退出),那么一個(gè)或多個(gè)其它項(xiàng)目的指定屬性可以包括在結(jié)果集合中。這在圖14中由從1455到1425的反饋加以示出。一旦將所有項(xiàng)目的指定屬性添加到結(jié)果集合或達(dá)到掃描限制(示為1455的否定退出),那么可以將包括結(jié)果集合的至少一部分的響應(yīng)返回到請求器(如1490)。類似地,如果所述請求未指定任何篩選準(zhǔn)則(示為1420的否定退出)且所述請求未指定要返回值的任何屬性(示為1425的否定退出),那么結(jié)果集合可以包括表格中的所有項(xiàng)目的所有屬性的值。換句話說,在這種情況下,這個(gè)掃描操作的完整的結(jié)果集合將包括表格中的所有項(xiàng)目的所有屬性的值。例如,表格中的第一項(xiàng)目的所有屬性的值可以包括在結(jié)果集合中(如1445),且如果有其它項(xiàng)目要處理且仍未達(dá)到掃描限制(示為1455的肯定退出),那么一個(gè)或多個(gè)其它項(xiàng)目的所有屬性可以包括在結(jié)果集合中。這再次在圖14中由從1455到1425的反饋加以示出。在這種情況下,一旦將所有項(xiàng)目的所有屬性添加到結(jié)果集合或達(dá)到掃描限制(示為1455的否定退出),那么可以將包括結(jié)果集合的至少一部分的響應(yīng)返回到請求器(如1490)。如這個(gè)實(shí)例中示出,在一些實(shí)施方案中,響應(yīng)于單個(gè)掃描請求可能不會(huì)返回(或甚至不一定找到)掃描操作的所有結(jié)果。上述scanapi和queryapi的使用可以通過下列實(shí)例(即,通過下文的偽代碼)來進(jìn)一步示出。在第一實(shí)例中,請求掃描表格,且所述請求指定要返回掃描項(xiàng)目的id值。在第二實(shí)例中,請求掃描表格并篩選結(jié)果以返回具有小于10的主鍵id值的所有項(xiàng)目。如上文提及,如果在找到、收集和返回請求的完整結(jié)果之前滿足了響應(yīng)于單個(gè)scan或query請求而掃描和/或返回的項(xiàng)目數(shù)的預(yù)定限制,那么可以提前終止操作且響應(yīng)可以僅包括在達(dá)到預(yù)定限制之前檢索的項(xiàng)目和/或?qū)傩灾?。在一些?shí)施方案中,響應(yīng)可以包括可用作可以被發(fā)出來繼續(xù)掃描或查詢表格并根據(jù)原始scan或query請求的參數(shù)返回額外項(xiàng)目和/或?qū)傩缘暮罄m(xù)scan或query請求的輸入的信息。例如,響應(yīng)可以包括lastevaluatedkey參數(shù)值或另一延續(xù)令牌,其然后可以被包括作為后續(xù)scan或query請求的對應(yīng)輸入?yún)?shù)值。在一些情況下,可能需要按次序執(zhí)行兩個(gè)或更多個(gè)后續(xù)scan或query請求以為掃描或查詢操作找到和/或收集并返回完整的結(jié)果集合。圖15示出根據(jù)一個(gè)實(shí)施方案的用于執(zhí)行指定了掃描或響應(yīng)限制的查詢或掃描操作的方法。如1510處示出,在這個(gè)實(shí)例中,所述方法包括接收針對非關(guān)系數(shù)據(jù)庫中的表格(例如,由數(shù)據(jù)存儲(chǔ)服務(wù)代表一個(gè)或多個(gè)存儲(chǔ)服務(wù)客戶端維護(hù)的表格)中的一個(gè)或多個(gè)項(xiàng)目的查詢或掃描請求。如這個(gè)實(shí)例中示出,所述請求可以取決于指定請求參數(shù)(例如,查詢條件、散列鍵屬性值、范圍鍵條件、掃描條件等)而針對表格的給定分區(qū)(如1515)。如果由所述請求評估的項(xiàng)目滿足所述請求的條件或參數(shù),那么所述項(xiàng)目的一個(gè)或多個(gè)屬性(例如,所有屬性的值或所述請求中指定的任何屬性的值)可以包括在所述請求的結(jié)果集合中(如1520)。如果不滿足所述請求的掃描或響應(yīng)限制(示為1525的否定退出)且如果分區(qū)中存在滿足所述請求的條件或參數(shù)的更多項(xiàng)目(示為1530的肯定退出),那么可以將滿足所述請求條件或參數(shù)的另一項(xiàng)目(如果存在)的一個(gè)或多個(gè)屬性值添加到結(jié)果集合。這在圖15中由從1530到1520的反饋加以示出。如果不滿足所述請求的掃描或響應(yīng)限制(示為1525的否定退出),但是當(dāng)前檢查的分區(qū)中不存在滿足所述請求的條件或參數(shù)的更多項(xiàng)目(示為1530的否定退出)且有更多分區(qū)要查詢或掃描(示為1535的肯定退出),那么所述方法可以包括使所述請求針對另一分區(qū)以繼續(xù)掃描或查詢操作。這在圖15中由從1535到1515的反饋加以示出。在這個(gè)實(shí)例中,所述方法可以包括一次或多次重復(fù)1515至1535中示出的操作、將滿足所述請求條件或參數(shù)的其它項(xiàng)目(如果有)的一個(gè)或多個(gè)屬性值添加到結(jié)果集合。這在圖15中由從1530到1520的反饋加以示出。如果掃描或查詢操作在達(dá)到所述請求的掃描或響應(yīng)限制之前完成(示為1535的否定退出),那么所述方法可以包括將包括完整的結(jié)果集合和成功地完成掃描或查詢操作的指示的響應(yīng)返回到請求器(如1540)。在某個(gè)時(shí)刻,如果達(dá)到所述請求的掃描或響應(yīng)限制(示為1525的肯定退出),那么所述方法可以包括提前終止掃描或查詢操作(即,在找到和/或收集完整的結(jié)果集合之前)和將包括部分結(jié)果(在達(dá)到掃描或響應(yīng)限制之前收集在結(jié)果集合中的結(jié)果)和延續(xù)令牌(諸如lastevaluatedkey參數(shù)值)的響應(yīng)返回到請求器。這在圖15中于1545處加以示出。如果仍有更多項(xiàng)目要檢查(示為1550的肯定退出),那么可以開始后續(xù)查詢或掃描操作(包括延續(xù)令牌作為其輸入?yún)?shù)之一)。這個(gè)后續(xù)查詢或掃描操作將在終止先前操作的點(diǎn)處開始掃描或查詢表格(如1560中所示)。如果在達(dá)到限制并終止操作之后沒有更多項(xiàng)目要檢查(示為1550的否定退出),那么可以完成掃描或查詢操作(如1570)。上文已描述可以由本文中的數(shù)據(jù)存儲(chǔ)系統(tǒng)中支持的api中的各種api返回的錯(cuò)誤指示中的一些。下文的表格9中列出其它錯(cuò)誤指示。表格9-錯(cuò)誤清單注意在一些實(shí)施方案中,由服務(wù)支持的api中的任何一個(gè)可以返回下列錯(cuò)誤指示,而這些api中的特定api可以返回其它錯(cuò)誤指示。●invalidpurametervalue●missingparametervalue●internalfailure●serviceunavailable在一些實(shí)施方案中,本文中描述為用于代表數(shù)據(jù)存儲(chǔ)服務(wù)客戶端維護(hù)并管理表格(包括本文中描述的元數(shù)據(jù)表格中的任何一個(gè))的元數(shù)據(jù)中的任何一個(gè)或所有可以存儲(chǔ)在與存儲(chǔ)客戶端和/或用戶表格的存儲(chǔ)裝置相同的可擴(kuò)展數(shù)據(jù)存儲(chǔ)裝置(例如,相同非關(guān)系數(shù)據(jù)庫)中。在此類實(shí)施方案中,系統(tǒng)可以包括或采用一個(gè)或多個(gè)自舉機(jī)制以輔助初始化數(shù)據(jù)存儲(chǔ)服務(wù)(和/或?qū)嵤?shù)據(jù)存儲(chǔ)服務(wù)的底層系統(tǒng)),本文中描述了其中的一些。圖16示出根據(jù)一個(gè)實(shí)施方案的用于這個(gè)系統(tǒng)的數(shù)據(jù)模型的一部分。在這個(gè)實(shí)例中,各種計(jì)算節(jié)點(diǎn)(在數(shù)據(jù)模型中簡單地表示為“節(jié)點(diǎn)1610”)可以存儲(chǔ)用戶數(shù)據(jù)(例如,存儲(chǔ)在代表用戶維護(hù)的表格中)和/或系統(tǒng)數(shù)據(jù),包括由數(shù)據(jù)存儲(chǔ)服務(wù)使用的元數(shù)據(jù)(諸如上文描述的元數(shù)據(jù))。因此,數(shù)據(jù)模型的每個(gè)節(jié)點(diǎn)1610可以包括節(jié)點(diǎn)類型(示為節(jié)點(diǎn)類型1615)的指示符。例如,在一個(gè)實(shí)施方案中,每個(gè)節(jié)點(diǎn)可以被指定為“存儲(chǔ)節(jié)點(diǎn)”、“請求路由器”、“自動(dòng)管理”節(jié)點(diǎn)或“分段”節(jié)點(diǎn)。在一些實(shí)施方案中,“存儲(chǔ)節(jié)點(diǎn)”可以將用戶數(shù)據(jù)存儲(chǔ)在由數(shù)據(jù)存儲(chǔ)服務(wù)維護(hù)的一個(gè)或多個(gè)表格中,但是元數(shù)據(jù)(例如,存儲(chǔ)在tables表格、訂戶表格、分區(qū)表格或節(jié)點(diǎn)表格中的一個(gè)或多個(gè)中的數(shù)據(jù))可以托管在其它類型的節(jié)點(diǎn)(例如,“自動(dòng)管理”節(jié)點(diǎn)和/或“分段”節(jié)點(diǎn))上。在其它實(shí)施方案中,這種元數(shù)據(jù)可以存儲(chǔ)在一個(gè)或多個(gè)“存儲(chǔ)節(jié)點(diǎn)”上,其中的一些也可以存儲(chǔ)用戶數(shù)據(jù)。如圖16中示出,每個(gè)節(jié)點(diǎn)1610也可以包括節(jié)點(diǎn)的識(shí)別符(示為node-id1620)和一個(gè)或多個(gè)其它元素(示為1630)。如圖16中示出,關(guān)于每個(gè)副本的信息可以在數(shù)據(jù)模型中被表示為副本1640。數(shù)據(jù)模型中的每個(gè)副本1640可以包括上面托管副本的節(jié)點(diǎn)的識(shí)別符(再次示為node-id1620)和指示包括在所述副本中的分區(qū)的一個(gè)或多個(gè)分區(qū)識(shí)別符(示為partition-id1635)。在這個(gè)實(shí)例中,每個(gè)分區(qū)可以在數(shù)據(jù)模型中被表示為分區(qū)1650且可以包括其partition-id1655。如圖16中由各種一對多映射示出,每個(gè)節(jié)點(diǎn)可以托管多個(gè)副本,且每個(gè)分區(qū)可以包括在多個(gè)副本中。在一些實(shí)施方案中,本文中描述的系統(tǒng)可以支持“完全無共享”類型架構(gòu)中的用戶表格的無縫擴(kuò)展。例如,在一些實(shí)施方案中,每個(gè)分區(qū)可以被實(shí)施為完全獨(dú)立并行計(jì)算單元。在此類實(shí)施方案中,系統(tǒng)可以不提供跨分區(qū)的分布式協(xié)作或支持批量“放置(put)”操作和/或多語義事務(wù)。在一些實(shí)施方案中,只要工作量分布跨分區(qū)充分展開,分區(qū)數(shù)量的增加就可以造成服務(wù)請求的可用表格大小較大和/或吞吐量容量增加。如本文中所述,在一些實(shí)施方案中,現(xiàn)場再分區(qū)(無論是否以編程方式/自動(dòng)或顯式起始)可以用來適應(yīng)工作量變化。換句話說,在一些實(shí)施方案中,當(dāng)繼續(xù)接收并處理針對受影響的分區(qū)的服務(wù)請求(即,未使源分區(qū)離線)時(shí)可以執(zhí)行再分區(qū)(包括分區(qū)移動(dòng)、分區(qū)劃分和其它再分區(qū)操作)。在不同實(shí)施方案中,數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))可以支持各種服務(wù)供應(yīng)和/或吞吐量模型。例如,在一些實(shí)施方案中,服務(wù)可以支持既定吞吐量供應(yīng)和/或盡力而為服務(wù)供應(yīng)。在一些實(shí)施方案中,存儲(chǔ)服務(wù)客戶端(例如,訪問服務(wù)的客戶端應(yīng)用、用戶或訂戶)可以根據(jù)各種商業(yè)模型、訂購類型和/或支付模型在由服務(wù)供應(yīng)的多個(gè)吞吐量選項(xiàng)之間指定優(yōu)選。例如,在一些實(shí)施方案中,客戶端/用戶可以通過創(chuàng)建特定表格的請求的參數(shù)指示所述表格的優(yōu)選吞吐量模型。在其它實(shí)施方案中,客戶端/用戶可以為由數(shù)據(jù)存儲(chǔ)服務(wù)代表客戶端/用戶創(chuàng)建并維護(hù)的所有表格指定默認(rèn)吞吐量模型。通過均支持既定吞吐量模型和盡力而為吞吐量模型(不保證吞吐量)兩者,系統(tǒng)可以允許客戶端/用戶根據(jù)其要求和/或負(fù)擔(dān)來平衡性能和成本。提供既定吞吐量供應(yīng)的數(shù)據(jù)存儲(chǔ)服務(wù)(和底層系統(tǒng))可以被配置來響應(yīng)于針對代表客戶端/用戶維護(hù)的表格的通信量而為所述表格的創(chuàng)建、擴(kuò)大和管理預(yù)分配容量和/或資源,且不會(huì)忽略上面維護(hù)表格的存儲(chǔ)節(jié)點(diǎn)的資源和/或容量。在一些實(shí)施方案中,在既定吞吐量模型下由服務(wù)(和底層系統(tǒng))維護(hù)的表格可以維護(hù)在更快(且通常更昂貴)的存儲(chǔ)器(諸如高性能介質(zhì)(例如,快閃存儲(chǔ)器或固態(tài)驅(qū)動(dòng)器或ssd介質(zhì)))中,以在為來自客戶端/用戶的請求服務(wù)時(shí)提供極低等待時(shí)間。例如,系統(tǒng)可以將快速/本地存儲(chǔ)器的高比率提供到主(例如,磁盤)存儲(chǔ)器以維護(hù)所述表格(和其各個(gè)分區(qū))(且使快速/本地存儲(chǔ)器的高比率專用于主(例如,磁盤)存儲(chǔ)器以維護(hù)所述表格(和其各個(gè)分區(qū)))。雖然在既定吞吐量模型下分配到給定表格的存儲(chǔ)器在一些情況下可能未充分利用(至少某些時(shí)刻),但是客戶端/用戶可以估價(jià)由既定吞吐量模型提供的可預(yù)測性能超過專用多于所述表格中可能總是需要的資源的額外(且在一些情況下浪費(fèi))成本。注意在各種實(shí)施方案中,可以就服務(wù)請求將表格作為目標(biāo)時(shí)所作出的工作來指定用于給定表格(或客戶端/用戶)的既定吞吐量水平。例如,對表格進(jìn)行的讀取訪問可能僅需要一次i/o訪問(例如,讀取表格的數(shù)據(jù)文件),而對表格進(jìn)行的寫入訪問(例如,添加、刪除或修改表格中的項(xiàng)目或項(xiàng)目屬性的訪問)可能需要至少兩次i/o訪問(例如,記錄寫入訪問且然后執(zhí)行訪問)。此外,如本文中所述,一些個(gè)別服務(wù)請求可以讀取和/或?qū)懭氡砀裰械亩鄠€(gè)項(xiàng)目和/或項(xiàng)目屬性。因此,可以就規(guī)格化邏輯工作單元在時(shí)間上的測量(諸如就“每秒鐘的邏輯服務(wù)請求單元”)指定既定吞吐量水平,而非就每秒鐘的i/o操作次數(shù)(iops)或每秒鐘的服務(wù)請求次數(shù)(即,api調(diào)用)指定既定吞吐量。在一個(gè)實(shí)例中,造成讀取訪問將表格中的單個(gè)項(xiàng)目作為目標(biāo)的服務(wù)請求可以被認(rèn)為需要(或消耗)一個(gè)邏輯服務(wù)請求單元,而造成寫入訪問將表格中的單個(gè)項(xiàng)目作為目標(biāo)的服務(wù)請求可以被認(rèn)為需要(或消耗)兩個(gè)或三個(gè)邏輯服務(wù)請求單元。在另一實(shí)例中,可以為讀取請求和寫入請求指定不同的吞吐量水平,或可以基于由讀取請求和寫入請求訪問的項(xiàng)目的大小來使由所述請求消耗的邏輯服務(wù)請求單元規(guī)格化。一般來說,可以就邏輯服務(wù)請求單元使由包括多個(gè)讀取和/或?qū)懭朐L問的服務(wù)請求(例如,可以返回從0至1mb數(shù)據(jù)的任何大小數(shù)據(jù)的查詢或掃描請求)作出的工作模型化,這可以取決于為所述請求服務(wù)所需要的邏輯工作單元的數(shù)量和/或由所述請求中的每個(gè)訪問的一個(gè)或多個(gè)項(xiàng)目的大小。在各種實(shí)施方案中,當(dāng)為所述請求服務(wù)時(shí)實(shí)際執(zhí)行的物理i/o操作(例如,存儲(chǔ)器訪問)的次數(shù)可以是固定的或變化為所述請求服務(wù)時(shí)所需要(或消耗)的邏輯服務(wù)請求單元的數(shù)量的倍數(shù)。例如,在一些實(shí)施方案中,當(dāng)為給定請求服務(wù)時(shí)執(zhí)行的物理i/o操作次數(shù)的數(shù)量級可以是為所述請求服務(wù)時(shí)所需要(或消耗)的邏輯服務(wù)請求單元的數(shù)量的兩倍。在一些實(shí)施方案中,在既定吞吐量模型下接收服務(wù)的客戶端/用戶可以積極主動(dòng)地請求和/或購買額外容量或資源,期望增加表格大小和/或服務(wù)請求通信量。例如,客戶端/用戶可以(例如,在創(chuàng)建表格的服務(wù)請求中)為針對表格的通信量指定每秒鐘10,000個(gè)邏輯服務(wù)請求單元的既定吞吐量水平。作為響應(yīng),數(shù)據(jù)存儲(chǔ)服務(wù)(和底層系統(tǒng))可以自動(dòng)地為表格創(chuàng)建20個(gè)分區(qū),且可以保留足夠的資源和/或容量以支持20個(gè)分區(qū)中的每個(gè)針對每秒鐘500個(gè)邏輯服務(wù)請求單元。在一些實(shí)施方案中,這可以轉(zhuǎn)化為對物理存儲(chǔ)器(例如,磁盤)進(jìn)行數(shù)量級大約為1000次的i/o操作。在系統(tǒng)被配置來提供最初請求的既定吞吐量水平之后,客戶端/用戶可以請求臨時(shí)或永久增加或降低既定吞吐量水平,且作為響應(yīng),系統(tǒng)可以被配置來自動(dòng)地將資源/容量添加到保留用于表格的資源/容量或從保留用于表格的資源/容量中移除資源/容量以修改保留的資源/容量的量,使得其與所請求的修改相當(dāng)。在一些實(shí)施方案中,提供既定吞吐量模型的系統(tǒng)可以允許選用突發(fā)以支持通信量在既定吞吐量水平以外短期增加或上升。例如,系統(tǒng)可以被配置來自動(dòng)地接受額外邏輯服務(wù)請求單元和為額外邏輯服務(wù)請求單元服務(wù)直到預(yù)定突發(fā)允許水平為止(在此之后,可以接受或可以不接受額外邏輯服務(wù)請求單元和為額外邏輯服務(wù)請求單元服務(wù)),且可以為表格保留足夠的資源以能夠處理等于既定吞吐量水平加上突發(fā)允許水平的通信量。在其它實(shí)施方案中,系統(tǒng)可以僅適當(dāng)?shù)亟邮茴~外邏輯服務(wù)請求單元和為額外邏輯服務(wù)請求單元服務(wù)(例如,如果資源和容量可用),但是并不對為所述額外邏輯服務(wù)請求單元服務(wù)做任何保證。在其它實(shí)施方案中,系統(tǒng)可以嚴(yán)格地限制在對應(yīng)于既定吞吐量水平的量下接受和服務(wù)的邏輯服務(wù)請求單元,在此之后可以抑制額外服務(wù)請求。在一個(gè)實(shí)例中,客戶端/用戶可以在需求按計(jì)劃或預(yù)期臨時(shí)突發(fā)或上升(例如,由于出售、促銷、宣傳、新品發(fā)布或可以引發(fā)針對表格或其分區(qū)的活動(dòng)增加的其它事件)之前或響應(yīng)于觀察到需求逐漸逼近當(dāng)前既定吞吐量水平而請求增加表格的既定吞吐量水平。在另一實(shí)例中,在準(zhǔn)備并觀察到給定表格的需求臨時(shí)增加時(shí),客戶端/用戶可以提交使既定吞吐量水平恢復(fù)到其初始水平或與正在按預(yù)期發(fā)展的需求相當(dāng)?shù)男滤?例如,表格的“新標(biāo)準(zhǔn)”)的請求。在一些實(shí)施方案中,數(shù)據(jù)存儲(chǔ)服務(wù)(和底層系統(tǒng))可以允許客戶端/用戶在需求下降之后(無論是否按計(jì)劃)“重新協(xié)商”表格的既定吞吐量水平,這可以允許客戶端/用戶減小與使多于隨后將需要的資源/容量的資源/容量的量反向相關(guān)聯(lián)的成本。在一些實(shí)施方案中,數(shù)據(jù)存儲(chǔ)服務(wù)(和底層系統(tǒng))可以允許客戶端/用戶請求在期望較高性能(即,較低等待時(shí)間)的高需求的初始周期之后在盡力而為吞吐量模型下而非既定吞吐量模型下管理給定表格。在此類實(shí)施方案中,可以(例如,基于客戶端/用戶估計(jì)的需求、歷史數(shù)據(jù)或全系統(tǒng)、賬號專用或客戶端專用默認(rèn)值)解除分配/不保留分配給或保留用于表格的資源/容量的部分,且可以適當(dāng)?shù)靥幚韺⑺霰砀褡鳛槟繕?biāo)的隨后接收到的服務(wù)請求(在資源/容量可用時(shí))。提供盡力而為吞吐量供應(yīng)的數(shù)據(jù)存儲(chǔ)服務(wù)(和底層系統(tǒng))可以被配置來在更多傳統(tǒng)的旋轉(zhuǎn)介質(zhì)(例如,磁盤介質(zhì))上運(yùn)行,這可以造成存儲(chǔ)成本較低但等待時(shí)間較高。當(dāng)在盡力而為吞吐量模型下管理表格時(shí),系統(tǒng)可以被配置來自動(dòng)對通信量或數(shù)據(jù)存儲(chǔ)量的增加作出響應(yīng)(即,不加重客戶端/用戶的管理負(fù)擔(dān)或不需要其介入),且可以抑制至少一些服務(wù)請求直到實(shí)行努力嘗試處理所述增加為止。例如,在一些實(shí)施方案中,系統(tǒng)可以被配置來在響應(yīng)于工作量變化而添加分區(qū)和/或響應(yīng)于通信量和/或數(shù)據(jù)量的增加而再分區(qū)由服務(wù)代表存儲(chǔ)服務(wù)客戶端(例如,用戶、訂戶或客戶端應(yīng)用)管理的數(shù)據(jù)時(shí)抑制傳入服務(wù)請求的至少一部分。雖然盡力而為吞吐量模型的成本對于客戶端/用戶來說可能較低,但是其無法與快速變化的工作量同步。換句話說,在針對盡力而為吞吐量模型下管理的給定表格的工作量可快速改變的情形下,(與將工作量未超過既定吞吐量水平或工作量的變化可預(yù)測且在需求增加之前通過修改既定吞吐量水平來積極主動(dòng)地處理的既定吞吐量模型下管理的表格作為目標(biāo)的應(yīng)用的性能相比)將給定表格作為目標(biāo)的應(yīng)用的總性能受損。圖17中的流程圖示出用于根據(jù)指定吞吐量模型代表數(shù)據(jù)存儲(chǔ)服務(wù)客戶端(例如,用戶、訂戶或客戶端應(yīng)用)創(chuàng)建并管理表格的方法的一個(gè)實(shí)施方案。如1710處示出,在這個(gè)實(shí)例中,所述方法可以包括實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)的組件接收在非關(guān)系數(shù)據(jù)庫中創(chuàng)建表格(例如,代表數(shù)據(jù)存儲(chǔ)服務(wù)的客戶端/用戶維護(hù)的表格)的服務(wù)請求。在一些實(shí)施方案中,客戶端/用戶可以對服務(wù)(或底層數(shù)據(jù)存儲(chǔ)裝置)提交創(chuàng)建表格的服務(wù)請求,所述表格符合包括用于指定當(dāng)為針對表格的請求服務(wù)時(shí)使用的吞吐量模型(例如,盡力而為吞吐量模型或既定吞吐量模型)的參數(shù)的api。在此類實(shí)施方案中,請求也可以包括尋求承諾的所請求吞吐量水平的指示。在一些實(shí)施方案中,數(shù)據(jù)存儲(chǔ)服務(wù)(和底層系統(tǒng))可以支持對當(dāng)代表客戶端/用戶創(chuàng)建新表格時(shí)使用的吞吐量模型使用全系統(tǒng)、賬號專用或客戶端專用默認(rèn)值。在一些這樣的實(shí)施方案中,創(chuàng)建表格的請求可以不包括吞吐量模型優(yōu)選的指示,但是可以包括尋求承諾的所請求吞吐量水平的指示。如果客戶端/用戶指定了既定吞吐量模型的優(yōu)選(示為1715的肯定退出),那么所述方法可以包括系統(tǒng)預(yù)分配足夠的容量和/或資源以支持針對這個(gè)表格和/或代表所述用戶維護(hù)的任何其它表格的通信量的所請求既定吞吐量水平(如1730)。例如,如果客戶端/用戶是已支付接收特定吞吐量承諾的特權(quán)的訂戶,那么系統(tǒng)可以預(yù)分配足夠的資源和/或容量以滿足所述承諾。注意在一些實(shí)施方案中,與分配給在盡力而為吞吐量模型下管理的表格的存儲(chǔ)器相比,分配給在既定吞吐量模型下管理的表格的存儲(chǔ)器可以包括更快速(且更昂貴)的存儲(chǔ)器。如果客戶端/用戶隨后請求增加吞吐量的承諾或請求減小既定吞吐量水平(如1750),那么系統(tǒng)可以被配置來給所述表格分配或解除分配容量和/或資源以與對既定吞吐量水平作出的所請求修改相當(dāng)(如1770)。例如,在一些實(shí)施方案中,客戶端/用戶可以能夠支付吞吐量的臨時(shí)或永久增加(因此修改所請求的既定吞吐量水平),且因此系統(tǒng)可以被配置來(例如,響應(yīng)于客戶端/用戶的賬號信息的改變)再分配資源和/或容量。在一些實(shí)施方案中,可以由創(chuàng)建表格的客戶端/用戶或另一特權(quán)用戶(即,被授權(quán)改變表格的配置的用戶)根據(jù)包括用于配置和/或再配置由數(shù)據(jù)存儲(chǔ)服務(wù)代表客戶端/用戶維護(hù)的表格的一個(gè)或多個(gè)參數(shù)的api作出這個(gè)請求。在一些實(shí)施方案中,在請求臨時(shí)增加容量和/或資源之后,客戶端/用戶可以就容量和/或資源請求(并接收)降低支持水平。如果用戶未指定既定吞吐量的優(yōu)選(例如,如果表格創(chuàng)建請求中指定盡力而為模型或當(dāng)代表客戶端/用戶創(chuàng)建新表格時(shí)使用的吞吐量模型的全系統(tǒng)、賬號專用或客戶端專用默認(rèn)值指示當(dāng)管理針對表格的請求時(shí)應(yīng)應(yīng)用盡力而為吞吐量模型)(示為1715的否定退出),那么所述方法可以包括系統(tǒng)分配容量和/或資源以支持針對表格的通信量的初始量和/或分布(如1740)。例如,如果用戶是未支付接收特定吞吐量承諾的特權(quán)的訂戶但是指示盡力而為吞吐量模型足夠滿足其要求的訂戶,那么系統(tǒng)可以基于盡力而為吞吐量模型分配初始量的資源和/或容量。在各種實(shí)施方案中,分配給新表格的資源和/或容量的初始量可以取決于這個(gè)和/或其它客戶端/用戶的服務(wù)請求的歷史數(shù)量和/或模式、由客戶端/用戶預(yù)測的服務(wù)請求的數(shù)量或分布(在一些實(shí)施方案中,其可以指定于表格創(chuàng)建請求中)、最初分配給新創(chuàng)建的表格的資源和/或容量的全系統(tǒng)、賬號專用或客戶端專用默認(rèn)值和/或其它因素。注意,在一些實(shí)施方案中,可以維護(hù)在盡力而為吞吐量模型下管理的表格的存儲(chǔ)器可能比維護(hù)在盡力而為吞吐量模型下管理的表格的存儲(chǔ)器更加便宜(且更緩慢)。如果系統(tǒng)檢測到通信量和/或數(shù)據(jù)量增加(例如,如果通信量增加造成系統(tǒng)不能為所有請求服務(wù)或存儲(chǔ)的數(shù)據(jù)量接近所分配容量)(示為1725的肯定退出),那么系統(tǒng)可以被配置來抑制請求直到額外容量和/或資源可置于適當(dāng)位置以支持通信量或數(shù)據(jù)量增加為止或除非額外容量和/或資源可置于適當(dāng)位置以支持通信量或數(shù)據(jù)量增加,否則系統(tǒng)可被配置來抑制請求(如1740)。例如,響應(yīng)于檢測到針對一個(gè)或多個(gè)表格(或其分區(qū))的通信量或表格中逼近表格(或其分區(qū))的當(dāng)前分配容量的數(shù)據(jù)量增加,那么系統(tǒng)可以被配置來自動(dòng)地添加分區(qū)、移動(dòng)分區(qū)或嘗試以其它方式再分區(qū)表格和/或一個(gè)或多個(gè)其它表格中的數(shù)據(jù)以在增加通信量或數(shù)據(jù)量水平時(shí)為客戶端/用戶服務(wù)。類似地,如果系統(tǒng)檢測到通信量和/或數(shù)據(jù)量降低(例如,維持一段時(shí)間)(示為1725的否定退出),那么系統(tǒng)可以被配置來移除或解除分配表格的容量和/或資源使得專用于表格的容量和/或資源的量更加符合所觀察到的需求(如1760)。例如,響應(yīng)于檢測到針對表格(或其一個(gè)或多個(gè)分區(qū))的通信量(或保持充分低于可由當(dāng)前分配的資源和容量支持的水平的通信量)或表格(或其一個(gè)或多個(gè)分區(qū))中充分低于表格或其分區(qū)的當(dāng)前分配的容量(且已持續(xù)至少預(yù)定時(shí)間段)的數(shù)據(jù)量降低,系統(tǒng)可以被配置來自動(dòng)地移除一個(gè)或多個(gè)分區(qū)、將多個(gè)分區(qū)折疊成單個(gè)分區(qū)、對一個(gè)或多個(gè)分區(qū)解除存儲(chǔ)器或吞吐量容量的分配或嘗試以其它方式再分區(qū)表格中的數(shù)據(jù)以使分配給表格的資源和容量更好地匹配所觀察到的需求。如圖17中示出,雖然通信量和/或數(shù)據(jù)量保持在可使用最初分配的容量和/或資源以合理的性能服務(wù)的范圍內(nèi)(示為1725和1745的否定退出),但是數(shù)據(jù)存儲(chǔ)服務(wù)(和底層系統(tǒng))可維持表格的初始容量和資源(如1780)。注意在各種實(shí)施方案中,可以按次序重復(fù)圖17中示出的任何或所有操作以創(chuàng)建并隨后維護(hù)由數(shù)據(jù)存儲(chǔ)服務(wù)管理的表格,同時(shí)使表格保持有效。注意在一些實(shí)施方案中,可以由最初分配資源且隨后響應(yīng)于改變由客戶端/用戶給出的條件和/或請求而修改所述分配的自動(dòng)管理實(shí)體執(zhí)行以下各項(xiàng)中的任何一個(gè)或所有:檢測到工作量或數(shù)據(jù)量的變化、抑制傳入服務(wù)請求和/或修改分區(qū)數(shù)量和/或所分配、保留或可用于給定表格的資源/容量的量。如上文提及,在使用既定吞吐量模型管理表格的各種實(shí)施方案中,系統(tǒng)可以允許修改所述表格的既定吞吐量水平,例如其可以允許臨時(shí)和/或永久改變既定吞吐量水平。圖18是示出用于為針對特定表格的請求服務(wù)同時(shí)維持或修改既定吞吐量水平的方法的一個(gè)實(shí)施方案的流程圖。如1810處示出,在這個(gè)實(shí)例中,數(shù)據(jù)存儲(chǔ)服務(wù)(或底層數(shù)據(jù)存儲(chǔ)裝置)可以在既定吞吐量模型下代表客戶端/用戶管理表格。注意在一些實(shí)施方案中,與分配給在盡力而為吞吐量模型下管理的表格的存儲(chǔ)器相比,分配用于在既定吞吐量模型下管理的表格的存儲(chǔ)器可以包括更快速(且更昂貴的)存儲(chǔ)器。在這個(gè)實(shí)例中,如果在某個(gè)時(shí)刻所觀察到的需求(就當(dāng)為將表格或其各個(gè)分區(qū)作為目標(biāo)的請求服務(wù)時(shí)的吞吐量來說)超過既定吞吐量水平(示為1820的肯定退出)且如果系統(tǒng)支持吞吐量中的一定量的突發(fā)和/或上升(例如,直到預(yù)定突發(fā)允許水平為止)(示為1830的肯定退出),那么所述方法可以包括系統(tǒng)為額外需求的至少一部分服務(wù)(為額外吞吐量服務(wù)直到預(yù)定突發(fā)允許為止)(如1840)。在這個(gè)實(shí)例中,假設(shè)為表格保留額外資源以滿足既定吞吐量水平和預(yù)定突發(fā)允許水平。在其它實(shí)施方案中,可以僅適當(dāng)?shù)刂С滞掏铝恐械耐话l(fā)或上升(例如,如果并非保留用于表格的資源和/或容量正好可用)。如圖18中示出,如果所觀察到的需求超過既定吞吐量水平(示為1820的肯定退出),但是系統(tǒng)不支持吞吐量中的突發(fā)和/或上升(示為1830的否定退出)且沒有存在足夠多的可用資源來為額外需求的至少一部分服務(wù)(示為1835的否定退出),那么所述方法可以包括系統(tǒng)抑制針對表格的服務(wù)請求以匹配既定吞吐量水平(如1845)。在一些實(shí)施方案中,如果需求超過既定吞吐量水平(示為1820的肯定退出)且系統(tǒng)不支持吞吐量中的突發(fā)和/或上升(示為1830的否定退出),但是存在足夠多的可用資源來為額外需求的至少一部分服務(wù)(示為1835的肯定退出),那么所述方法可以包括系統(tǒng)為額外需求的至少一部分服務(wù)(如1840)。換句話說,在一些實(shí)施方案中,可以適當(dāng)?shù)氐遣灰欢ūWC為任何額外需求(超過既定吞吐量水平的需求)服務(wù)。如上文提及,在一些實(shí)施方案中,為超過吞吐量水平的請求服務(wù)(無論是否通過用于允許突發(fā)/上升的策略或適當(dāng)?shù)?可以在用于提供既定吞吐量水平的費(fèi)用以外對客戶端/用戶賬號造成額外費(fèi)用。如這個(gè)實(shí)例中示出,如果所觀察到的需求沒有超過既定吞吐量水平(示為1820的否定退出),但是接收到指示增加既定吞吐量水平的請求的服務(wù)請求(如1850),那么所述方法可以包括系統(tǒng)添加一個(gè)或多個(gè)分區(qū)和/或額外資源/容量以支持按請求增加既定吞吐量水平(如1855)。例如,如果客戶端/用戶希望臨時(shí)或永久增加需求(就當(dāng)為將表格作為目標(biāo)的請求服務(wù)時(shí)的吞吐量來說),那么在一些實(shí)施方案中客戶端/用戶可以積極主動(dòng)地請求增加既定吞吐量水平使得系統(tǒng)將處理需求增加而不需要等待其對需求增加作出反應(yīng)。在一些實(shí)施方案中,如果希望(或觀察到)暫時(shí)地或響應(yīng)于在增加需求的時(shí)段之后降低需求而增加需求,那么客戶端/用戶可以請求降低既定吞吐量水平(例如,降低到先前既定吞吐量水平或不同“新標(biāo)準(zhǔn)”既定吞吐量水平)。在這種情況下(1860處所示),系統(tǒng)可以被配置來移除一個(gè)或多個(gè)分區(qū)、將多個(gè)分區(qū)折疊成單個(gè)分區(qū)、對一個(gè)或多個(gè)分區(qū)解除存儲(chǔ)器或吞吐量容量的分配和/或嘗試再分區(qū)表格中的數(shù)據(jù)以使分配給表格的資源和容量更好地匹配降低的既定吞吐量水平(如1865)。注意在一些實(shí)施方案中,如果客戶端/用戶希望針對表格(和/或其各個(gè)分區(qū))的需求在表格有效的剩余時(shí)間內(nèi)保持相對較低的水平,那么客戶端/用戶可以在降低既定吞吐量水平的請求中指示其不再需要或希望對表格的吞吐量水平作出任何承諾(或?qū)?yīng)保證)。換句話說,所述請求可以指示既定吞吐量水平為零,這可以有效地指示當(dāng)隨后為針對表格的請求服務(wù)時(shí)使用盡力而為吞吐量模型而非既定吞吐量模型來管理表格的請求。這在圖18中由1870的肯定退出和元件1880加以示出。注意在一些實(shí)施方案中,與維護(hù)在盡力而為吞吐量模型下管理的表格的存儲(chǔ)器相比,維護(hù)在盡力而為吞吐量模型下管理的表格的存儲(chǔ)器可能更加便宜(且更緩慢)。如果降低既定吞吐量水平的請求沒有指示客戶端/用戶不再需要或希望對表格的吞吐量水平作出承諾(或?qū)?yīng)保證)(示為1870的否定退出),那么系統(tǒng)可以繼續(xù)使用既定吞吐量模型(例如,根據(jù)當(dāng)前既定吞吐量水平)來管理表格(如1875)。注意在各種實(shí)施方案中,可以按次序重復(fù)圖18中示出的任何或所有操作以創(chuàng)建并隨后維護(hù)由數(shù)據(jù)存儲(chǔ)服務(wù)管理的表格,同時(shí)使表格保持有效。在各種實(shí)施方案中,可能存在可能需要將分區(qū)(或其副本)(例如)從一個(gè)機(jī)器復(fù)制到另一機(jī)器的情形。例如,如果特定分區(qū)存在三個(gè)副本(每個(gè)托管在不同物理或邏輯機(jī)器上)且機(jī)器之一出現(xiàn)故障,那么托管在所述機(jī)器上的副本可能需要由另一機(jī)器上的分區(qū)的新副本替換。在另一實(shí)例中,如果托管一個(gè)或多個(gè)表格的多個(gè)分區(qū)的特定機(jī)器經(jīng)歷繁重的通信量,那么可以嘗試(使用復(fù)制操作)將被頻繁訪問的分區(qū)之一移動(dòng)到經(jīng)歷較少通信量的機(jī)器以更加均勻地分布系統(tǒng)工作量并改善性能。在一些實(shí)施方案中,本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)(和/或底層系統(tǒng))可以使用將整個(gè)分區(qū)從一個(gè)機(jī)器復(fù)制到另一機(jī)器而非逐行復(fù)制分區(qū)數(shù)據(jù)的快照(如在傳統(tǒng)邏輯數(shù)據(jù)庫分區(qū)復(fù)制操作中)的物理復(fù)制機(jī)制(例如,物理文件系統(tǒng)機(jī)制)執(zhí)行分區(qū)移動(dòng)。雖然分區(qū)已被復(fù)制,但是可以記錄將分區(qū)作為目標(biāo)的寫入操作。在復(fù)制操作期間,可以由追趕程序以周期性間隔(例如,在一系列核對點(diǎn))對分區(qū)施加任何記錄寫入操作。一旦將整個(gè)分區(qū)復(fù)制到目的地機(jī)器,就可以由最終追趕程序?qū)δ康牡胤謪^(qū)執(zhí)行任何剩余的記錄寫入操作(即,自從最后核對點(diǎn)之后執(zhí)行的任何寫入操作)。因此,與傳統(tǒng)分區(qū)移動(dòng)機(jī)制不同的是,目的地分區(qū)中的數(shù)據(jù)在完成分區(qū)移動(dòng)之后可以一致。圖19中的流程圖示出用于當(dāng)由數(shù)據(jù)存儲(chǔ)服務(wù)代表存儲(chǔ)服務(wù)客戶端維護(hù)的表格的分區(qū)“有效”時(shí)移動(dòng)(或復(fù)制)所述分區(qū)的副本的方法的一個(gè)實(shí)施方案。在這個(gè)實(shí)例中,所述方法可以包括實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)的組件接收移動(dòng)分區(qū)的副本的請求(如1910)。例如,系統(tǒng)可以包括從客戶端/用戶或系統(tǒng)管理員接收移動(dòng)副本的顯式請求,或可以響應(yīng)于檢測到異常(如下文更加詳細(xì)地描述)而在系統(tǒng)中自動(dòng)地生成這個(gè)請求。如1920處示出,響應(yīng)于接收到移動(dòng)分區(qū)的請求,系統(tǒng)可以被配置來在分區(qū)有效時(shí)(即,分區(qū)的一個(gè)或多個(gè)副本繼續(xù)接受針對所述分區(qū)的請求并為所述請求服務(wù)時(shí))創(chuàng)建新的副本(其可以被稱作目的地副本)。在一些實(shí)施方案中,創(chuàng)建目的地副本可以包括選擇上面將創(chuàng)建目的地副本的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置、將存儲(chǔ)器分配在用于目的地副本的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上、創(chuàng)建或更新與分區(qū)和/或目的地副本相關(guān)聯(lián)的元數(shù)據(jù)和/或執(zhí)行適用于創(chuàng)建目的地副本的其它功能。如這個(gè)實(shí)例中示出,所述方法可以包括在分區(qū)的副本有效時(shí)系統(tǒng)使用文件復(fù)制機(jī)制或另一物理復(fù)制機(jī)制將被移動(dòng)的副本復(fù)制到目的地副本(如1930)。換句話說,可以使用復(fù)制副本數(shù)據(jù)的物理位置的操作而非使用邏輯復(fù)制操作(例如,基于逐行讀取并復(fù)制表格數(shù)據(jù)的操作)來將副本復(fù)制到新的目的地副本。如1940處示出,在執(zhí)行物理復(fù)制操作之后,所述方法可以包括系統(tǒng)執(zhí)行追趕操作以調(diào)解副本數(shù)據(jù)的任何變化,所述變化是在復(fù)制操作期間作出但是仍未在新的副本中反映出來。下文更加詳細(xì)地描述這個(gè)追趕操作。一旦創(chuàng)建并填滿目的地副本,所述方法就可以包括引導(dǎo)通信量使其遠(yuǎn)離所復(fù)制的副本并朝向新的目標(biāo)副本(如1950)。在一些實(shí)施方案中,用于數(shù)據(jù)存儲(chǔ)服務(wù)的底層數(shù)據(jù)存儲(chǔ)裝置(例如,非關(guān)系數(shù)據(jù)庫)的存儲(chǔ)引擎可以將副本數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫文件中,且每個(gè)副本(和數(shù)據(jù)庫文件)可以與恢復(fù)日志相關(guān)聯(lián)。在此類實(shí)施方案中,當(dāng)接收到修改副本數(shù)據(jù)的服務(wù)請求時(shí),可以在將所述服務(wù)請求應(yīng)用于副本之前將所述服務(wù)請求記錄到恢復(fù)日志中。在節(jié)點(diǎn)故障或系統(tǒng)崩潰的情況下,可以將記錄到恢復(fù)日志中的變化再應(yīng)用于副本數(shù)據(jù)的先前快照或核對點(diǎn)以恢復(fù)副本的內(nèi)容。如上文提及,在一些實(shí)施方案中,數(shù)據(jù)存儲(chǔ)服務(wù)(和其底層系統(tǒng))可以支持采用物理復(fù)制機(jī)制的副本移動(dòng)。在一些這樣的實(shí)施方案中,物理復(fù)制機(jī)制可以采用這種日志,其可以確保移動(dòng)到新的目的地的副本數(shù)據(jù)一致。圖20示出用于使用如上所述的物理復(fù)制機(jī)制移動(dòng)副本的方法的一個(gè)實(shí)施方案。在這個(gè)實(shí)例中,所述方法開始將副本數(shù)據(jù)從其當(dāng)前物理存儲(chǔ)位置復(fù)制到對應(yīng)物理目的地位置(如2010)。在一些實(shí)施方案中,物理復(fù)制操作可以包括通過網(wǎng)絡(luò)將頁面從一個(gè)物理存儲(chǔ)裝置(例如,磁盤存儲(chǔ)裝置)復(fù)制到目的地存儲(chǔ)裝置。如2020處示出,如上所述,在物理復(fù)制操作期間,可以在將被移動(dòng)的副本作為目標(biāo)的寫入操作應(yīng)用于被復(fù)制的副本之前記錄所述寫入操作。在各種實(shí)施方案中,可以給每個(gè)記錄的寫入操作(或?qū)懭氩僮鹘M)指派日志序列號。在一些實(shí)施方案中,可以以周期性核對點(diǎn)間隔將記錄的變化應(yīng)用于被復(fù)制的副本。在圖20中示出的實(shí)例中,當(dāng)經(jīng)過預(yù)定核對點(diǎn)間隔時(shí)(示為2030的肯定退出),可以將自從最后核對點(diǎn)以后記錄的所有修改(例如,寫入操作)應(yīng)用于被復(fù)制的副本。因?yàn)樵趶?fù)制副本時(shí)應(yīng)用這些更新,所以這些修改中的一些(例如,在將副本數(shù)據(jù)的給定部分復(fù)制到目的地之前應(yīng)用于數(shù)據(jù)的所述部分的修改)由于復(fù)制操作將會(huì)在目的地副本中反映出來。在復(fù)制操作之后目的地副本中不一定反映其它修改(例如,在將副本數(shù)據(jù)的給定部分復(fù)制到目的地之后應(yīng)用于數(shù)據(jù)的所述部分的修改)。如圖20中示出,所述方法可以包括當(dāng)其未完成時(shí)(示為2050的否定退出、元件2060和到2020的反饋)繼續(xù)將副本數(shù)據(jù)從當(dāng)前物理存儲(chǔ)位置復(fù)制到對應(yīng)物理目的地位置。所述方法可以包括每當(dāng)經(jīng)過核對點(diǎn)間隔時(shí)(示為2030的肯定退出)時(shí)繼續(xù)記錄寫入操作(如2020)并將記錄的寫入操作應(yīng)用于被復(fù)制的副本(如2040)。一旦完成物理復(fù)制操作(示為2050的肯定退出),所述方法就可以包括執(zhí)行追趕操作,其中目的地副本中尚未反映出來的任何記錄的寫入操作應(yīng)用于目的地副本(如2070)。此后,可以將對副本的訪問引導(dǎo)遠(yuǎn)離源副本并引導(dǎo)朝向新的目的地副本。例如,可以將副本作為目標(biāo)的任何寫入操作記錄到目的地副本的恢復(fù)日志中,且隨后將所述寫入操作應(yīng)用于目的地副本(例如,在下一個(gè)周期性核對點(diǎn)處)。在一些實(shí)施方案中,在副本移動(dòng)到其新的目的地之后,可以復(fù)制(或直接使用)記錄源副本的修改的日志以用于目的地副本的恢復(fù)日志。在一些實(shí)施方案中,可以在分區(qū)劃分操作中采用上述分區(qū)移動(dòng)程序。例如,因?yàn)榉謪^(qū)較大(例如,當(dāng)其變得太大而不適合一個(gè)機(jī)器時(shí)和/或?yàn)榱耸狗謪^(qū)大小保持足夠小以在機(jī)器出現(xiàn)故障時(shí)(使用大量并行處理)快速重建托管在單個(gè)機(jī)器上的分區(qū)),所以可以劃分分區(qū)。當(dāng)分區(qū)變得太“熱”時(shí)(即,當(dāng)與其它分區(qū)相比其經(jīng)歷的通信量遠(yuǎn)大于通信量的平均量時(shí))也可以劃分分區(qū)。例如,如果給定分區(qū)的工作量突然和/或大幅改變,那么系統(tǒng)可以被配置來快速對改變作出反應(yīng)。在一些實(shí)施方案中,對于應(yīng)用和客戶端/用戶來說,本文中描述的分區(qū)劃分程序可能是透明的,這可以允許自動(dòng)地(即,不需要客戶端/用戶介入或開始)擴(kuò)展數(shù)據(jù)存儲(chǔ)服務(wù)。注意在一些實(shí)施方案中,因?yàn)橄到y(tǒng)可以利用上述文件復(fù)制程序來進(jìn)行副本移動(dòng),所以在集群中移動(dòng)分區(qū)的副本可能比劃分分區(qū)更快。另一方面,劃分分區(qū)可能需要在邏輯上將一個(gè)底層數(shù)據(jù)結(jié)構(gòu)(例如,一個(gè)平衡樹(b-tree))中的分區(qū)數(shù)據(jù)分成兩個(gè)這樣的數(shù)據(jù)結(jié)構(gòu)(例如,兩個(gè)b-tree),一般來說這比上述移動(dòng)整個(gè)副本的效率更低。因此,在一些實(shí)施方案中,分區(qū)劃分程序可以包括創(chuàng)建分區(qū)的額外副本,且此后僅管理每個(gè)分區(qū)上的分區(qū)數(shù)據(jù)的一半。例如,如果要?jiǎng)澐值慕o定分區(qū)存在三個(gè)副本,那么分區(qū)劃分程序可以包括(例如,使用上述分區(qū)移動(dòng)程序)創(chuàng)建整個(gè)分區(qū)的三個(gè)額外副本。可以將這些所得的六個(gè)副本劃分成每組均具有三個(gè)分區(qū)的兩個(gè)組,其中每個(gè)組可以負(fù)責(zé)使用將責(zé)任劃分在多組副本之間的操作來處理針對原始分區(qū)數(shù)據(jù)的一半的服務(wù)請求。例如,在劃分責(zé)任的操作之后,針對原始分區(qū)的指定部分中的數(shù)據(jù)的服務(wù)請求可以被給定副本接受且可以由給定副本服務(wù),而將原始分區(qū)的剩余數(shù)據(jù)作為目標(biāo)的服務(wù)請求則可能被所述副本拒絕。在一些實(shí)施方案中,可以最終移除不由給定副本負(fù)責(zé)的分區(qū)數(shù)據(jù)(例如,使得分配到其不再支持的數(shù)據(jù)副本的存儲(chǔ)器可以隨后用來將新項(xiàng)目存儲(chǔ)在副本中),或存儲(chǔ)分區(qū)數(shù)據(jù)的存儲(chǔ)器可以被系統(tǒng)收回(例如,使得分配到其不再支持的數(shù)據(jù)副本的存儲(chǔ)器可以隨后由另一分區(qū)使用)。移除不被支持的數(shù)據(jù)或收回存儲(chǔ)器可以通過后臺(tái)任務(wù)來執(zhí)行且不影響數(shù)據(jù)存儲(chǔ)系統(tǒng)的性能,且對于客戶端/用戶來說可以是透明的。在一些實(shí)施方案中,可以由分區(qū)id識(shí)別每個(gè)分區(qū),分區(qū)id可以是在創(chuàng)建分區(qū)時(shí)指派的唯一編號(例如,guid)。分區(qū)也可以具有每當(dāng)(例如,響應(yīng)于添加或移除副本,但是不一定響應(yīng)于主要的故障轉(zhuǎn)移)分區(qū)經(jīng)歷再配置時(shí)遞增的版本編號。當(dāng)劃分分區(qū)時(shí),可以創(chuàng)建兩個(gè)新的分區(qū),其中的每個(gè)可以具有各自新的分區(qū)id,且可以不再使用原始分區(qū)id。在一些實(shí)施方案中,可以響應(yīng)于條件改變而由系統(tǒng)使用劃分工具或程序來劃分分區(qū)。例如,自動(dòng)管理實(shí)體的計(jì)劃任務(wù)可以監(jiān)控分區(qū)大小和“熱量”(例如,針對每個(gè)分區(qū)的通信量),且可以應(yīng)用確定何時(shí)使用劃分工具/程序來執(zhí)行劃分的策略。在一些實(shí)施方案中,劃分工具和自動(dòng)管理實(shí)體可以通過采用封鎖管理程序來避免同時(shí)嘗試進(jìn)行兩次劃分。在一些實(shí)施方案中,監(jiān)控組件可以提供滿足劃分工具/程序的劃分準(zhǔn)則的分區(qū)清單。所述準(zhǔn)則可以基于分區(qū)大小和熱量,其中熱量可以由內(nèi)部測量的度量(諸如iops)、外部測量的度量(諸如等待時(shí)間)和/或其它因素追蹤。在一些實(shí)施方案中,劃分工具/程序可以從監(jiān)控組件接收劃分分區(qū)的請求,所述請求包括要?jiǎng)澐值姆謪^(qū)的分區(qū)id和版本編號和新分區(qū)/副本的位置的機(jī)器清單(例如,被認(rèn)為少量加載的相同集群或存儲(chǔ)倉(silo)中的機(jī)器)。包括版本編號作為劃分工具/程序的輸入可以確保劃分工具/程序不會(huì)嘗試劃分自從上一次針對劃分準(zhǔn)則評估分區(qū)以來已經(jīng)歷一次或多次再配置的分區(qū),因?yàn)閯澐止ぞ?程序可以在版本編號不匹配時(shí)拒絕所述請求。圖21中的流程圖示出用于劃分由數(shù)據(jù)存儲(chǔ)服務(wù)代表數(shù)據(jù)存儲(chǔ)客戶端維護(hù)的表格的分區(qū)的方法的一個(gè)實(shí)施方案。在這個(gè)實(shí)例中,所述方法可以包括實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)的組件接收劃分分區(qū)的請求(如2110)。例如,系統(tǒng)可以從客戶端/用戶或系統(tǒng)管理員接收劃分分區(qū)的顯式請求,或可以響應(yīng)于檢測到異常(如下文更詳細(xì)地描述)而在系統(tǒng)中自動(dòng)生成這樣的請求。如上所述,在一些實(shí)施方案中,劃分分區(qū)可以涉及創(chuàng)建分區(qū)的額外副本,且然后將總數(shù)個(gè)副本中的一半指定為原始分區(qū)的各自部分的管理程序。因此,如2120處示出,響應(yīng)于接收到劃分分區(qū)的請求,系統(tǒng)可以被配置來在源分區(qū)的原始副本中的一個(gè)或多個(gè)有效時(shí)(即,這些副本中的一個(gè)或多個(gè)繼續(xù)接受針對分區(qū)的請求并為所述請求服務(wù)時(shí))開始創(chuàng)建所述一個(gè)或多個(gè)新的分區(qū)(其可以被稱作目的地分區(qū))。如2130處示出,所述方法可以包括使用物理復(fù)制機(jī)制(諸如上文描述的機(jī)制)將源分區(qū)復(fù)制到目的地副本。例如,在一些實(shí)施方案中,系統(tǒng)可以被配置來使用文件復(fù)制機(jī)制將表格分區(qū)數(shù)據(jù)從分區(qū)的原始副本之一復(fù)制到目的地分區(qū)中的一個(gè)或多個(gè)。所述方法也可以包括(一旦新的副本被填滿)(例如,通過執(zhí)行如上所述的追趕操作)更新新的副本。如這個(gè)實(shí)例中示出,所述方法可以包括傳播特殊的“寫入”命令(即,“劃分”命令)以劃分分區(qū)并指定每個(gè)副本處理劃分分區(qū)的一個(gè)部分(如2140)。在一些實(shí)施方案中,當(dāng)劃分分區(qū)副本的命令傳播到上面托管六個(gè)副本的存儲(chǔ)節(jié)點(diǎn)時(shí),系統(tǒng)可以簡單地使源副本脫離使用。劃分命令可以命令通過指定由復(fù)制操作產(chǎn)生的副本中的每個(gè)副本屬于單詞的第一半或單詞的第二半來將所述副本劃分為兩半,因此形成兩個(gè)新的副本組。注意,在一些實(shí)施方案中,特殊的“劃分”命令可以不需要任何特殊的持續(xù)性。如這個(gè)實(shí)例中示出,一旦傳播了“劃分”命令并建立了兩個(gè)新的副本組,所述方法就可以包括新的副本組中的每個(gè)選擇新的主副本(如2150)。隨后,分區(qū)的所得副本中的一半(例如,原始副本或分區(qū)的所得副本的另一子集)可以處理針對原始分區(qū)的一個(gè)部分的請求,且其它副本(例如,目的地副本或分區(qū)的所得副本的另一子集)可以處理針對原始分區(qū)的剩余部分的請求(如2160)。例如,副本中的每個(gè)可以拒絕對現(xiàn)在其新的較小范圍(即,其不再負(fù)責(zé)的數(shù)據(jù)的一半)以外的數(shù)據(jù)的請求,且可以返回副本(或上面托管副本的節(jié)點(diǎn))不再托管所述數(shù)據(jù)的指示。如上所述,在一些實(shí)施方案中,系統(tǒng)可以被配置來對所得劃分分區(qū)副本的未使用部分執(zhí)行邏輯收回(如2170)。例如,由于接收到將新項(xiàng)目存儲(chǔ)在分區(qū)中的請求,可以將這些新項(xiàng)目存儲(chǔ)在表格中(在副本復(fù)制操作之后)擁有存儲(chǔ)在原始分區(qū)中的項(xiàng)目但現(xiàn)在被管理為不同分區(qū)的部分(即,由劃分創(chuàng)建的兩個(gè)分區(qū)中的另一個(gè))的位置中。在一些實(shí)施方案中,系統(tǒng)可以采用后臺(tái)程序以在邏輯上釋放所得分區(qū)副本中的每個(gè)內(nèi)的空間,但是如果將更多項(xiàng)目(根據(jù)其散列鍵屬性值和/或范圍鍵屬性值而指派到新的分區(qū)副本)添加到表格,那么隨后可以消耗所述空間。在一些實(shí)施方案中,可以執(zhí)行物理存儲(chǔ)器收回操作,這可以將在劃分之前先前分配到大的分區(qū)副本的存儲(chǔ)器的部分返回到操作系統(tǒng)。在此類實(shí)施方案中,也可以執(zhí)行消除分段操作。如上文提及,在一些實(shí)施方案中,可以響應(yīng)于在實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)中檢測到異常而自動(dòng)地(例如,以編程方式)開始圖19中示出且上文描述的分區(qū)移動(dòng)程序。圖22中的流程圖示出用于響應(yīng)于檢測到異常而移動(dòng)由數(shù)據(jù)存儲(chǔ)服務(wù)代表存儲(chǔ)服務(wù)客戶端維護(hù)的表格的分區(qū)的方法的一個(gè)實(shí)施方案。如2210處示出,在這個(gè)實(shí)例中,所述方法可以包括系統(tǒng)的組件檢測托管表格的分區(qū)的副本的物理計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上的故障或錯(cuò)誤。在一些實(shí)施方案中,如果托管在上面檢測到錯(cuò)誤或故障的節(jié)點(diǎn)上的分區(qū)副本是其副本組的主副本,那么所述方法可以包括為副本組選擇新的主副本(如2220)。在這個(gè)實(shí)例中,所述方法可以包括系統(tǒng)在源分區(qū)副本有效時(shí)(即,分區(qū)的副本中的一個(gè)或多個(gè)繼續(xù)接受針對分區(qū)的請求并為所述請求服務(wù)時(shí))開始創(chuàng)建替換分區(qū)副本(如2230)。如這個(gè)實(shí)例中示出,所述方法可以包括使用物理復(fù)制機(jī)制將源分區(qū)副本復(fù)制到新創(chuàng)建的替換分區(qū)副本(如2240),和執(zhí)行追趕操作以調(diào)解分區(qū)數(shù)據(jù)中仍未在新創(chuàng)建的替換分區(qū)副本中反映出來的任何變化(如2250)。例如,可以使用復(fù)制分區(qū)數(shù)據(jù)的物理位置的操作而非使用邏輯復(fù)制操作(例如,基于逐行讀取并復(fù)制表格數(shù)據(jù)的操作)來將源分區(qū)副本復(fù)制到替換分區(qū)副本。在各種實(shí)施方案中,(例如)取決于已檢測到的錯(cuò)誤的類型和/或嚴(yán)重性,錯(cuò)誤機(jī)器上的分區(qū)副本可以用作源分區(qū)副本,或(工作機(jī)器上)相同分區(qū)的另一副本可以用作源分區(qū)副本。如上文提及,在一些實(shí)施方案中,可以響應(yīng)于在實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)中檢測到異常而自動(dòng)地(例如,以編程方式)開始上文描述且圖19和圖20中示出的分區(qū)移動(dòng)程序和圖21中示出且上文描述的分區(qū)劃分程序。例如,如果作為數(shù)據(jù)存儲(chǔ)服務(wù)的基礎(chǔ)的系統(tǒng)中的特定計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上產(chǎn)生熱點(diǎn),那么系統(tǒng)可以被配置來劃分和/或移動(dòng)存儲(chǔ)在所述計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上的一個(gè)或多個(gè)分區(qū)副本。圖23中的流程圖示出用于響應(yīng)于檢測到熱點(diǎn)而劃分或移動(dòng)由數(shù)據(jù)存儲(chǔ)服務(wù)代表存儲(chǔ)服務(wù)客戶端維護(hù)的表格的分區(qū)的副本的方法的一個(gè)實(shí)施方案。如2310處示出,在這個(gè)實(shí)例中,所述方法可以包括系統(tǒng)的組件檢測托管表格的分區(qū)的特定副本的物理計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上的熱點(diǎn)。換句話說,系統(tǒng)可以檢測到與系統(tǒng)中的其它計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置相比,所述計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置正經(jīng)歷大量通信量。在一些情況下,這個(gè)繁重通信量中的所有或部分可能針對特定分區(qū)副本本身,而在其它情況下,繁重通信量可能針對托管在所述計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上的其它分區(qū)副本、表格或應(yīng)用。如這個(gè)實(shí)例中示出,響應(yīng)于檢測到熱點(diǎn),系統(tǒng)可以被配置來嘗試移動(dòng)和/或劃分特定分區(qū)以(諸如)通過減小等待時(shí)間、增加系統(tǒng)的總吞吐量或以其它方式改善數(shù)據(jù)存儲(chǔ)服務(wù)的性能來降低熱點(diǎn)的影響。如果熱點(diǎn)是由于將單個(gè)分區(qū)作為目標(biāo)的通信量而產(chǎn)生(示為2315的肯定退出),那么所述方法可以包括開始劃分所述分區(qū)。在一些實(shí)施方案中,系統(tǒng)可以被配置來在源分區(qū)的原始副本中的一個(gè)或多個(gè)有效時(shí)(即,這些副本中的一個(gè)或多個(gè)繼續(xù)接受針對分區(qū)的請求并為所述請求服務(wù)時(shí))開始創(chuàng)建一個(gè)或多個(gè)新的分區(qū)(其可以被稱作目的地分區(qū))(如2320)。例如,系統(tǒng)可以被配置來在加載量小于上面檢測到熱點(diǎn)的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上創(chuàng)建一個(gè)或多個(gè)目的地副本。如2330處示出,所述方法可以包括使用(諸如上文描述的)物理復(fù)制機(jī)制將源分區(qū)副本復(fù)制到目的地副本。例如,在一些實(shí)施方案中,系統(tǒng)可以被配置來使用文件復(fù)制機(jī)制將表格分區(qū)數(shù)據(jù)從分區(qū)的原始副本(例如,托管在加載量多的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上的分區(qū)副本或托管在不同計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上的特定分區(qū)的副本中的另一個(gè)副本)復(fù)制到目的地副本中的一個(gè)或多個(gè)。所述方法也可以包括(一旦新的副本被填滿)(例如,通過執(zhí)行如上所述的追趕操作)更新新的副本(如2340)。在這個(gè)實(shí)例中,所述方法可以包括傳播特殊的“劃分”命令以劃分分區(qū)并指定每個(gè)副本處理劃分分區(qū)的一個(gè)部分(如2360)。在傳播“劃分”命令之后,分區(qū)的所得副本(即,一個(gè)新的副本組)中的一半可以處理針對原始分區(qū)的一個(gè)部分的請求,且其它副本(即,第二新的副本組)可以處理針對原始分區(qū)的剩余部分的請求。如2380處示出,所述方法可以包括為新的副本組中的每個(gè)選擇新的主副本(如2380)。如上所述,在一些實(shí)施方案中,系統(tǒng)可以被配置來對所得劃分分區(qū)副本的未使用部分(未示出)執(zhí)行邏輯收回。在此類實(shí)施方案中,由于接收到將新項(xiàng)目存儲(chǔ)在分區(qū)中的請求,可以將這些新項(xiàng)目存儲(chǔ)在表格中擁有存儲(chǔ)在原始分區(qū)中的項(xiàng)目但現(xiàn)在被管理為不同分區(qū)的部分(即,由劃分創(chuàng)建的兩個(gè)新的副本組中的另一個(gè))的位置中。如圖23中示出,如果熱點(diǎn)并非由于將單個(gè)分區(qū)作為目標(biāo)的通信量而產(chǎn)生(例如,如果其是由于針對托管在計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上的多個(gè)分區(qū)副本、表格或應(yīng)用的通信量而產(chǎn)生),那么所述方法可以包括開始移動(dòng)分區(qū)副本之一以從高通信量節(jié)點(diǎn)中移除所述分區(qū)副本。這在圖23中由2315的否定退出加以示出。在這種情況下,所述方法可以包括在被移動(dòng)的副本是其副本組的主副本時(shí)為副本組選擇新的主副本(如2330)。如這個(gè)實(shí)例中示出,所述方法可以包括當(dāng)副本被移動(dòng)的分區(qū)的一個(gè)或多個(gè)副本有效時(shí)在另一計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上創(chuàng)建新的副本(如2350)。在一些實(shí)施方案中,可以使用(諸如本文中描述的)物理復(fù)制機(jī)制將被移動(dòng)的分區(qū)副本復(fù)制到這個(gè)新的目的地副本,且可以在一旦復(fù)制完成時(shí)就使用追趕機(jī)制更新目的地副本(如2370)。一旦目的地副本隨著更新而被填滿,就可以從高通信量節(jié)點(diǎn)中移除被復(fù)制到新目的地的分區(qū)副本(如2390)。隨后,針對所述分區(qū)的通信量可能針對另一節(jié)點(diǎn)(加載量較小的節(jié)點(diǎn))上的目的地副本。注意,在一些實(shí)施方案中,響應(yīng)于在實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)中的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上檢測到熱點(diǎn),系統(tǒng)可以執(zhí)行分區(qū)劃分和一個(gè)或多個(gè)副本移動(dòng)兩者。例如,在劃分經(jīng)歷繁重通信量的分區(qū)之后,也可以使用本文中描述的物理復(fù)制機(jī)制將劃分分區(qū)中托管在熱節(jié)點(diǎn)上的副本從熱節(jié)點(diǎn)移動(dòng)到新的托管節(jié)點(diǎn)。此外,如果由分區(qū)劃分造成的新的副本組中的任何一個(gè)中的其它副本中的任何一個(gè)托管在熱節(jié)點(diǎn)上,那么其也可以被移動(dòng)到其它節(jié)點(diǎn)。注意在一些實(shí)施方案中,可以響應(yīng)于檢測到表格大小增加而應(yīng)用類似于圖23中示出的用于移動(dòng)和/或劃分分區(qū)的方法的方法。例如,隨著將更多項(xiàng)目添加到給定表格,這種方法可以用來添加新的分區(qū)(和其對應(yīng)副本),且因此自動(dòng)擴(kuò)展表格。圖24中的流程圖示出用于代表一個(gè)或多個(gè)存儲(chǔ)服務(wù)客戶端維護(hù)并管理多個(gè)表格的方法的一個(gè)實(shí)施方案。如2410處示出,在這個(gè)實(shí)例中,所述方法可以包括當(dāng)為來自一個(gè)或多個(gè)存儲(chǔ)服務(wù)客戶端的請求服務(wù)時(shí)在實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)中檢測到異常。在一些實(shí)施方案中,系統(tǒng)可以被配置來諸如通過擴(kuò)展表格、移動(dòng)分區(qū)、劃分分區(qū)和/或采取本文中未描述的其它動(dòng)作自動(dòng)地(例如,以編程方式)響應(yīng)各種類型的異常的檢測。例如,如果檢測到故障或錯(cuò)誤節(jié)點(diǎn)(例如,計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置)(如2420),那么系統(tǒng)可以被配置來用新的節(jié)點(diǎn)替換故障或錯(cuò)誤節(jié)點(diǎn)和/或?qū)⑼泄茉诠收匣蝈e(cuò)誤節(jié)點(diǎn)上的任何或所有分區(qū)復(fù)制到新的節(jié)點(diǎn)(如2425)。如先前提及,如果故障或錯(cuò)誤節(jié)點(diǎn)托管分區(qū)副本(所述分區(qū)副本是其副本組的主副本),那么系統(tǒng)也可以被配置來在將分區(qū)復(fù)制到新的節(jié)點(diǎn)之后選擇新的主副本。如果檢測到熱點(diǎn)或表格大小增加(如2430),那么系統(tǒng)可以被配置來(例如,在除了上面檢測到熱點(diǎn)的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置以外的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上)添加一個(gè)或多個(gè)新的分區(qū)和對應(yīng)副本且移動(dòng)和/或劃分新的分區(qū)或副本中的一個(gè)或多個(gè)中的、托管在加載量較多的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上的數(shù)據(jù)(如2435)。類似地,如果系統(tǒng)檢測到由于通信量增加或如果數(shù)據(jù)量增加超過表格的目標(biāo)容量而不滿足或可能不滿足盡力而為吞吐量目標(biāo)(或另一用戶優(yōu)選)(如2440),那么系統(tǒng)可以被配置來抑制傳入服務(wù)請求同時(shí)嘗試修正所述情形。此外,系統(tǒng)可以被配置來(例如,在除了上面檢測到熱點(diǎn)的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置以外的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上)添加一個(gè)或多個(gè)新的分區(qū)和對應(yīng)副本且移動(dòng)和/或劃分新的分區(qū)或副本中的一個(gè)或多個(gè)中的、托管在加載量較多的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上的數(shù)據(jù)(如2445)。類似地,如果(例如,由表格擁有人)明確地請求進(jìn)行現(xiàn)場再分區(qū)(如2450),那么所述系統(tǒng)可以被配置來相應(yīng)地添加或移除一個(gè)或多個(gè)新的分區(qū)和對應(yīng)副本,或移動(dòng)和/或劃分新的分區(qū)或副本中的一個(gè)或多個(gè)中的、托管在加載量較多的計(jì)算節(jié)點(diǎn)或存儲(chǔ)裝置上的數(shù)據(jù)(如2455)。如果檢測到另一類型的異常(示為2420、2430、2440和2450的否定輸出)且系統(tǒng)響應(yīng)和/或返回所述異常的指示符(如2460)或一旦隨著響應(yīng)上述異常之一而開始系統(tǒng)(如2425、2435、2445或2455),那么系統(tǒng)可以繼續(xù)為傳入請求服務(wù)(如2465)。在一些實(shí)施方案中,系統(tǒng)可以被配置來繼續(xù)進(jìn)行操作(例如,繼續(xù)為傳入服務(wù)請求服務(wù))(如2465)直到檢測到額外異常為止,或除非檢測到額外異常,否則系統(tǒng)可以被配置來繼續(xù)進(jìn)行操作。這在圖24中由從2470到2465的反饋加以示出。如果檢測到任何額外異常(示為2470的肯定退出),那么可以由系統(tǒng)按次序重復(fù)示為2420至2460的操作中的任何一個(gè)或所有以代表數(shù)據(jù)存儲(chǔ)服務(wù)客戶端維護(hù)并管理表格。這在圖24中由從2470到2420的反饋加以示出。注意在一些實(shí)施方案中,圖24中示出的操作中的任何一個(gè)或所有可以在數(shù)據(jù)存儲(chǔ)服務(wù)進(jìn)行操作時(shí)由后臺(tái)任務(wù)積極主動(dòng)(且自動(dòng)地)執(zhí)行,且不一定必須響應(yīng)于接收到任何特定服務(wù)請求而執(zhí)行??删鸵韵聴l款描述本公開的各種實(shí)施方案:1.一種系統(tǒng),其包括:多個(gè)計(jì)算節(jié)點(diǎn),其共同地實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù),每個(gè)包括至少一個(gè)處理器和存儲(chǔ)器;其中所述多個(gè)計(jì)算節(jié)點(diǎn)包括:前端模塊,其提供網(wǎng)絡(luò)服務(wù)接口(通過網(wǎng)絡(luò)服務(wù)接口接收服務(wù)請求)且被配置來解析并調(diào)度服務(wù)請求以進(jìn)行處理;管理組件,其被配置來分配系統(tǒng)中的資源、監(jiān)控系統(tǒng)的狀態(tài)和檢測當(dāng)為服務(wù)請求服務(wù)時(shí)系統(tǒng)中經(jīng)歷的異常;和多個(gè)存儲(chǔ)節(jié)點(diǎn),其共同地實(shí)施非關(guān)系數(shù)據(jù)存儲(chǔ)裝置;其中響應(yīng)于所述前端模塊接收到代表存儲(chǔ)服務(wù)客戶端創(chuàng)建表格的服務(wù)請求且其中所述服務(wù)請求指定表格名稱和主鍵,通過主鍵分區(qū)并索引存儲(chǔ)在表格中的項(xiàng)目:所述前端模塊被配置來將所述服務(wù)請求調(diào)度到所述多個(gè)存儲(chǔ)節(jié)點(diǎn)之一;響應(yīng)于接收到所述服務(wù)請求,所述多個(gè)存儲(chǔ)節(jié)點(diǎn)中的所述一個(gè)存儲(chǔ)節(jié)點(diǎn)被配置來在非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中創(chuàng)建可擴(kuò)展表格,其中所述可擴(kuò)展表格被配置來存儲(chǔ)多個(gè)項(xiàng)目,多個(gè)項(xiàng)目中的每個(gè)包括主鍵的值,且其中所述可擴(kuò)展表格不具有預(yù)定大小限制;且在創(chuàng)建所述可擴(kuò)展表格之后,所述管理組件被配置來響應(yīng)于在系統(tǒng)中檢測到異?;蝽憫?yīng)于接收到存儲(chǔ)、檢索、修改或刪除所述可擴(kuò)展表格中的項(xiàng)目的一個(gè)或多個(gè)服務(wù)請求而以編程方式造成所述可擴(kuò)展表格被調(diào)整大小或分區(qū)。2.根據(jù)條款1所述的系統(tǒng),其中創(chuàng)建所述可擴(kuò)展表格包括開始執(zhí)行異步表格創(chuàng)建工作流程;且其中響應(yīng)于接收到描述由數(shù)據(jù)存儲(chǔ)服務(wù)維護(hù)的一個(gè)或多個(gè)表格的服務(wù)請求,所述非關(guān)系數(shù)據(jù)存儲(chǔ)裝置被配置來返回關(guān)于所述一個(gè)或多個(gè)表格的信息,其中關(guān)于所述一個(gè)或多個(gè)表格的所述信息包括指示是否由所述異步表格創(chuàng)建工作流程成功創(chuàng)建所述可擴(kuò)展表格的信息。3.根據(jù)條款1所述的系統(tǒng),其中響應(yīng)于接收到將多個(gè)項(xiàng)目存儲(chǔ)在所述可擴(kuò)展表格中的一個(gè)或多個(gè)服務(wù)請求,所述管理組件被配置來:確定所述多個(gè)項(xiàng)目是否能存儲(chǔ)在所述可擴(kuò)展表格的單個(gè)分區(qū)中;且響應(yīng)于確定所述多個(gè)項(xiàng)目不能存儲(chǔ)在所述可擴(kuò)展表格的單個(gè)分區(qū)中,執(zhí)行所述以編程方式分區(qū)可擴(kuò)展表格。4.根據(jù)條款1所述的系統(tǒng),其中所述主鍵包括被指定為散列鍵屬性的單個(gè)屬性;且其中分區(qū)所述可擴(kuò)展表格包括取決于所述可擴(kuò)展表格中的項(xiàng)目的各自散列鍵屬性值將所述項(xiàng)目分成兩個(gè)或更多個(gè)分區(qū)。5.根據(jù)條款1所述的系統(tǒng),其中創(chuàng)建表格的所述服務(wù)請求還包括一個(gè)或多個(gè)用戶優(yōu)選的指示,其中所述一個(gè)或多個(gè)用戶優(yōu)選包括優(yōu)選服務(wù)請求吞吐量水平或請求保證的服務(wù)請求吞吐量水平;且其中所述管理組件被配置來響應(yīng)于檢測到不滿足所述用戶優(yōu)選中的一個(gè)或多個(gè)而以編程方式造成所述可擴(kuò)展表格被調(diào)整大小或分區(qū)。6.根據(jù)條款1所述的系統(tǒng),其中以編程方式造成所述可擴(kuò)展表格被分區(qū)是響應(yīng)于所述前端模塊接收到數(shù)量增加的請求而執(zhí)行,所述請求是將以下項(xiàng)作為目標(biāo):所述可擴(kuò)展表格中的項(xiàng)目、所述可擴(kuò)展表格的特定分區(qū)中的項(xiàng)目或存儲(chǔ)在與所述可擴(kuò)展表格中的項(xiàng)目的至少一個(gè)子集相同的計(jì)算節(jié)點(diǎn)上的項(xiàng)目。7.一種方法,其包括:由計(jì)算機(jī)執(zhí)行:接收在非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中創(chuàng)建表格的請求,其中所述請求指定所述表格的識(shí)別符和索引存儲(chǔ)在所述表格中的項(xiàng)目的主鍵;且響應(yīng)于所述接收:在所述非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中創(chuàng)建可擴(kuò)展表格,其中所述可擴(kuò)展表格被配置來存儲(chǔ)多個(gè)項(xiàng)目,多個(gè)項(xiàng)目的每個(gè)包括所述主鍵的值,且其中所述可擴(kuò)展表格不具有預(yù)定大小限制;且響應(yīng)于接收到訪問所述可擴(kuò)展表格的一個(gè)或多個(gè)請求而以編程方式執(zhí)行調(diào)整所述可擴(kuò)展表格的大小或分區(qū)所述可擴(kuò)展表格中的至少一個(gè)。8.根據(jù)條款7所述的方法,其中訪問可擴(kuò)展表格的所述一個(gè)或多個(gè)請求包括存儲(chǔ)、檢索、修改或刪除所述可擴(kuò)展表格中的項(xiàng)目的一個(gè)或多個(gè)請求。9.根據(jù)條款7所述的方法,其中創(chuàng)建所述可擴(kuò)展表格包括:搜集反映所述多個(gè)計(jì)算節(jié)點(diǎn)中的一個(gè)或多個(gè)的狀態(tài)的信息;和取決于所搜集的信息確定將在一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)中的哪一個(gè)計(jì)算節(jié)點(diǎn)上創(chuàng)建所述可擴(kuò)展表格。10.根據(jù)條款7所述的方法,其中創(chuàng)建所述可擴(kuò)展表格包括開始執(zhí)行異步表格創(chuàng)建工作流程;且其中所述方法還包括:接收描述維護(hù)在所述非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中的一個(gè)或多個(gè)表格的請求;和響應(yīng)于接收到描述一個(gè)或多個(gè)表格的所述請求,返回關(guān)于所述一個(gè)或多個(gè)表格的信息,其中關(guān)于所述一個(gè)或多個(gè)表格的所述信息包括指示是否由所述異步表格創(chuàng)建工作流程成功創(chuàng)建所述可擴(kuò)展表格的信息。11.根據(jù)條款7所述的方法,其還包括:接收將多個(gè)項(xiàng)目存儲(chǔ)在所述可擴(kuò)展表格中的一個(gè)或多個(gè)請求;和響應(yīng)于接收到所述一個(gè)或多個(gè)請求:確定所述多個(gè)項(xiàng)目是否能存儲(chǔ)在所述可擴(kuò)展表格的單個(gè)分區(qū)中;且響應(yīng)于確定所述多個(gè)項(xiàng)目不能存儲(chǔ)在所述可擴(kuò)展表格的單個(gè)分區(qū)中,執(zhí)行所述以編程方式分區(qū)所述可擴(kuò)展表格。12.根據(jù)條款7所述的方法,其中所述主鍵包括被指定為散列鍵屬性的單個(gè)屬性;其中存儲(chǔ)在所述可擴(kuò)展表格中的項(xiàng)目中的每個(gè)包括所述散列鍵屬性的各自值;且其中以編程方式分區(qū)所述可擴(kuò)展表格包括取決于所述可擴(kuò)展表格中的項(xiàng)目的各自散列鍵屬性值的散列表將所述項(xiàng)目分成兩個(gè)或更多個(gè)分區(qū)。13.根據(jù)條款7所述的方法,其中所述主鍵包括被指定為散列鍵屬性的屬性和被指定為范圍鍵屬性的另一屬性;其中存儲(chǔ)在所述可擴(kuò)展表格中的項(xiàng)目中的每個(gè)包括所述散列鍵屬性的各自值和所述范圍鍵屬性的各自值;其中所述范圍鍵屬性值唯一地識(shí)別所述可擴(kuò)展表格中具有相同散列鍵屬性值的所有項(xiàng)目中的特定項(xiàng)目,其中具有相同散列鍵的項(xiàng)目是根據(jù)項(xiàng)目各自范圍鍵屬性值來排序;且其中以編程方式分區(qū)所述可擴(kuò)展表格包括取決于可擴(kuò)展表格中具有相同散列鍵屬性值的項(xiàng)目的各自范圍鍵屬性值將所述項(xiàng)目分成兩個(gè)或更多個(gè)分區(qū)。14.根據(jù)條款7所述的方法,其中所述以編程方式分區(qū)所述可擴(kuò)展表格包括將所述可擴(kuò)展表格分成兩個(gè)或更多個(gè)分區(qū)和將所述兩個(gè)或更多個(gè)分區(qū)中的每個(gè)存儲(chǔ)在所述多個(gè)計(jì)算節(jié)點(diǎn)中的不同計(jì)算節(jié)點(diǎn)上。15.根據(jù)條款7所述的方法,其中所述以編程方式分區(qū)所述可擴(kuò)展表格包括當(dāng)所述可擴(kuò)展表格的分區(qū)的一個(gè)或多個(gè)副本繼續(xù)接受并處理請求時(shí)移動(dòng)或劃分所述分區(qū)。16.根據(jù)條款7所述的方法,其中所述以編程方式分區(qū)所述可擴(kuò)展表格是響應(yīng)于接收到數(shù)量增加的請求而執(zhí)行,所述請求是將以下項(xiàng)作為目標(biāo):所述可擴(kuò)展表格中的項(xiàng)目、所述可擴(kuò)展表格的特定分區(qū)中的項(xiàng)目或存儲(chǔ)在與所述可擴(kuò)展表格中的項(xiàng)目的至少一個(gè)子集相同的計(jì)算節(jié)點(diǎn)上的項(xiàng)目;或響應(yīng)于接收到數(shù)量減少的請求而執(zhí)行,所述請求是將以下項(xiàng)作為目標(biāo):所述可擴(kuò)展表格中的項(xiàng)目、所述可擴(kuò)展表格的特定分區(qū)中的項(xiàng)目或存儲(chǔ)在與所述可擴(kuò)展表格中的項(xiàng)目的至少一個(gè)子集相同的計(jì)算節(jié)點(diǎn)上的項(xiàng)目。17.根據(jù)條款7所述的方法,其中創(chuàng)建表格的所述請求還包括一個(gè)或多個(gè)用戶優(yōu)選的指示,其中所述一個(gè)或多個(gè)用戶優(yōu)選包括優(yōu)選服務(wù)請求吞吐量水平或請求保證的服務(wù)請求吞吐量水平;且其中所述以編程方式執(zhí)行調(diào)整所述可擴(kuò)展表格的大小或分區(qū)所述可擴(kuò)展表格中的至少一個(gè)是響應(yīng)于檢測到不滿足所述用戶優(yōu)選中的一個(gè)或多個(gè)而執(zhí)行。18.根據(jù)條款7所述的方法,其還包括:接收到從所述可擴(kuò)展表格檢索一個(gè)或多個(gè)項(xiàng)目的請求,其中所述請求包括優(yōu)選一致性模型的指示;和響應(yīng)于接收到檢索所述一個(gè)或多個(gè)項(xiàng)目的所述請求,以與優(yōu)選一致性模型一致的方式返回所述一個(gè)或多個(gè)項(xiàng)目。19.根據(jù)條款7所述的方法,其中所述創(chuàng)建包括:生成與所述可擴(kuò)展表格相關(guān)聯(lián)的元數(shù)據(jù);和將另一可擴(kuò)展表格中的元數(shù)據(jù)存儲(chǔ)在所述非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中。20.一種非臨時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其存儲(chǔ)當(dāng)在一個(gè)或多個(gè)計(jì)算機(jī)上執(zhí)行時(shí)造成所述一個(gè)或多個(gè)計(jì)算機(jī)執(zhí)行以下各項(xiàng)的程序指令:接收代表存儲(chǔ)服務(wù)客戶端創(chuàng)建表格的服務(wù)請求,其中所述服務(wù)請求指定所述表格的識(shí)別符和索引存儲(chǔ)在所述表格中的項(xiàng)目的主鍵;且響應(yīng)于所述接收:在所述非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中創(chuàng)建可擴(kuò)展表格,其中所述可擴(kuò)展表格被配置來存儲(chǔ)多個(gè)項(xiàng)目,多個(gè)項(xiàng)目的每個(gè)包括所述主鍵的值,且其中所述可擴(kuò)展表格不具有預(yù)定大小限制;且響應(yīng)于接收到將多個(gè)項(xiàng)目存儲(chǔ)在所述可擴(kuò)展表格中的一個(gè)或多個(gè)服務(wù)請求:確定所述多個(gè)項(xiàng)目是否能存儲(chǔ)在所述可擴(kuò)展表格的單個(gè)分區(qū)內(nèi);且響應(yīng)于確定所述多個(gè)項(xiàng)目不能存儲(chǔ)在所述可擴(kuò)展表格的單個(gè)分區(qū)內(nèi),分區(qū)所述可擴(kuò)展表格。21.根據(jù)條款20所述的存儲(chǔ)介質(zhì),其中當(dāng)在所述一個(gè)或多個(gè)計(jì)算機(jī)上執(zhí)行所述程序指令時(shí),所述程序指令還造成所述一個(gè)或多個(gè)計(jì)算機(jī)執(zhí)行:在分區(qū)所述可擴(kuò)展表格之后,響應(yīng)于接收到存儲(chǔ)、檢索、修改或刪除所述可擴(kuò)展表格中的項(xiàng)目的一個(gè)或多個(gè)服務(wù)請求而執(zhí)行調(diào)整所述可擴(kuò)展表格的大小或再分區(qū)所述可擴(kuò)展表格中的至少一個(gè)。22.根據(jù)條款21所述的存儲(chǔ)介質(zhì),其中所述再分區(qū)所述可擴(kuò)展表格是響應(yīng)于接收到數(shù)量增加的請求而執(zhí)行,所述請求是將以下項(xiàng)作為目標(biāo):所述可擴(kuò)展表格中的項(xiàng)目、所述可擴(kuò)展表格的特定分區(qū)中的項(xiàng)目或存儲(chǔ)在與所述可擴(kuò)展表格中的項(xiàng)目的至少一個(gè)子集相同的計(jì)算節(jié)點(diǎn)上的項(xiàng)目;或響應(yīng)于接收到數(shù)量減少的請求而執(zhí)行,所述請求是將以下項(xiàng)作為目標(biāo):所述可擴(kuò)展表格中的項(xiàng)目、所述可擴(kuò)展表格的特定分區(qū)中的項(xiàng)目或存儲(chǔ)在與所述可擴(kuò)展表格中的項(xiàng)目的至少一個(gè)子集相同的計(jì)算節(jié)點(diǎn)上的項(xiàng)目。23.根據(jù)條款20所述的存儲(chǔ)介質(zhì),其中創(chuàng)建所述可擴(kuò)展表格包括:搜集反映所述多個(gè)計(jì)算節(jié)點(diǎn)中的一個(gè)或多個(gè)的狀態(tài)的信息;取決于所搜集的信息確定將在一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)中的哪一個(gè)計(jì)算節(jié)點(diǎn)上創(chuàng)建所述可擴(kuò)展表格;和創(chuàng)建各自分區(qū)以將所述可擴(kuò)展表格的至少一個(gè)子集存儲(chǔ)在所述一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)中的每個(gè)上。24.根據(jù)條款20所述的存儲(chǔ)介質(zhì),其中創(chuàng)建所述可擴(kuò)展表格包括開始執(zhí)行異步表格創(chuàng)建工作流程;且其中響應(yīng)于接收到描述維護(hù)在所述所述非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中的一個(gè)或多個(gè)表格的服務(wù)請求,所述程序指令還造成所述一個(gè)或多個(gè)計(jì)算機(jī)執(zhí)行返回關(guān)于所述一個(gè)或多個(gè)表格的信息,其中關(guān)于所述一個(gè)或多個(gè)表格的所述信息包括指示是否已由所述異步表格創(chuàng)建工作流程成功地創(chuàng)建所述可擴(kuò)展表格的信息。25.根據(jù)條款20所述的存儲(chǔ)介質(zhì),其中所述主鍵包括被指定為散列鍵屬性的單個(gè)屬性;其中存儲(chǔ)在所述可擴(kuò)展表格中的項(xiàng)目中的每個(gè)包括所述散列鍵屬性的各自值;且其中所述分區(qū)所述可擴(kuò)展表格包括取決于所述可擴(kuò)展表格中的項(xiàng)目的各自散列鍵屬性值的散列表將所述項(xiàng)目分成兩個(gè)或更多個(gè)分區(qū)。26.根據(jù)條款20所述的存儲(chǔ)介質(zhì),其中所述分區(qū)所述可擴(kuò)展表格包括將所述可擴(kuò)展表格分成兩個(gè)或更多個(gè)分區(qū)和將所述兩個(gè)或更多個(gè)分區(qū)中的每個(gè)存儲(chǔ)在所述多個(gè)計(jì)算節(jié)點(diǎn)中的不同計(jì)算節(jié)點(diǎn)上。27.根據(jù)條款20所述的存儲(chǔ)介質(zhì),其中所述主鍵包括被指定為散列鍵屬性的屬性和被指定為范圍鍵屬性的另一屬性;其中存儲(chǔ)在所述可擴(kuò)展表格中的項(xiàng)目中的每個(gè)包括所述散列鍵屬性的各自值和所述范圍鍵屬性的各自值;其中所述范圍鍵屬性值唯一地識(shí)別來自所述可擴(kuò)展表格中具有相同散列鍵屬性值的所有項(xiàng)目中的特定項(xiàng)目,其中具有相同散列鍵的項(xiàng)目是根據(jù)項(xiàng)目各自范圍鍵屬性值來排序;且其中分區(qū)所述可擴(kuò)展表格包括取決于所述可擴(kuò)展表格中具有相同散列鍵屬性值的項(xiàng)目的各自范圍鍵屬性值將所述項(xiàng)目分成兩個(gè)或更多個(gè)分區(qū)。28.一種系統(tǒng),其包括:多個(gè)計(jì)算節(jié)點(diǎn),每個(gè)包括至少一個(gè)處理器和存儲(chǔ)器,其中所述多個(gè)計(jì)算節(jié)點(diǎn)被配置來實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù);其中響應(yīng)于接收到代表存儲(chǔ)服務(wù)客戶端創(chuàng)建表格的服務(wù)請求,且其中所述服務(wù)請求指定所述表格的識(shí)別符和索引存儲(chǔ)在所述表格中的項(xiàng)目的主鍵,所述數(shù)據(jù)存儲(chǔ)服務(wù)被配置來在非關(guān)系數(shù)據(jù)存儲(chǔ)裝置中創(chuàng)建可擴(kuò)展表格;其中所述可擴(kuò)展表格被配置來存儲(chǔ)多個(gè)項(xiàng)目,多個(gè)項(xiàng)目的每個(gè)包括所述主鍵的值;其中所述可擴(kuò)展表格不具有預(yù)定大小限制;且其中創(chuàng)建所述可擴(kuò)展表格包括開始執(zhí)行異步表格創(chuàng)建工作流程。29.根據(jù)條款28所述的系統(tǒng),其中響應(yīng)于接收到描述由所述數(shù)據(jù)存儲(chǔ)服務(wù)維護(hù)的一個(gè)或多個(gè)表格的服務(wù)請求,所述數(shù)據(jù)存儲(chǔ)服務(wù)被配置來返回關(guān)于所述一個(gè)或多個(gè)表格的信息;且其中關(guān)于所述一個(gè)或多個(gè)表格的所述信息包括指示是否已由所述異步表格創(chuàng)建工作流程成功地創(chuàng)建所述可擴(kuò)展表格的信息。30.根據(jù)條款28所述的系統(tǒng),其中所述數(shù)據(jù)存儲(chǔ)服務(wù)還被配置來響應(yīng)于接收到存儲(chǔ)、檢索、修改或刪除所述可擴(kuò)展表格中的項(xiàng)目的一個(gè)或多個(gè)服務(wù)請求而以編程方式執(zhí)行調(diào)整所述可擴(kuò)展表格的大小或分區(qū)所述可擴(kuò)展表格中的至少一個(gè)。31.根據(jù)條款28所述的系統(tǒng),其中響應(yīng)于接收將多個(gè)項(xiàng)目存儲(chǔ)在所述可擴(kuò)展表格的一個(gè)或多個(gè)服務(wù)請求,所述數(shù)據(jù)存儲(chǔ)服務(wù)被配置來:確定所述多個(gè)項(xiàng)目是否能存儲(chǔ)在所述可擴(kuò)展表格的單個(gè)分區(qū)內(nèi);且響應(yīng)于確定所述多個(gè)項(xiàng)目不能存儲(chǔ)在所述可擴(kuò)展表格的單個(gè)分區(qū)內(nèi),執(zhí)行所述以編程方式分區(qū)所述可擴(kuò)展表格。32.根據(jù)條款28所述的系統(tǒng),其中所述數(shù)據(jù)存儲(chǔ)服務(wù)還被配置來響應(yīng)于接收到數(shù)量增加的請求而執(zhí)行以編程方式分區(qū)所述可擴(kuò)展表格,所述請求是將以下項(xiàng)作為目標(biāo):所述可擴(kuò)展表格中的項(xiàng)目、所述可擴(kuò)展表格的特定分區(qū)中的項(xiàng)目或存儲(chǔ)在與所述可擴(kuò)展表格中的項(xiàng)目的至少一個(gè)子集相同的計(jì)算節(jié)點(diǎn)上的項(xiàng)目;或響應(yīng)于接收到數(shù)量減少的請求而執(zhí)行以編程方式分區(qū)所述可擴(kuò)展表格,所述請求是將以下項(xiàng)作為目標(biāo):所述可擴(kuò)展表格中的項(xiàng)目、所述可擴(kuò)展表格的特定分區(qū)中的項(xiàng)目或存儲(chǔ)在與所述可擴(kuò)展表格中的項(xiàng)目的至少一個(gè)子集相同的計(jì)算節(jié)點(diǎn)上的項(xiàng)目。33.根據(jù)條款28所述的系統(tǒng),其中所述主鍵包括被指定為散列鍵屬性的單個(gè)屬性和被指定為范圍鍵屬性的另一屬性;其中存儲(chǔ)在所述可擴(kuò)展表格中的項(xiàng)目中的每個(gè)包括所述散列鍵屬性的各自值和所述范圍鍵屬性的各自值;以及其中所述范圍鍵屬性值唯一地識(shí)別來自所述可擴(kuò)展表格中具有相同散列鍵屬性值的所有項(xiàng)目中的特定項(xiàng)目,其中具有相同散列鍵的項(xiàng)目是根據(jù)項(xiàng)目各自范圍鍵屬性值來排序;且其中所述數(shù)據(jù)存儲(chǔ)服務(wù)還被配置來取決于所述可擴(kuò)展表格中具有相同散列鍵屬性值的項(xiàng)目的各自范圍鍵屬性值將所述項(xiàng)目分成兩個(gè)或更多個(gè)分區(qū)。34.根據(jù)條款28所述的系統(tǒng),所述創(chuàng)建所述可擴(kuò)展表格還包括:搜集反映所述多個(gè)計(jì)算節(jié)點(diǎn)中的一個(gè)或多個(gè)的狀態(tài)的信息;取決于所搜集的信息確定將在一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)中的哪一個(gè)計(jì)算節(jié)點(diǎn)上創(chuàng)建所述可擴(kuò)展表格;和創(chuàng)建各自分區(qū)以將所述可擴(kuò)展表格的至少一個(gè)子集存儲(chǔ)在所述一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)中的每個(gè)上。35.根據(jù)條款28所述的系統(tǒng),其中響應(yīng)于接收到從所述可擴(kuò)展表格檢索一個(gè)或多個(gè)項(xiàng)目的請求且其中所述請求包括優(yōu)選一致性模型的指示,所述數(shù)據(jù)存儲(chǔ)服務(wù)被配置來以與所述優(yōu)選一致性模型一致的方式返回所述一個(gè)或多個(gè)項(xiàng)目。圖25中示出可以適用于實(shí)施采用本文中描述的技術(shù)的數(shù)據(jù)存儲(chǔ)服務(wù)的一個(gè)計(jì)算節(jié)點(diǎn)。計(jì)算節(jié)點(diǎn)2500可以包括提供實(shí)施這種數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)的組件中的任何一個(gè)或所有的功能,或在不同實(shí)施方案中,類似于或不同于計(jì)算節(jié)點(diǎn)2500的多個(gè)計(jì)算節(jié)點(diǎn)可以共同地提供這種功能。例如,在各種實(shí)施方案中,一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)2500可以實(shí)施任何數(shù)量的存儲(chǔ)服務(wù)客戶端110、前端模塊140、任何數(shù)量的自動(dòng)管理實(shí)體150、任何數(shù)量的存儲(chǔ)裝置(諸如存儲(chǔ)節(jié)點(diǎn)實(shí)體160)和/或網(wǎng)絡(luò)服務(wù)平臺(tái)130的任何其它組件、自動(dòng)管理集群或與網(wǎng)絡(luò)平臺(tái)130交互的外部資源(諸如簡易工作流程組件170或外部存儲(chǔ)服務(wù)180)。在包括多個(gè)計(jì)算節(jié)點(diǎn)2500的一些實(shí)施方案中,所有計(jì)算節(jié)點(diǎn)2500可以包括相同或類似硬件組件、軟件組件和功能,而在其它實(shí)施方案中,包括被配置來實(shí)施本文中描述的功能的計(jì)算系統(tǒng)的計(jì)算節(jié)點(diǎn)2500可以包括各種各樣的硬件組件、軟件組件和功能。在一些實(shí)施方案中,共同地實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的多個(gè)計(jì)算節(jié)點(diǎn)2500可以是大型共享資源系統(tǒng)或網(wǎng)格計(jì)算系統(tǒng)的組件。在所示出的實(shí)施方案中,計(jì)算節(jié)點(diǎn)2500包括經(jīng)由輸入/輸出(i/o)接口2530耦接到系統(tǒng)存儲(chǔ)器2520的一個(gè)或多個(gè)處理器2510。計(jì)算節(jié)點(diǎn)2500還包括耦接到i/o接口2530的網(wǎng)絡(luò)接口2540和一個(gè)或多個(gè)輸入/輸出裝置2550。如上文提及,在一些實(shí)施方案中,給定節(jié)點(diǎn)可以實(shí)施代表諸如本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)客戶端管理和維護(hù)(例如,非關(guān)系數(shù)據(jù)庫中)表格中的數(shù)據(jù)的系統(tǒng)的一個(gè)以上組件的功能。在各種實(shí)施方案中,計(jì)算節(jié)點(diǎn)2500可以是包括一個(gè)處理器2510的單處理器系統(tǒng)或包括多個(gè)(例如,兩個(gè)、四個(gè)、八個(gè)或另一合適的數(shù)量)處理器2510的多處理器系統(tǒng)。處理器2510可以是能夠執(zhí)行指令的任何合適的處理器。例如,在各種實(shí)施方案中,處理器2510可以是實(shí)施各種指令集架構(gòu)(isa)(諸如x86、powerpc、sparc或mipsisa)或任何其它合適的isa中的任何一個(gè)的通用或嵌入式處理器。在多處理器系統(tǒng)中,處理器2510中的每個(gè)可以通常但并非必須實(shí)施相同isa。類似地,在諸如共同地實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的一個(gè)分布式計(jì)算系統(tǒng)的分布式計(jì)算系統(tǒng)中,計(jì)算節(jié)點(diǎn)中的每個(gè)可以實(shí)施相同isa,或個(gè)別計(jì)算節(jié)點(diǎn)和/或節(jié)點(diǎn)的副本組可以實(shí)施不同isa。在一些實(shí)施方案中,系統(tǒng)存儲(chǔ)器2520可以包括非臨時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其被配置來存儲(chǔ)可由處理器2510訪問的程序指令和/或數(shù)據(jù)。在各種實(shí)施方案中,系統(tǒng)存儲(chǔ)器2520可以使用任何合適的存儲(chǔ)器技術(shù)(諸如靜態(tài)隨機(jī)訪問存儲(chǔ)器(sram)、同步動(dòng)態(tài)ram(sdram)、非易失性/快閃型存儲(chǔ)器或任何其它類型的存儲(chǔ)器)來實(shí)施。在所示出的實(shí)施方案中,實(shí)施諸如上文描述的所希望功能的程序指令和數(shù)據(jù)被示出分別存儲(chǔ)在系統(tǒng)存儲(chǔ)器2520內(nèi)作為程序指令2525且存儲(chǔ)在數(shù)據(jù)存儲(chǔ)裝置2535內(nèi)。例如,程序指令2525可以包括當(dāng)在處理器2510上執(zhí)行時(shí)實(shí)施以下各項(xiàng)中的任何一個(gè)或所有的程序指令:存儲(chǔ)服務(wù)客戶端110、前端模塊140(其可以包括用戶接口)、自動(dòng)管理實(shí)體150、存儲(chǔ)節(jié)點(diǎn)實(shí)體160、管理主控臺(tái)265、請求路由器、分級主機(jī)、一個(gè)或多個(gè)元數(shù)據(jù)表格、簡易工作流程組件170、外部存儲(chǔ)服務(wù)180和/或提供本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)的任何其它組件、模塊或子模塊。程序指令2525也可以包括被配置來實(shí)施系統(tǒng)(其實(shí)施本文中未描述的數(shù)據(jù)存儲(chǔ)服務(wù))的額外功能的程序指令。在各種實(shí)施方案中,數(shù)據(jù)存儲(chǔ)裝置2535可以包括以下各項(xiàng)的集合:由數(shù)據(jù)存儲(chǔ)服務(wù)代表其客戶端/用戶維護(hù)的數(shù)據(jù)和/或由實(shí)施如本文中描述的這種服務(wù)的計(jì)算系統(tǒng)使用的元數(shù)據(jù)(包括(但不限于)代表服務(wù)的客戶端/用戶管理并維護(hù)的表格、元數(shù)據(jù)表格、業(yè)務(wù)規(guī)則、分區(qū)映射、路由表、索引、命名空間和/或其分區(qū)、服務(wù)水平協(xié)議參數(shù)值、訂戶優(yōu)選和/或賬號信息、性能數(shù)據(jù)和/或資源使用數(shù)據(jù))。在其它實(shí)施方案中,可以在不同類型的計(jì)算機(jī)可讀介質(zhì)上或與系統(tǒng)存儲(chǔ)器2520或計(jì)算節(jié)點(diǎn)2500分開的類似介質(zhì)上接收、發(fā)送或存儲(chǔ)如本文中描述用于實(shí)施采用上述技術(shù)的數(shù)據(jù)存儲(chǔ)服務(wù)的程序指令和/或數(shù)據(jù)。一般來說,計(jì)算機(jī)可讀介質(zhì)可以包括存儲(chǔ)介質(zhì)或存儲(chǔ)器介質(zhì),諸如磁性或光學(xué)介質(zhì),例如經(jīng)由i/o接口2530耦接到計(jì)算節(jié)點(diǎn)2500的磁盤或cd/dvd-rom。存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的程序指令和數(shù)據(jù)可以由傳輸介質(zhì)或信號(諸如電信號、電磁信號或數(shù)字信號,其可以經(jīng)由諸如可以經(jīng)由網(wǎng)絡(luò)接口2540實(shí)施的通信介質(zhì)(諸如網(wǎng)絡(luò)和/或無線鏈路)傳達(dá))傳輸?shù)接?jì)算節(jié)點(diǎn)2500以由處理器2510a執(zhí)行。在一個(gè)實(shí)施方案中,i/o接口2530可以被配置來協(xié)調(diào)處理器2510、系統(tǒng)存儲(chǔ)器2520和計(jì)算節(jié)點(diǎn)中的任何周邊裝置(包括網(wǎng)絡(luò)接口2540或其它周邊接口,諸如輸入/輸出裝置2550)之間的i/o通信量。在一些實(shí)施方案中,i/o接口2530可以執(zhí)行任何必要的協(xié)議、時(shí)序或其它數(shù)據(jù)變換以將來自一個(gè)組件(例如,系統(tǒng)存儲(chǔ)器2520)的數(shù)據(jù)信號轉(zhuǎn)換成適合由另一組件(例如,處理器2510)使用的格式。在一些實(shí)施方案中,i/o接口2530可以包括支持通過各種類型的周邊總線(諸如(例如)周邊組件互連(pci)總線標(biāo)準(zhǔn)或通用串行總線(usb)標(biāo)準(zhǔn)的變體)附接的裝置。在一些實(shí)施方案中,i/o接口2530的功能可以被劃分成兩個(gè)或更多個(gè)分離組件,諸如(例如)北橋和南橋。此外,在一些實(shí)施方案中,i/o接口2530(諸如到系統(tǒng)存儲(chǔ)器2520的接口)的功能中的一些或所有可以直接并入到處理器2510中。網(wǎng)絡(luò)接口2540可以被配置來允許在計(jì)算節(jié)點(diǎn)2500與附接到網(wǎng)絡(luò)的其它裝置(諸如其它計(jì)算機(jī)系統(tǒng)、通信裝置、輸入/輸出裝置或外部存儲(chǔ)裝置)之間或在提供共享計(jì)算服務(wù)的系統(tǒng)中的其它節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)交換。在各種實(shí)施方案中,網(wǎng)絡(luò)接口2540可以支持經(jīng)由以下各項(xiàng)進(jìn)行通信:有線或無線通用數(shù)據(jù)網(wǎng)絡(luò)(諸如(例如)任何合適的類型的以太網(wǎng)絡(luò));電信/電話網(wǎng)絡(luò),諸如模擬語音網(wǎng)絡(luò)或數(shù)字光纖通信網(wǎng)絡(luò);存儲(chǔ)區(qū)域網(wǎng)絡(luò),諸如光纖通道san;或任何其它合適的類型的網(wǎng)絡(luò)和/或協(xié)議。在一些實(shí)施方案中,輸入/輸出裝置2550可以包括一個(gè)或多個(gè)顯示終端、鍵盤、小鍵盤、觸摸板、掃描裝置、語音或光學(xué)識(shí)別裝置或適用于由一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)2500輸入或檢索數(shù)據(jù)的任何其它裝置。多個(gè)輸入/輸出裝置2550可以存在于計(jì)算節(jié)點(diǎn)2500中或可以分布在被配置來實(shí)施數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)的各個(gè)計(jì)算節(jié)點(diǎn)上。在一些實(shí)施方案中,類似輸入/輸出裝置可與計(jì)算節(jié)點(diǎn)2500分離且可以通過有線或無線連接(諸如通過網(wǎng)絡(luò)接口2540)與系統(tǒng)的一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)交互。在不同實(shí)施方案中,存儲(chǔ)服務(wù)客戶端(例如,用戶、訂戶和/或客戶端應(yīng)用)可以以各種方式與諸如本文中描述的數(shù)據(jù)存儲(chǔ)服務(wù)交互,以(諸如)提交服務(wù)請求(包括(但不限于)存儲(chǔ)、檢索和/或更新表格中的項(xiàng)目的請求或再分區(qū)表格的請求)和接收結(jié)果。例如,所述服務(wù)的一些訂戶可以物理訪問計(jì)算節(jié)點(diǎn)2500,且如果是,那么可以與各種輸入/輸出裝置2550交互以提供和/或接收信息。替代地,其它客戶端/用戶可以使用客戶端計(jì)算系統(tǒng)以(諸如)經(jīng)由網(wǎng)絡(luò)接口2540(例如,經(jīng)由互聯(lián)網(wǎng)和/或萬維網(wǎng))遠(yuǎn)程訪問系統(tǒng)。此外,提供服務(wù)的系統(tǒng)的計(jì)算節(jié)點(diǎn)中的一些或所有可以(例如,響應(yīng)于用戶請求)經(jīng)由一個(gè)或多個(gè)輸入/輸出裝置2550將各種反饋或其它一般類型的信息提供給客戶端/用戶。本領(lǐng)域那些技術(shù)人員將明白,計(jì)算節(jié)點(diǎn)2500僅僅是說明性且不旨在限制實(shí)施方案的范圍。特別地說,計(jì)算系統(tǒng)和裝置可以包括可執(zhí)行所指示功能的硬件或軟件的任何組合,包括計(jì)算機(jī)、網(wǎng)絡(luò)裝置、互聯(lián)網(wǎng)電器、pda、無線電話、傳呼機(jī)等。在一些實(shí)施方案中,計(jì)算節(jié)點(diǎn)2500也可以連接到未示出的其它裝置。此外,在一些實(shí)施方案中,由所示出的組件提供的功能可以組合在較少組件中或分布在額外組件中。類似地,在一些實(shí)施方案中,可以不提供所示出的組件中的一些的功能和/或可以使用其它額外功能。本領(lǐng)域那些技術(shù)人員也將應(yīng)明白,雖然各個(gè)項(xiàng)目被示出為當(dāng)使用時(shí)存儲(chǔ)在存儲(chǔ)器中或存儲(chǔ)裝置上,但是為了存儲(chǔ)器管理和數(shù)據(jù)整合的目的,這些項(xiàng)目或其部分可以在存儲(chǔ)器與其它存儲(chǔ)裝置之間傳送。替代地,在其它實(shí)施方案中,軟件組件中的一些或所有可以在另一裝置上的存儲(chǔ)器上執(zhí)行且經(jīng)由計(jì)算機(jī)間通信與所示出的計(jì)算系統(tǒng)進(jìn)行通信。系統(tǒng)組件或數(shù)據(jù)結(jié)構(gòu)中的一些或所有也可以(例如,作為指令或結(jié)構(gòu)化數(shù)據(jù))存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)或由適當(dāng)驅(qū)動(dòng)器讀取的便攜式物件上(其的各種實(shí)例已在上文加以描述)。在一些實(shí)施方案中,存儲(chǔ)在與計(jì)算節(jié)點(diǎn)2500分離的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的指令可以經(jīng)由(經(jīng)由諸如網(wǎng)絡(luò)和/或無線鏈路的通信介質(zhì)傳達(dá)的)傳輸介質(zhì)或信號(諸如電信號、電磁信號或數(shù)字信號)傳輸?shù)接?jì)算節(jié)點(diǎn)2500。各種實(shí)施方案還可以包括接收、發(fā)送或存儲(chǔ)根據(jù)前文描述在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上實(shí)施的指令和/或數(shù)據(jù)。因此,不同實(shí)施方案可以用其它計(jì)算機(jī)系統(tǒng)配置來實(shí)踐。注意,雖然本文中描述的多個(gè)實(shí)例針對包括非關(guān)系數(shù)據(jù)庫的系統(tǒng)中的各種技術(shù)的應(yīng)用,但是在其它實(shí)施方案中這些技術(shù)可以應(yīng)用于使用不同存儲(chǔ)模式實(shí)施非關(guān)系數(shù)據(jù)存儲(chǔ)裝置的系統(tǒng)中。本領(lǐng)域那些技術(shù)人員將明白,在一些實(shí)施方案中,可以以替代性方式(諸如在更多軟件模塊或程式之間進(jìn)行劃分或合并成較少模塊或程式)提供由上文論述的方法提供的功能。類似地,在一些實(shí)施方案中,所示出的方法可以提供的功能多于或少于所描述的功能(諸如當(dāng)其它所示出的方法分別反而缺少或包括這種功能時(shí)或當(dāng)更改所提供的功能的量時(shí))。此外,雖然各種操作可以被示出為以特定方式(例如,串行或并行)和/或按特定次序執(zhí)行,但是本領(lǐng)域那些技術(shù)人員將明白,在其它實(shí)施方案中可以按其它次序和以其它方式執(zhí)行操作。本領(lǐng)域那些技術(shù)人員也將明白,上文論述的數(shù)據(jù)結(jié)構(gòu)可以以不同方式(諸如通過將單個(gè)數(shù)據(jù)結(jié)構(gòu)劃分成多個(gè)數(shù)據(jù)結(jié)構(gòu)或通過將多個(gè)數(shù)據(jù)結(jié)構(gòu)合并成單個(gè)數(shù)據(jù)結(jié)構(gòu))而結(jié)構(gòu)化。類似地,在一些實(shí)施方案中,所示出的數(shù)據(jù)結(jié)構(gòu)可以存儲(chǔ)的信息多于或少于所描述的信息(諸如當(dāng)其它所示出的數(shù)據(jù)結(jié)構(gòu)分別反而缺少或包括這種信息時(shí)或當(dāng)更改所存儲(chǔ)的信息的量或類型時(shí))。如附圖中描繪且本文中描述的各種方法表示方法的說明性實(shí)施方案。在各種實(shí)施方案中,所述方法可以實(shí)施于軟件、硬件或其組合中。類似地,在各種實(shí)施方案中,可以改變?nèi)魏畏椒ǖ拇涡?,且可以添加、重排序、組合、省略、修改(等)各種元件。從前文中將明白,雖然本文中已為了示出目的而描述了特定實(shí)施方案,但是可以在不違背所附權(quán)利要求及其中敘述的元件的精神和范圍的情況下作出各種修改。此外,雖然下文以某些權(quán)利要求形式呈現(xiàn)某些方面,但是發(fā)明人預(yù)期呈任何可用權(quán)利要求形式的各個(gè)方面。例如,雖然僅一些方面當(dāng)前可以被敘述為具體實(shí)施于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,但是同樣也可以這樣具體實(shí)施其它方面。本領(lǐng)域一般技術(shù)人員在得益于本公開之后應(yīng)明白可以作出各種修改和改變。這旨在包括所有這樣的修改和改變,且因此上文描述被視為說明性而非限制性意義。當(dāng)前第1頁12當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
民勤县| 闻喜县| 伽师县| 治多县| 河池市| 阿拉善左旗| 平阳县| 隆尧县| 十堰市| 云南省| 聂荣县| 邯郸市| 广丰县| 开江县| 河曲县| 原平市| 淳化县| 静宁县| 伊宁县| 苍山县| 浙江省| 海兴县| 绥江县| 息烽县| 浮梁县| 南木林县| 巫溪县| 洪泽县| 北京市| 开封县| 花莲市| 青浦区| 惠水县| 阳曲县| 阜平县| 突泉县| 湘西| 遂溪县| 横峰县| 东山县| 吴江市|