專利名稱::用于監控的海量數據的儲存的制作方法用于監控的海量數據的儲存相關申請的交叉引用本申請要求2008年10月20日提交的,分配申請號為61/106,901,題為“STORAGEOFMASSDATAFORMONITORING”的美國臨時專利申請;2008年10月20日提交的,分配申請號為61/106,903,題為“STORAGEOFMASSDATAFORMONITORING”的美國臨時專利申請;以及2008年10月20日提交的,分配申請號為61/106,904,題為“STORAGEOFMASSDATAFORMONITORING”的美國臨時專利申請的優先權,這些臨時申請中的每一個都在此通過引用全部并入。本申請還要求2009年6月29日提交的,分配申請號為12/493,586,題為"StorageofMassDataforMonitoring”的美國專利申請,以及2009年6月29日提交的,分配申請號為12/493,558,題為“StorageofMassDataforMonitoring”的美國專利申請的優先權,這些專利申請中的每一個都在此通過引用全部并入。背景大規模數據處理系統,比如網絡服務等可產生包括度量(metrics)的大量日志數據。有時,可復核這樣的數據以診斷數據處理系統的問題。然而,由這樣的系統產生的日志數據的量可能在數據存儲和復核方面帶來巨大困難。參考接下來的附圖可更好地理解本公開的許多方面。附圖中的構件未必是按比例繪制的,而重點放在了清楚地示出本公開的原理上。此外,附圖中同樣的參考數字表示貫穿幾幅視圖的對應的部分。圖1是依據本公開的實施方式的數據通信網絡的框圖。圖2是從數據源傳輸到依據本公開的實施方式的圖1的數據通信網絡中的服務器的度量的圖。圖3是示出依據本公開的實施方式的圖1的數據通信網絡中的服務器中的數據儲存應用程序的操作的一個例子的圖。圖4是示出依據本公開的實施方式的圖1的數據通信網絡中的服務器中的數據儲存應用程序的操作的另一個例子的圖。圖5是示出依據本公開的實施方式的圖1的數據通信網絡中的服務器中運行的聚合應用程序的不同功能的一個例子的流程圖。圖6是示出依據本公開的實施方式的圖1的數據通信網絡中的服務器中運行的聚合應用程序的另外功能的另一個例子的流程圖。圖7是示出依據本公開的實施方式的圖1的數據通信網絡中的服務器中運行的度量目錄應用程序的功能的一個例子的流程圖。圖8是示出依據本公開的實施方式的圖1的數據通信網絡中的服務器中運行的度量目錄應用程序的另外功能的一個例子的流程圖。圖9是依據本公開的實施方式的圖1的數據通信網絡中的服務器的一個例子的示意性框圖。詳細描述各種大規模計算系統,比如操作大規模網絡服務的大規模計算系統可產生呈度量形式的大量的數據,所述度量描述隨著時間的過去,這樣的服務的性能(performance)。例如,大規模電子商務系統每天進行的交易數量可達數百萬甚至更多,導致關于這樣的系統的性能的產生的太字節規模的大量日志數據及/或度量。萬一這樣的服務的操作出現問題,則人員通常搜索可能包括度量的日志數據,以便診斷服務的問題并最終實現解決。然而,隨著這種服務變得規模更大,它們產生的度量的量增多。結果,儲存由系統的正常操作產生的所有日志記錄或度量成了問題。此外,由于涉及到的大量數據,搜索度量以便診斷并解決服務中產生的問題變得更加困難。根據本公開的不同實施方式,從不同系統接收表示度量的海量數據,該數據以一種允許生成監控輸出的方式儲存,這使得操作大規模系統的人能夠在任何給定的時間獲悉這樣的系統的工作健康狀況。在不同的實施方式中,不是儲存由給定服務或系統產生的所有度量,而是產生占據較少儲存空間的、包括接收到的度量的聚合的數據模型。如此的數據模型使得即使原始數據度量沒有儲存且最終被丟棄,也能實現對給定系統的操作的監控。在度量的源保留關于數據是怎樣通過在此描述的不同應用程序儲存的控制的意義上,根據不同實施方式的數據模型的儲存是數據驅動的。參考圖1,顯示的是根據本公開的不同實施方式的數據通信網絡100。數據通信網絡100包括在不同的網絡上相互通信的不同裝置。這樣的網絡可包括,例如互聯網、內聯網、廣域網(WAN)、局域網、無線網絡,或其他合適的網絡等,或兩個或更多的這樣的網絡的任何組合。在數據通信網絡100中的不同裝置之間的是根據不同實施方式的一個或更多的服務器103。例如,所述的一個或更多的服務器103可安排在一個或更多的服務器組(serverbank)中,且可包括服務器計算機,如可認識到的。服務器103可位于單獨的位置,或可分部在數個不同的地理位置之間,如可認識到的。為簡單起見,所述的一個或更多的服務器103在此稱為服務器103,盡管應理解,這里提到的服務器103可表示多個的服務器。另外,數據通信網絡100包括受監控的系統106,該受監控的系統106產生可作為數據流傳輸到服務器103的日志及/或度量109。在這方面,這里所設想的數據流表示可使用的不同傳送方法,比如批量傳送或其他傳送,如可認識到的。受監控的系統106是產生度量109的服務系統或物理系統的實例。為此,度量109可描述受監控的系統106的狀態,該狀態可例如包括,受監控的系統106的性能的方面或可由度量109量化的其他狀態信息,如可認識到的。例如,受監控的系統106可包括執行不同功能且產生描述功能的性能的性質的不同度量109的基于硬件的系統,比如真實的服務器計算機。可選地,受監控的系統106可包括應用程序,比如網絡服務或其他服務,所述應用程序在一個或更多的服務器計算機中運行,如可認識到的。數據通信網絡100還包括與服務器103上的不同服務通信的至少一個客戶機113,如將要描述的。客戶機113可包括不同類型的計算機系統,如臺式機、膝上型電腦,或其他具有相似能力的計算機系統。為此,客戶機113還可包括個人數字助理、手機或具有相似能力的其他便攜式裝置,如可認識到的。客戶機113可使用不同應用程序與服務器103連接,比如瀏覽器應用程序、專用應用程序或其他應用程序,如可認識到的。5根據不同實施方式,不同應用程序運行在服務器103上。而且,一個或更多的數據存儲(datastore)可與服務器103相關聯而用于數據的儲存,如將要描述的。在運行在服務器103上的應用程序中的是驗證應用程序123、聚合應用程序126、數據儲存應用程序129、監控服務133和網絡服務器應用程序136。另外,不同儲存隊列存在于服務器103內,以基于不同應用程序的操作儲存數據。這樣的儲存隊列包括聚合隊列143和儲存隊列146。應理解,上述應用程序僅是可怎樣組織這些應用程序執行的功能的例子。然而,如可認識到的,可能使用可選配置中安排的不同的一組應用程序來執行相同的功能。另外,數據存儲149儲存在服務器103可訪問的記憶體中。儲存在數據存儲149內的是表示度量109的數據模型151,如將要描述的。為此,儲存在數據存儲149內的數據模型151與維度(dimension)153相關聯。維度153是關于在服務器103中從受監控的系統106接收的度量109來指定的。每一個數據模型151關于時間段156而儲存。每個時間段156都與數據存儲149中的相應的維度153相關聯。每個時間段156包括與給定維度153相關聯的多個連續的時間段的之一。維度153包括具有維度標簽和值的密鑰對。如上所述,受監控的系統106產生經由網絡或其他通信系統傳輸或傳送到服務器103的度量109。可選地,有可能的是,受監控的系統106可在服務器103中運行,其中所述的傳送需要在服務器103中應用程序間的傳送。度量109由驗證應用程序123接收,該驗證應用程序123首先保證度量109符合預定義的指定傳送協議及/或格式。另外,驗證應用程序123配置成保證由度量109隨時間指定的維度153的數量不超過預定義的閾值,或以其他方式不表示維度超限,如將要描述的。一旦度量109經驗證應用程序123驗證,它們就被置于聚合隊列143中,以由聚合應用程序126來處理。聚合應用程序126處理聚合隊列143中的度量109并將結果應用于儲存隊列146,該儲存隊列146將由數據儲存應用程序129儲存在數據存儲149中。根據不同的實施方式,聚合應用程序126用來聚合相應的時間段156的多個度量109。為此,聚合應用程序126配置成對接收在服務器103中并由驗證應用程序123驗證的度量109執行時間聚合。為進一步的解釋,根據不同的實施方式,在驗證應用程序123中接收度量109的速率很高。例如,有可能的是,每天接收的度量109可包括多個太字節的數據,比如每天30太字節,盡管數據流的速率可能小于或大于此基準。某些情況中,這樣的數據流速率可能每分鐘包括多達200,000度量,甚至達500,000度量或更多度量,盡管數據流速率可以是任何數據流速率。在經濟上以及就儲存每一個度量109所需的儲存空間和設備方面而言,成本可能相當高。根據一個實施方式,不是試圖儲存所有的度量109本身,而是關于多個連續時間段156的每一個來構造數據模型151。換句話說,由數據模型151表示與每個相應的連續時間段156相關聯的度量109。根據一個實施方式,產生數據模型151的過程包括聚合每個連續的時間段156的度量109,由此產生一個或更多的聚合度量。為此,數據模型151可包括一個或更多的聚合度量。例如,假設每一個連續時間段156規定為一分鐘,盡管應理解時間段156可被規定為任何時間間隔。每個與一給定的時間段156相關聯的度量109都聚合到表示該時間段156的數據模型151中。因此,對于給定的一分鐘的時間段156,與時間段156相關聯的每個度量109都聚合到該時間段156的數據模型151中。為了將多個度量109聚合到數據模型151中,可執行不同的計算,如將要描述的。最終,與每個時間段156相關聯的數據模型151可包括一定個數的值,所述一定個數的值表示關于時間段156的度量109的不同信息。度量109與給定的時間段156相關聯,例如,在度量109具有落在時間段156自身內的時間戳的情況下。與給定度量109相關聯的時間戳可由受監控的系統106產生,或可由驗證應用程序123在服務器103收到度量109時產生并與度量109相關聯。一給定度量109可包括在對多個時間段156的聚合中,其中每個時間段156都與多個不同維度153中的一個維度相關聯。根據本公開的不同實施方式,維度153是數據模型151保存在數據存儲149中的分類。根據不同的實施方式,一個或更多的維度153與服務器103中接收的每個度量109相關聯。維度153最終用于組織數據模型151在數據存儲149中的儲存。也就是說,與給定時間段156相關聯的每一個數據模型151都關于維度153中一個維度而儲存在數據存儲149中。當在服務器103中接收例如具有一個或更多的關聯維度153的度量109時,接著,針對每一個關聯維度153,該度量109被用于與相應時間段156相關聯的聚合。因此,給定度量109可用于這樣的聚合該聚合導致與關聯于度量109的維度153的相應的時間段156相關聯的多個不同的數據模型151。為此,當聚合應用程序126處理給定度量109時,其確定與度量109相關聯的維度153。之后,聚合應用程序126將度量109包括在這樣的聚合中,該聚合導致與包括在度量109內的維度153相關聯的相應的時間段156的數據模型151。根據一個實施方式,一旦度量109被包括在對相應的維度153的一個或更多的時間段156執行的聚合中,則聚合應用程序126丟棄度量109。此后,因產生的實際度量109不再存在,只有相應的時間段156的數據模型151可被訪問,以便執行關于受監控的系統106操作的診斷或其他功能。換句話說,實際度量109是不可恢復的,因為它們實際上在導致產生數據模型151的聚合后并未被儲存。這是有利的,因為儲存關于時間段156的數據模型151的儲存空間大小遠小于儲存實際度量109本身所需的儲存空間大小。代替實際度量109而儲存數據模型151可帶來將要儲存的數據例如以10001的比例或其他比例的縮減。根據一個實施方式,在數據存儲149中借以組織數據的儲存的維度153可基于在服務器103中接收的度量109中維度153的出現而被增加或得到擴展。在這個意義上,增加或擴展維度153指的是,將新的維度153添加到已經存在的維度。根據一個實施方式,新維度153僅通過其關于度量109的第一次出現而生成。根據不同的實施方式,當聚合應用程序126遇到與度量109相關聯的新維度153時,于是聚合應用程序126配置成開始對以包括首次包括新維度153的度量109的時間戳的未決的時間段156開始的新維度153的后續度量109進行聚合。在這方面,數據模型151的儲存是數據驅動的。在數據存儲149中與數據模型151相關聯的維度153是基于在服務器103中接收的度量109生成的。換句話說,在數據存儲149中維度153不是預先配置的或指定的。這有利地為受監控的系統106的操作員在度量109的儲存方面提供了顯著的靈活性。特別地,對根據維度153而聚合并儲存度量109的控制由受監控的系統106的操作員保留。同時,驗證應用程序123配置成檢測維度153的擴展是否包括錯誤。例如,當擴展會導致對于給定的受監控的系統106生成太多維度153時情況可能會這樣,如將要描述的。例如,驗證應用程序123可配置成基于事先協定,在任何給定時間對于給定的實體將維度153的數量限制到維度153的閾值數量。一旦超出極限,驗證應用程序123可在服務器103中產生錯誤,該錯誤通知本地人員維度153的擴展導致維度153的總數超出維度153的可允許的閾值數量。可選地,驗證應用程序123可配置成通過檢測新維度153是否實際上是導致新維度153或先前不存在的維度153的錯誤出現的現有維度153的錯誤變化,而檢測維度153的擴展是否包括錯誤。例如,某些情況中,受監控的系統106可附加給定維度153以時間戳或其他數據。一旦因顯示將接收不到更多帶有與時間段156相關聯的時間戳的度量109而表示對給定時間段156的聚合已完成時,則由聚合產生的數據模型151被放置在儲存隊列146中,以關于相應的維度153而儲存在數據存儲149中。因此,數據存儲149中每個維度153的數據包括與多個連續時間段156相關聯的數據。根據一個實施方式,數據模型151在一有限的時間段中儲存在數據存儲149中。為此,數據儲存應用程序129可配置成在數據模型151已儲存一預定義的時間段后,丟棄數據模型151。儲存時間的長度可依賴于存在多少儲存空間、數據模型151表示的數據的量或將要儲存的其他數據,及/或儲存數據的目的而變化。例如,這樣的時間段可包括兩個星期或其他時間段。在任何情況下,儲存數據的目的,比如儲存數據的商業目的都可決定指定儲存時間,而不管已用儲存空間的大小等等。另外,監控服務133配置成響應于來自客戶機113的請求,基于儲存在數據存儲149中的數據模型151而提供信息。以這種方式,監控服務133配置成基于儲存在數據存儲149中的數據模型151,產生指示受監控的系統106的性能的輸出。為此,網絡服務器應用程序136可包括幫助對監控服務133的瀏覽器訪問或其他訪問的web服務器或其他服務器應用程序。監控服務133可配置成基于儲存在數據存儲149中的數據而產生報告。這種報告可轉發(relay)關于受監控的系統106的過往性能的信息。報告可被預定義并自動產生以發送給給定的實體的客戶機113,或者報告可由客戶機113實時請求。例如,給定的實體可基于數據儲存在數據存儲149中的維度153,請求某些報告。另外,可使用其他的方法來產生在客戶機113上生成的報告等,以便能夠監控受監控的系統106的工作健康狀況。另外,根據另一實施方式,在服務器上可運行的應用程序還包括度量目錄應用程序163,該度量目錄應用程序163在數據存儲166中保存一個或更多的有效度量列表169。度量目錄應用程序163用來保存可用于獲取(retrieve)數據模型151的有效度量109的列表。為此,每當從度量109的一個或更多的實例產生的數據模型151將儲存在數據存儲149中時,提供給度量目錄應用程序163該數據模型151的副本。可選地,度量109的副本本身可發送給度量目錄應用程序163。每個有效度量列表169都可以表格、數據庫或其他數據結構的形式儲存。基于接收到的數據模型151副本,度量目錄應用程序163保存一個或更多的有效度量列表169。特別地,有效度量列表169包括當前儲存在可通過監控服務133訪問的數據8存儲149中的有效度量109的列表。特別地,為了訪問以數據模型151體現的數據以便監控受監控的系統106的操作,客戶機113可首先請求數據儲存在數據存儲149中的度量109的目錄。可選地,當客戶機113嘗試在主頁或其他進入的起點訪問數據存儲149中的數據時,這樣的目錄可自動產生。例如,有效度量列表169可與向服務器103發送度量109的給定的實體相關聯。響應于請求,或在產生將發送給客戶機113的最初的入口比如主頁等時,度量目錄應用程序163配置成產生有效度量109的當前列表或目錄,對于上述的有效度量109的當前列表或目錄,數據模型151當前儲存在數據存儲149中以提供給客戶機113。為保證有效度量109的當前列表或目錄在事實上是當前的,度量目錄應用程序163配置成保存有效度量列表169。為做到這點,根據一個實施方式,如果從受監控的系統106接收的度量109的最近的實例已儲存在數據存儲149中長于預定義的時間段,則不將度量109列在有效度量列表169上。在一個例子中,這樣的時間段可以是按分鐘、小時、天、周、月或其他時間間隔度量的任何時間段。一個示例性時間段可包括2周,盡管時間段可依賴于比如可用儲存空間其他變量等因素而變化。根據一個實施方式,當度量目錄應用程序163從聚合應用程序126接收以度量109本身的形式的或作為未列在有效度量列表169中的數據模型151的新度量109時,度量目錄應用程序163識別與度量109相關聯的當前的時間戳,并將關于度量109的和當前時間戳的信息儲存在相應的有效度量列表169中。如果度量109先前被包括在有效度量列表169中,則度量目錄應用程序163簡單地用度量109的最新接收到的實例的時間戳更新與此度量109相關聯的時間戳。以這種方式,有效度量列表169中的當前有效度量109及/或數據模型151的最新列表被保存。另夕卜,當與有效度量列表169中給定度量109相關聯的時間戳指示與度量109相關聯的最新數據已經儲存在數據存儲149中長于上述預定義的儲存時間段時,度量目錄應用程序163繼續進行以從有效度量列表169中去除這樣的度量109。例如,假設數據模型151只儲存在數據存儲149中一預定義的儲存時間段,則此數據模型151將是不可用的,因為它們可能已被丟棄了。在這種情況下,有效度量列表169中所列度量109已變得過期。因此,通過度量目錄應用程序163從有效度量列表169去除過期度量109保證客戶機113不會嘗試訪問不再存在于數據存儲149中的度量109。另外,操作給定受監控的系統106的實體可因隱私或安全方面的考慮而選擇不將它們的度量109包括在有效度量列表169中。為此,這種實體可使標識符被包括在發送給服務器103的度量109中,該標識符指示度量目錄應用程序163忽略或丟棄這種度量109,以使它們不包括在有效度量列表169中。參考圖2,顯示了由受監控的系統106產生的依據本公開的實施方式的度量109(圖1)的實例。度量109用可擴展標記語言(XML)表示,盡管如此,應理解,度量109可以用其他語言和格式表示,如可認識到的。度量109包括維度153(圖1),例如“名稱(Name)”、“名稱空間(Namespace)”、“Web站點(Website)”、“頁面類型(PageType)”以及“服務器(Server)”。應理解,這些維度153只是可包括在給定度量109中的許多不同種類的維度153的實例。為此,維度153可以是縮減成變量或其他值的任何分類,如可認識到的。還與度量109相關聯的是時間戳173,其指示度量109產生的時間。盡管維度153描示為包括“名稱”和“名稱空間”,但在某些實施方式中這些域可以不包括維度153,且可位于度量109內“維度(Dimensions)”嵌套以外的其他地方。因此時間戳173可識別度量109生成時的受監控的系統106的狀態。在圖2的例子中,時間戳173指示與網頁的產生相關聯的時延(latency)。因此時間戳173在時延在頁面自己產生后被識別出時產生。可選地,度量109可在服務器103(圖1)處接收而不帶時間戳173。這種情況下,驗證應用程序123可配置成在接收到度量109后產生時間戳173并將時間戳173與度量109關聯。度量109還包括值176,該值176描述受監控的系統106(圖1)的操作的某些方面。例如,圖2的度量109中描述的值176是表示與網頁的產生相關聯的時延的數量。然而,應理解,與度量109相關聯的值176可以表示能夠由一個數量表示的或量化成一個數量的受監控的系統106的方面,如可認識到的。另外,度量109還表達了值176的單位179。為提供具體實例,度量109可指示處理器資源的使用百分比,以及與網絡接口相關聯的業務吞吐量。度量109可包括寫到或讀取自磁盤或其他類型的記憶體的字節數。度量109可涉及響應時延(responselatency)、請求計數以及健康及/或不健康主機的實例的數量。另外,度量109可涉及與給定的受監控的系統106的操作或使用相關聯的其他參數。參考圖3,顯示了示出根據本公開的不同實施方式的服務器103中不同構件的操作的框圖。為此,圖3描示了聚合隊列143、聚合應用程序126、儲存隊列146、數據儲存應用程序129和數據存儲149。聚合隊列143包括用時間戳173、不同維度153、值176和單位179表示的數個度量109。聚合應用程序126從聚合隊列143訪問度量109并執行時間聚合,由此如上所述產生每個時間段156的數據模型151。舉例來說,如圖3所示,聚合應用程序126當前正在產生三個不同維度153,即維度Dl、D2和D3的未決的時間段156a的數據模型151。維度D1、D2和D3對應于包括名稱、名稱空間和頁面類型的度量109中的維度153。應理解,這里描述的維度153僅僅提供作為示例,示例中可使用其他維度153。聚合應用程序126計算每一個維度153的未決時間段156a的數據模型151。例如,參考圖3所示的,當前未決時間段156a是以“1001”開始的一分鐘的間隔。對三個維度153有三個未決時間段156a,其中每個時間段156關于數據存儲149中維度153的相應的維度而被儲存。隨著聚合應用程序126從聚合隊列143獲得度量109,其計算相應的維度153或遇到的任何其他維度153的每一個未決時間段156a的數據模型151。在某一時刻,認為對于未決時間段156再沒有度量109可能被接收。這時,聚合應用程序126將對未決時間段156a的度量109的聚合的結果放入儲存隊列146中,以儲存在數據存儲149中。放在儲存隊列146中的數據模型151可包括,例如,多個聚合的度量,所述聚合的度量描述或表示從受監控的系統106(圖1)接收在服務器103中的與相應的時間段156相關聯的度量109。為此,聚合的度量可包括,例如,與相應的時間段156相關聯的度量109的總計數、相應的時間段156的度量109相關聯的值176的平均值、值176中的最大值及/或值176中的最小值。另外,可保存值176的總和,以及任何其他類型的聚合的度量或關于給定時間段156的度量109的其他信息。所計算的聚合度量的類型與對于相應的時間段156執行的聚合度相關。因此,聚合度與保留在關于與給定時間段156相關聯的度量109的數據模型151中的信息的詳細程度相關。如果計算較多的聚合度量,或如果較大量的信息保留在數據模型151中,則聚合度較低。另外,反過來也是正確的,因為如果計算較少的聚合度量,或如果較少量的信息保留在數據模型151中,則聚合度較高。聚合度還與數據模型151產生的時間段156的長度相關。聚合度隨時間段156的減小而減小。相反地,聚合度隨時間段156的增大而增大。所選的聚合度部分決定于需要什么數據監控受監控的系統106。為此,儲存的數據模型151的性質在一定程度上確定能怎樣監控受監控的系統106。例如,可能有必要檢查數據模型151以確定受監控的系統106是否符合操作閾值。數據模型151應反映相對于操作閾值確定及/或測定受監控的系統106的性能所需的數據。例如,如果平均時延變得大于給定閾值,則可能有必要采取校正措施,比如引入額外的資源,比如處理能力以減少時延。可選地,指定每個時間段156的度量109的聚合度,以便生成具有允許一般監控受監控的系統106的性能的所需的聚合度量的數據模型151,所述受監控的系統106的性能可以或可以不相對于一個或更多的預定義的操作閾值而測定。在一些情況下,聚合應用程序126可從聚合隊列143獲得一個晚到的(late)度量109。舉例來說,如圖3所示,聚合隊列143主要包括具有10:01時間戳173的度量109。然而,一個度量109具有“09:52”的時間戳173。這表示由于某種原因,度量109從受監控的系統106接收得相對較遲。這樣“晚到的”度量109表示相對于其他度量109未按時間順序接收的度量109。根據一個實施方式,聚合應用程序126可向數據儲存應用程序129發送對與晚到的度量109相關聯的相應的時間段156的數據模型151的請求。數據儲存應用程序129隨后訪問相應的時間段156的數據模型151并將之返回給聚合應用程序126。在度量109的一個晚到的度量與儲存在儲存隊列146中的時間段156相關聯的情況下,數據儲存應用程序129可在確定給定時間段156還未儲存在數據存儲149中后,搜索儲存隊列146。響應于來自聚合應用程序126的請求,數據儲存應用程序129返回與度量109的一個晚到的度量的時間段156相關聯的數據模型151,以使得相應的數據模型151可用度量109的該個晚到的度量更新。之后,聚合應用程序126將數據模型151的該個更新的數據模型放置到儲存隊列146中,以放置到數據存儲149中。在這方面,數據模型151的該個更新的數據模型可儲存在數據存儲149中。在一種可選情況下,數據模型151的該個更新的數據模型可改寫(writtenover)先前數據模型151,如可認識到的。這提供了顯著的優勢,因為聚合應用程序126能夠保存時間段156中老的(aged)時間段的值。這克服度量109可能在經過不同網絡比如互聯網或其他網絡途中被阻的情況,如可認識到的。另外應注意,對給定維度153儲存的時間段156可具有大于服務器103所記的當前時間的時間戳173,因為受監控的系統106可能具有相對于服務器103的時鐘設置的較早的時鐘。因此,與相應的時間段156相關聯的時間戳173可相對服務器103所知時間,延伸到未來。根據一個實施方式,指定截止(cutoff),這使得接收的時間戳173相對于服務器11103的時鐘在未來中太遙遠的度量109被忽略,或發生錯誤,這要求在受監控的系統106中采取校正措施以解決時間戳173問題。根據一個實施方式,未來時間戳173可允許的極限是距服務器103的當前時間一個小時,或如可認識到的其他時間極限。這樣的時間極限反映了事實可能有與受監控的系統106相關聯的故障,而使得正在產生相對于度量109產生的真實時間在未來中太遙遠的時間戳173。另外,使用聚合隊列143和儲存隊列146,并配置不同的功能構件,以便發生失電等情況時防止數據的丟失。接下來參考圖4,顯示了根據不同實施方式的結合圖3描述的不同構件的操作的另一個例子。如圖4所示,在聚合隊列143中接收度量109過程的某一時刻,遇到一個新維度153。特別地,新維度“頁面類型=頁面1(pagetype=pagel)”出現在聚合隊列143中。響應于新維度153的出現,聚合應用程序126產生與新維度153相關聯的新未決時間段D4。同樣地,聚合應用程序126可向數據儲存應用程序129傳達已生成了用于儲存在數據存儲149中的新維度D4。可選地,數據儲存應用程序129在其從儲存隊列146訪問與新維度153相關聯的數據模型151時,可將與新維度153相關聯的相應的數據模型151自動地儲存在數據存儲149中。這示出了這樣的事實數據模型151在數據存儲149中的儲存是數據驅動的。也就是說,數據自動地基于與通過服務器103從受監控的系統106接收的度量109相關聯的維度153關于新維度153而被儲存,如可認識到的。參考圖5,顯示了示出鑒于前述討論的聚合應用程序126的不同功能的一個實例的流程圖。可選地,圖5的流程圖可看作描示了在服務器103(圖1)中實現的方法的步驟。圖5的流程圖表示,例如,對于從聚合隊列143(圖3)獲得的每個度量109(圖2)所運行的例行程序。在任何給定時間,假設給定度量109已從聚合隊列143(圖3)獲得,則在框250中,聚合應用程序126確定與度量109相關聯的時間戳173(圖2)相對于聚合應用程序126保存的相應的維度153(圖3)的當前未決時間段156a(圖3)是否未按時間順序。如果一個或更多應計入當前度量109的數據模型151(圖3)已經儲存在了儲存隊列146(圖1)中或關于維度153的相應的維度的數據存儲149(圖1)中,則度量109可能未按順序。如果在框250確定當前度量109未按時間順序,則聚合應用程序126繼續進行到框253。否則,聚合應用程序126前進到框256。在框253中,聚合應用程序126實現對一個或更多與相對于聚合應用程序126的當前未決時間段156未按時間順序的度量109相關聯的數據模型151的更新。這可包括與數據儲存應用程序129(圖1)的通信以便檢索如上所述需被更新的相應的數據模型151。之后,聚合應用程序126終止,如所示。在框256中,聚合應用程序126確定新維度153是否存在于從聚合隊列143獲得的當前度量109中。如果存在,則聚合應用程序126繼續進行到框259。否則,聚合應用程序126前進到框263。在框259中,聚合應用程序126實現用于新維度153的新儲存桶和未決時間段156a的設置。此意義上的儲存“桶”是表示關于新維度153的數據模型151或其他數據在數據存儲149中的儲存的抽象概念。為了實現新維度153的新儲存桶的設置,聚合應用程序126可與數據儲存應用程序129通信,以通知數據儲存應用程序129需要用于新維度153的新儲存桶。可選地,聚合應用程序126可簡單地生成與用于新維度153的新未決時間段156a相關聯的新數據模型151。注意,如果有這樣的時間段156,在該時間段156內沒有接收到可根據其計算數據模型151的度量109,則不為這樣的時間段156儲存數據模型151。在此意義上,給定維度的由時間段156表示的時間記錄156可具有不帶數據的間隙。聚合應用程序126從框259繼續進行到框263。在框263中,聚合應用程序126確定與當前度量109相關聯的時間戳173(圖2)是否將被包括在對由聚合應用程序126當前保存的時間段中的一未決時間段的數據模型151的計算中,或者新度量109是否將被包括在對一個或更多的維度153的下一連續時間段156的數據模型151的計算中。假設度量109包括與時間段156的下一連續時間段相關聯的維度153,則聚合應用程序126繼續進行到框273。否則,聚合應用程序126前進到框276。在框273中,計算一個或更多與依次與當前度量109相關聯的新未決時間段156a相關聯的數據模型151。之后,在框279中,一個或更多與被認為完成了的對應時間段156相關聯的數據模型151被放置在儲存隊列146(圖3),以儲存在數據存儲149(圖1)中。在這方面,在放置在儲存隊列146之前,聚合應用程序126可為每個維度153將最小數量的連續時間段156保存作為未決時間段156a。這樣的時間段156可在先入先出的基礎上保存,如可認識到的。關于是否將與相應的時間段156相關聯的數據模型151放置到儲存隊列146中的決定依賴于,是否認為將接收到對于相應的一個或更多的時間段156未被處理過的任何附加的度量109。這可確定,在任何給定時間,每個維度153有多少個連續時間段156被聚合應用程序126保存作為了未決時間段。假設在框279中有一些未決時間段156a放置在儲存隊列中,之后,聚合應用程序126終止,如所示。參考框276,假設當前度量109的時間戳173不要求生成如上所述的相應的維度153的新時間段156,則在框276中,基于從聚合隊列143接收到的當前度量109重新計算當前未決時間段156的數據模型151。之后,聚合應用程序126終止。參考圖6,顯示了描示聚合應用程序126在更新與已經儲存在數據存儲149中的(圖1)的給定維度153(圖1)的時間段156(圖1)相關聯的數據模型151(圖3)方面的功能的例子的流程圖,其中度量109(圖2)之一已由聚合應用程序126未按時間順序接收。可選地,圖6的流程圖可視為在服務器103(圖1)中實現的方法的步驟。以框303開始,在接收到未按時間順序的度量109,且該度量將被計入對該度量109中指示的相應維度153的先前儲存的時間段的數據模型151的計算中時,聚合應用程序126請求對應于晚到的度量109的時間戳173(圖2)和維度153的對應時間段156的數據模型151。該請求可提供給數據儲存應用程序129,該數據儲存應用程序可獲得所請求的數據模型151并將之傳回聚合應用程序126。在框306中,聚合應用程序126確定所請求的數據模型151是否已經從數據儲存應用程序129接收到,或以其他方式對于聚合應用程序126來說可用。假設情況如此,則在框309中聚合應用程序126基于后接收到的度量109重新計算相應時間段156的數據模型151。之后,在框313中,相應時間段156的數據模型151被放置在儲存隊列146中以關于給定維度153的相應時間段而最終儲存在數據存儲149中,如上所述。如在上面提到的,情況可能是,相應時間段156的新計算的數據模型151最終改寫先前存在的時間段156。之13后,聚合應用程序126終止,如所示。參考圖7,顯示的是描示度量目錄應用程序163在將度量109(圖1)保存并添加到有效度量列表169(圖1)方面的功能的例子的流程圖。可選地,圖7的流程圖可視為在服務器103(圖1)中實現的方法的步驟。以框331開始,度量目錄應用程序163確定指示度量109或數據模型151將不包括在有效度量列表169中的標識符是否與度量109或數據模型151(圖1)相關聯。如果關聯,則如圖所示,度量目錄應用程序163終止,其中度量109或數據模型151被忽略及/或丟棄。否則,度量目錄應用程序163繼續進行到框333。在框333中,度量目錄應用程序163檢查來自聚合應用程序126或其他源的度量109或表示多個實例的度量109的數據模型151,以識別這樣的度量109當前是否作為有效度量列表169的部分而存在。如果是這樣的話,則度量目錄應用程序163繼續進行到框336。否則,度量目錄應用程序163移到框339。在框336中,度量目錄應用程序163關于度量109自身將度量109的最新時間戳儲存在有效度量列表169中。之后,度量目錄應用程序163的此功能終止。在框339中,度量目錄應用程序163將先前不存在的度量109添加到有效度量列表169。之后,在框343中,新添加的度量109的時間戳關于新添加的度量109被儲存在有效度量列表169中。之后,度量目錄應用程序163的此功能終止,如所示。參考圖8,顯示的是描示度量目錄應用程序163(圖1)在從有效度量列表169(圖1)中去除過期或過時度量109(圖1)方面的另一功能的例子的流程圖。可選地,圖7的流程圖可視為在服務器103(圖1)中實現達成上述過程的方法的步驟。度量目錄應用程序163的功能包括用于儲存在有效度量列表169中的每一個度量109的循環的循環指令(loop)。以框353開始,度量目錄應用程序163得到有效度量列表169中考慮的當前度量109的最新的時間戳173(圖2)。然后,在框356中,假定數據模型151(圖1)只可儲存一預定義的時間段,度量目錄應用程序163基于與度量109相關聯的時間戳173,確定所述度量109是否過期。如果相應度量109是過期的,則度量目錄應用程序163繼續進行到框359,在該框359中,過期度量109從有效度量列表169中去除。如果在框356中確定度量109不過期,則度量目錄應用程序163的此部分移到框363,以便指出列在有效度量列表169中待考慮的下一度量109。一旦度量109從有效度量列表169中去除,度量目錄應用程序163繼續進行到框363以指出待考慮的下一度量109。因此,度量目錄應用程序163的此部分連續檢查每一個度量109,以識別過期的度量109并將其從有效度量列表169中去除。接下來參考圖9,顯示的是依據本公開的實施方式的服務器103(圖1)的一個例子的示意性的框圖。服務器103包括處理器電路,例如,具有處理器403和記憶體406的處理器電路,處理器403和記憶體406都耦合到本地接口409。為此,服務器103可包括,例如,具有這種結構的服務器計算機。本地接口409可包括,例如,具有伴隨的地址/控制總線或其他總線結構的數據總線,如可認識到的。儲存在記憶體406中的是數據和由處理器403可運行的一些構件。特別地,儲存在記憶體406中的是驗證應用程序123、聚合應用程序126/126a、數據儲存應用程序129、監控服務133、網絡服務器應用程序136、度量目錄應用程序163以及可能的其他應用程序。另外,服務器操作系統可儲存在記憶體406中并由處理器運行,如可認識到的。同樣地,聚合隊列143、儲存隊列146、數據存儲149和數據存儲166可儲存在記憶體406中,或者它們可以儲存在服務器103可訪問的某些其他記憶體中。應理解,可能有儲存在記憶體406中并可由處理器403運行的其他的應用程序,如可認識到的。同樣地,其他數據可以儲存在記憶體406中并由處理器403訪問。根據一個實施方式,每一個數據存儲149和166可包括,例如,數據庫或其他合適的數據存儲結構。其中在此討論的任何構件都以軟件、一定數量的程序設計語言例如,C、C++、Java、JavaScript、Perl、Python、Flash或其他程序設計語言中的任一程序設計語言的形式實現。一定數量的軟件構件儲存在記憶體406中并可由處理器403運行。在這方面,術語“可運行(executable)”指呈最終能夠由處理器403運行的形式的程序文件。可運行的程序的例子可以是,例如,能夠轉換成可載入記憶體406的隨機訪問部分并由處理器403運行的格式的機器代碼的經編譯的程序,或可以按諸如可載入記憶體406的隨機訪問部分并由處理器403運行的目標代碼等適當格式表示的源代碼,等等。可運行程序可儲存在包括例如,隨機訪問記憶體、只讀記憶體、硬盤驅動器、光盤(⑶)、軟盤或其他記憶體構件的記憶體406的任何部分或構件。記憶體406在此定義為易失性和非易失性記憶體和數據存儲構件。易失性構件是失電后不保留數據值的構件。非易失性構件是失電后保留數據的構件。因此,記憶體406可包括,例如,隨機訪問記憶體(RAM)、只讀記憶體(ROM)、硬盤驅動器、經由關聯的軟盤驅動器訪問的軟盤、經由光盤驅動器訪問的光盤、經由合適的磁帶驅動器訪問的磁帶及/或其他記憶體構件,或任何兩個或更多的這些記憶體構件的組合。另外,RAM可包括,例如,靜態隨機訪問記憶體(SRAM)、動態隨機訪問記憶體(DRAM)或磁性隨機訪問記憶體(MRAM)以及其他這樣的裝置。ROM可包括,例如,可編程只讀記憶體(PR0M)、可擦可編程只讀記憶體(EPROM),電可擦可編程只讀記憶體(EEPROM),或其他類似記憶體裝置。盡管在如上所述的服務器103上運行的不同構件可如上所討論的實施在通用硬件所運行的軟件或代碼中,作為可選的情況,它們還可實施在專用硬件或軟件/通用硬件和專用硬件的組合中。如果它們實施在專用硬件中,則它們能實現為使用一定數量的技術的任一技術或組合的電路或狀態機。這些技術可包括,但不限于,具有用于通過施加一個或更多的數據信號實現不同邏輯功能的邏輯門的分立邏輯電路、具有合適的邏輯門的專用集成電路,或其他構件等。圖5-8的流程圖顯示了聚合應用程序126和度量目錄應用程序163的部分的功能和操作。如果在軟件中實施,每個塊都可表示包括程序指令以實現指定邏輯功能的模塊、片段或代碼的部分。程序指令可以體現為包括人可讀語句的源代碼的形式,上述人可讀語句用包括由合適的運行系統,比如計算機系統或其他系統中的處理器可認出的數字指令的程序設計語言或機器代碼書寫。機器代碼可轉換自源代碼,等。如果在硬件中實施,每個塊可表示實現指定邏輯功能的電路或一定數量的互聯電路。盡管圖5-8的流程圖顯示了特定的運行順序,應理解運行順序可不同于所描示的。例如,兩個或更多的塊的運行順序相對于所示順序可以是混雜的(scrambled)。另外,圖5-8中連續顯示的兩個或更多的塊可并行或部分并行地運行。另外,任何數量的計數器、狀態變量、告警信號燈(warningsemaphore)或消息都可添加到這里描述的邏輯流程,用于加強使用、統計、性能測定或提供故障處理幫助等用途。應理解,所有這些變化形式都在本公開的范圍內。另外,在如上所述的服務器103中實現的驗證應用程序123、聚合應用程序126、數據儲存應用程序129、監控服務133、度量目錄應用程序163以及任何其他構件包括軟件或代碼,它們可實施在任何計算機可讀的介質以由或結合指令運行系統,比如計算機系統或其他系統中的處理器使用。在此意義上,邏輯可包括,例如,包括能從計算機可讀介質得到并由指令運行系統運行的指令和聲明的語句。在本公開中,“計算機可讀介質”可以是能夠包含、儲存或保存軟件或代碼以由或結合指令運行系統來使用的任何介質。計算機可讀介質可包括許多物理介質,例如電子的、磁的、光的、電磁的或半導體介質的任何一種介質。合適的計算機可讀介質的更具體的例子可包括,但不限于,磁帶、磁軟盤、磁性硬盤驅動器或光盤。同樣地,計算機可讀介質可以是隨機訪問記憶體(RAM),包括,例如,靜態隨機訪問記憶體(SRAM)和動態隨機訪問記憶體(DRAM)或磁性隨機訪問記憶體(MRAM)。另外,計算機可讀介質可以是只讀記憶體(ROM)、可編程只讀記憶體(PROM),可擦可編程只讀記憶體(EPROM),電可擦可編程只讀記憶體(EEPROM),或其他類型的記憶體裝置。應強調,本公開的上述實施方式只是為了清楚理解公開的原理而敘述的實現的可能的實例。可對上述實施方式作出許多變化形式和修改,而實質上不偏離公開的精神和原理。期望所有這些修改和變化形式在此包含在本公開的范圍內并受后面的權利要求保護。權利要求一種方法,包括步驟根據描述一系統的狀態的度量的流而在一服務器中產生多個數據模型,每一個度量與多個連續時間段中的一個時間段相關聯,每個數據模型表示與連續時間段的一個對應的時間段相關聯的度量;儲存所述數據模型;以及丟棄在產生所述數據模型中的至少一個數據模型時使用過的每一個度量。2.如權利要求1所述的方法,還包括步驟在所述服務器中從所述系統接收所述度量的流,其中所述服務器與所述系統數據通信。3.如權利要求1所述的方法,還包括步驟儲存所述數據模型中的每一個數據模型一預定義的時間段;以及丟棄所述數據模型中的處在所述預定義的時間段結束時的每一個數據模型。4.如權利要求3所述的方法,還包括步驟保存對其儲存了至少一個數據模型的度量的列表。5.如權利要求1所述的方法,還包括步驟基于所述數據模型產生指示所述系統的性能的輸出。6.如權利要求1所述的方法,還包括步驟用所述度量中未按時間順序接收的一個度量更新儲存的一個數據模型。7.如權利要求1所述的方法,其中根據度量在所述服務器中產生所述數據模型的步驟還包括步驟對于每一個連續時間段,保存從所述系統接收的度量的計數。8.如權利要求1所述的方法,其中根據度量在所述服務器中產生所述數據模型的步驟還包括步驟對于每一個連續時間段,識別從所述系統接收的度量中的一個最小的度量。9.如權利要求1所述的方法,其中根據度量在所述服務器中產生所述數據模型的步驟還包括步驟對于每一個連續時間段,識別從所述系統接收的度量中的一個最大的度量。10.如權利要求1所述的方法,其中根據度量在所述服務器中產生所述數據模型的步驟還包括步驟對于每一個連續時間段,計算從所述系統接收的度量的平均值。11.如權利要求1所述的方法,其中根據度量產生所述數據模型的步驟還包括步驟在所述服務器中對與每個連續時間段相關聯的度量進行聚合,由此針對每一個連續時間段產生至少一個聚合度量。12.如權利要求11所述的方法,其中對每個連續時間段的度量的聚合度導致允許相對于至少一個預定義的操作閾值監控所述系統的性能的至少一個聚合度量。13.一種系統,包括至少一個服務器;在所述至少一個服務器中可運行的、根據描述所述至少一個系統的狀態的度量的流產生多個數據模型的邏輯,所述數據模型的每一個數據模型都表示對所述度量的子集的時間分組,其中至少一個維度與所述度量的每一個度量相關聯;在所述至少一個服務器中可運行的、關于所述維度中的相應的維度將所述數據模型儲存在記憶體中的邏輯;以及在所述至少一個服務器中可運行的、基于與所述流中的度量相關聯的至少一個先前不存在的維度的出現而增加在所述記憶體中與所述數據模型相關聯的維度的邏輯。14.如權利要求13所述的系統,還包括保存在所述至少一個服務器中的閾值,所述閾值限制所述記憶體中與所述數據模型相關聯的維度的總數。15.如權利要求14所述的系統,還包括在所述至少一個服務器中可運行的、當增加維度的步驟導致所述維度的總數超過所述閾值時產生錯誤的邏輯。16.如權利要求13所述的系統,還包括在所述至少一個服務器中可運行的、檢測維度的增加是否包括錯誤的邏輯。17.如權利要求16所述的系統,其中在所述至少一個服務器中可運行的、檢測維度的增加是否包括錯誤的所述邏輯涉及檢測先前存在的維度的變化,該變化導致與所述流中的度量相關聯的至少一個先前不存在的維度的出現。18.如權利要求16所述的系統,其中在所述至少一個服務器中可運行的、檢測維度的增加是否包括錯誤的所述邏輯涉及檢測與所述度量相關聯的多個值中的不正確的變化。19.如權利要求13所述的系統,還包括在所述至少一個服務器中可運行的、基于所述數據模型產生指示所述系統的性能的輸出的邏輯。20.一種方法,包括步驟產生描述至少一個系統的狀態的度量的流;使至少一個維度與所述度量中的每一個度量關聯,其中基于所述度量中的每一個度量產生的數據被關于所述至少一個維度儲存;向一服務發送具有所述至少一個維度的所述度量的流;以及使先前不存在的維度與所述流中度量的一個度量關聯,以使基于所述度量中的所述一個度量產生的數據關于所述先前不存在的維度儲存。全文摘要在不同實施方式中公開了提供用于儲存海量數據,例如度量的系統和方法。根據描述系統狀態的度量的流在服務器中產生了多個數據模型。度量的每一個與多個連續時間段中的一個時間段相關聯,且每個數據模型表示與連續時間段中的一個對應的時間段相關聯的度量。數據模型儲存在數據存儲中,且將在產生至少一個數據模型時用過的每一個度量丟棄。另外,數據模型的每一個都可視為表示對度量的子集的時間分組。一個或更多的維度可與每個度量相關聯。數據模型關于維度中的相應的維度儲存在記憶體中。基于與所述流中的度量相關聯的至少一個先前不存在的維度的出現,在所述記憶體中增加與所述數據模型相關聯的維度。文檔編號G06F17/30GK101894119SQ20091020552公開日2010年11月24日申請日期2009年10月20日優先權日2008年10月20日發明者丹尼爾·L·奧塞奇,凱特琳·R·施密特,大衛·R·阿扎里,布萊恩·丹內利,普拉仙特·L·薩爾瑪,蒙迪·范德彼爾特申請人:亞馬遜技術股份有限公司