專利名稱::用于時間數據聚合的時間滑動操作器的制作方法
技術領域:
:此處描述的主題涉及用于計算關系數據庫中的聚合度量值的操作器(operator)。
背景技術:
:許多當前可用的計算機應用提供恢復數據庫的歷史快照的能力。事實上,這種應用允許通過及時地在給定點瀏覽數據的快照來進行“時間旅行”的能力。其它相關的數據庫功能可以包括在數據的很多歷史狀態(tài)的狀態(tài)上進行聚合的能力,這可被稱之為時間聚合(temporalaggregation)。在現代化的高性能關系數據庫中,并發(fā)交易的隔離對于交易的正確執(zhí)行是一個很重要的要求。如果沒有交易的隔離,并發(fā)執(zhí)行的交易可能導致讀取由一個或多個交易寫入的或者由隨后被中止和回滾的一個或多個交易導致的一個或多個狀態(tài)寫入的不一致的中間狀態(tài)。這被稱之為“錯亂讀取(dirtread)”。可以利用多版本并發(fā)控制方法來保證一致性的讀操作。對于并發(fā)控制機制的一個重要考慮是最小化負面的性能影響。利用多版本并發(fā)控制,并發(fā)的讀操作能方便地看到數據庫的一致視圖而不阻止并發(fā)的寫操作。這樣的方法與基于共享讀取鎖存的并發(fā)控制相比能允許更高程度的并發(fā)性。利用多版本并發(fā)控制,不是通過覆蓋現有的記錄而是通過插入新的版本來執(zhí)行更新。一個交易可以寫入一些數據條目的新版本,同時并發(fā)交易仍然可以對這些數據條目的以前版本進行讀取訪問。典型的,一些類型的時間戳(或等效機制)與每個版本相關聯。這個時間信息能被用于決定哪些版本對于哪些交易是可見的。刪除能夠通過插入刪除版本來實現或者通過一些指示以前的版本不再對后來的交易可見的其它機制來實現。為了保持交易的跟蹤和為了執(zhí)行用于多版本并發(fā)控制的時間戳,數據庫管理系統(tǒng)的交易管理器或相當的功能體能夠保持兩種類型的標識符:交易標識符(transactiοηidentifier,TID)和提交標識符(commitidentifier,CID),TID是一個整數,其反映了寫交易的起始點的順序,并且每當一個寫交易開始或當一個讀交易轉換成一個寫交易則遞增,CID可以是一個值(例如,一個整數,一個實數等),其反映了寫交易的提交順序,并且可被控制以連續(xù)的次序進行排序。交易既可以是讀交易,也可以是寫交易(其可以包括添加,刪除,或改變表的內容)。通常,交易可以以讀交易開始,但隨后被交易管理器提升至寫交易。TID可以被分配給寫交易作為其唯一標識符。在一些示例中,TID可以用來存儲進行了未提交改變的交易。交易管理器可以在內部保留最大CID,即最近提交的順序號。當交易被提交時,最大CID可以被遞增并且新值可以被分配給提交的交易。因此CID可以被認為相當于一個提交時間戳。
發(fā)明內容在一個方面提供了一種包括訪問數據庫的排序的歷史表格的方法。該排序的歷史表格包括與對數據庫表格中的值的一個或多個更新、插入和刪除相關聯的多個提交標識符。該排序的歷史表格還包括與一個或多個值的變化的首次發(fā)生相關聯的提交標識符的順序列表。在單向過程中遍歷排序的歷史表格,以使用優(yōu)化算法來計算聚合函數。該優(yōu)化算法啟動基于所選擇的用于跟蹤被無效的值到其相應的提交標識符的方法來計算值的聚合度量值。為數據庫表格的當前版本生成計算的度量值,然后提升所計算的度量值。在本主題的一些變化形式中,可以有選擇地以任何可行的組合形式包括一個或多個下列特征。提升可以有選擇地包括下列事項中的一個或多個:存儲計算的度量值、通過用戶界面顯示器呈現計算的度量值、以及發(fā)送包含該計算的度量值的電子消息。優(yōu)化算法可以有選擇地包括下列事項中的一個或多個:生成無效索引、為多個提交標識符中的每個提交標識符生成單獨的位列表、以及生成先前版本數組。依據聚合函數的優(yōu)化算法可以有選擇地從多個算法中選擇,該選擇包括對多個算法中的每一個算法評估與一組優(yōu)化標準相關的數據庫表格的一個或多個屬性。遍歷可以有選擇地包括下列事項中的一個或多個:基于在每一個提交標識符處的值的變化遞增變量(例如,用于諸如‘和’及‘計數’的聚合函數的單一變量)、創(chuàng)建對應于每一個提交標識符的鏈接列表、以及創(chuàng)建對應于每一個提交標識符的排序的列表。所計算的度量值可以有選擇地包括和值、計數值、平均值、最小值、最大值、中值、模值和偏值中的一個或多個??梢酝ㄟ^以提交標識符依序對歷史表格進行排序而有選擇地生成所述排序的歷史表格。如果歷史表格是自然有序的,可以不需要再次排序。在附圖和下面的描述中闡述此處描述的主題的一個或多個變化形式的細節(jié)。通過該描述、附圖和權利要求,此處描述的主題的其它特征和優(yōu)點將是顯而易見的。盡管為了說明的目的關于企業(yè)資源軟件系統(tǒng)或其它商業(yè)軟件方案或架構描述了本公開的主題的某些特征,應當容易理解的是,這些特征并不是用于限制的目的。本公開的權利要求書旨在定義要求保護的主題的范圍。包含在說明書中并構成說明書一部分的附圖,顯示了此處公開的主題的某些方面,并且與說明書一起幫助解釋與公開的實施方式相關的一些原理。在附圖中,圖1A和圖1B是分別示出需要編碼和制表操作來執(zhí)行示范性查詢的示例的圖;圖2示出了歷史表格的一個示例;圖3示出了遍歷排序的歷史表格以計算諸如和值的聚合的示例;圖4示出了遍歷排序的歷史表格以計算諸如最大值的聚合的示例;圖5示出了遍歷排序的歷史表格以計算諸如最大值的聚合的另一個示例;圖6A示出了可用于計算聚合值的數據結構的另一個示例;圖6B和圖6C示出了用于跟蹤被無效的值的算法的示例;圖7是描述具有與本主題的實施方式一致的一個或多個特征的方法的一些方面的處理流程圖;圖8說明了數據庫體系結構的規(guī)范層的示例,同時強調可能需要適應或擴展以用于實施本主題的組件;圖9是示出需要編碼和制表操作以執(zhí)行另一個示范性查詢的示例的圖;圖10是描述與本主題的至少一些實施方式一致的商業(yè)軟件系統(tǒng)體系架構的特征的圖;圖11是描述與本主題的至少一些實施方式一致的數據庫管理系統(tǒng)體系架構的特征的圖;圖12是描述與本主題的至少一些實施方式一致的另一個數據庫管理系統(tǒng)體系架構的特征的圖;以及圖13是描述與本主題的至少一些實施方式一致的多租戶數據庫結構的特征的圖。當實際應用時,類似的參考數字表示類似的結構、特征或元件。詳細描述為了保持訪問關于數據庫的變化的時間信息,交易管理器可以保持將CID整數數值映射到實際的時間戳的歷史表格或其它列表。存儲在歷史表格中的信息對于大量的業(yè)務需求來講是很有用的。一個示范性的使用情況的示例是及時計算在不同點的聚合值。聚合值可以是和值、計數值、平均值、最小值或最大值、中值、模值(mode)、偏值(skewness),或者與數據集相關的信息的一個或多個其它統(tǒng)計或數值表示。這種類型的查詢一般不能使用SQL或其它關系數據庫管理系統(tǒng)編程語言來簡明表達。此外,用強力(bruteforce)計算方法執(zhí)行這樣的查詢,可能是不可接受的處理器開銷并且因此大量消耗系統(tǒng)資源。鑒于此,需要通過擴展當前的編程語言標準以及有效的實施來在SQL中(或類似物)提供更優(yōu)良的表現。在目前可用的方法中,計算按時間分組的聚合值可能是非常復雜的和非常計算密集型的??赡苄枰獣r間敏感聚合的查詢的簡單例子是請求在一段時間內脫銷(庫存總量=O)產品的最大數量。圖1A顯示了用于計算對這種查詢的響應的SQL代碼分段的一個例子。這種代碼段需要如圖1B所示的提交ID歷史表格102和交易歷史表格104的接合,并且這種代碼分段對于中度到大尺寸的交易表格可能會非常慢,甚至在很高性能的計算系統(tǒng)上亦是如此。這種高系統(tǒng)資源負載的原因的至少一部分可以追溯到使用目前可用的方法對這種查詢的低效執(zhí)行。例如,有必要遍歷每一個CID去識別每個數據值如何發(fā)生了改變,并且通常無法避免對于已經遍歷的值的遞歸表示(recursion)??赡苄枰嬎惴浅4蟮牟娣e(ClOSS-piOdllCt),以至于叉積的大小以及由此查詢的執(zhí)行時間可能與表格的尺寸的平方成比例。此外,查詢的編碼可能要求非常復雜的語法,這會潛在地導致編碼錯誤。進一步的困難還會由于優(yōu)化處理時間范圍所必需的接合條件所帶來的挑戰(zhàn)而出現??偟膩碚f,目前還沒有執(zhí)行這種計算的有效算法。為了利用現有的解決方案解決這些和潛在的其它問題,符合本主題的一個或多個實施方式的方法、系統(tǒng)、制造物品和類似物,除了其它可能的優(yōu)點外,還可以提供能夠及時地啟用查詢來計算多個(可選擇地為所有)點的特定狀態(tài)、聚合、或者類似事項的時間滑動操作器(time-slideroperator)或類似功能,例如,所述多個點或所有點為數據庫已被修改的一些或全部提交ID點。使用這里描述的一個或多個特征或它們的功能等效特征,可以用更簡潔的方式表達這樣的查詢,同時也使查詢優(yōu)化器選擇更有效的代碼實施方式。本主題的實施方式能夠流線化用于計算復雜和大型的數據庫表格的聚合度量值所需的操作。不是與表格尺寸的平方成比例,而是如果表格是被“CID來自(CIDfrom)”列206分類,與本文所描述的方法所類似的方法可以有利地與表格尺寸成線性比例(取決于使用的聚合函數),并可以使用編碼策略使得查詢簡潔且更容易理解。在一些實施方式中,歷史表格可以操作于附加模式,其中“以‘CID來自’排序”的順序是自然給出的。一些尖端技術的(state-of-the-art)數據庫可以包括檢測和利用這種以“CID來自”列206排序的能力??梢栽诟叩燃壣媳槐硎緸椤耙訡IDO分組”的組操作器可用于通過一種類型的更改事件進行聚合。CID可以是虛擬屬性,并且不需要被持久化(persisted)。下面對此問題提供更多的細節(jié)。間隔操作器可以用于限制用來回答查詢所必需的操作的范圍的時間范圍。與一個或多個實施方式相一致,可以為歷史表格中的每個CID計算聚合值。這種計算可以支持多種不同的聚合函數(例如,最小值、最大值、平均值、計數值、和值、中值,等等)。本主題的實施方式還可以解決與先前可用的用于計算在大型數據庫表格中的聚合值的方法有關的一個或多個潛在的問題。這些問題可以包括但不僅限于降低對下列事項的需求:存儲要被聚合的值、處理表示在某個CID有效的值的中間結果、優(yōu)化基于聚合函數的存儲類型,等等。作為計算的一部分,可能必須及時地識別表格中已被無效的值,從而可以將這些值從中間結果中移除。如此處所描述的,符合本主題的方法可以包括聚合函數的遞增計算,這是隨著歷史表格在單向過程(singlepass)中被遍歷而對歷史表格中的每個CID計算的。圖2示出了這樣一種使用歷史表格200的簡化示例的方法的一些特性,歷史表格200包括一個順序列表,其列出了由行或記錄標識符(就象在“ID”列202中那樣)標識的記錄的值的變化?!爸怠绷?04列出了在ID列202中標識的記錄或行的值,并且“CID來自”列206和“CID去往”列210分別指示這樣的CID值:在這些CID值之間位于值列204中的值對于被識別的記錄或行是有效的。例如,在圖2中,記錄或行IDI的值在CID4從2變到5。作為符合本主題的實施方式的方法的一部分,歷史表格可以在“CID來自”列206上排序??商鎿Q地,如上面所提到的,一些現代化數據庫管理程序可以包括檢測和利用直接提供的“CID來自”排序的能力。CID的排序列表可以在一個過程中被順序地遍歷。在每個CID,存儲在單個變量中的聚合值可以根據在那個CID處的記錄或列行的值重新計算。圖3顯示了說明本主題的實施方式的一個例子的圖300,其中聚合函數是求和。類似的方法可以適用于其它求和函數,例如計數、求平均等,其不依賴于對正在被聚合的數據的結構的了解。在圖2中的歷史表格200可以根據“CID來自”列206排序,或者,‘CID來自’順序可以從提供該順序而不必利用排序函數的數據庫管理程序中自然地獲取。一個聚合函數,在本例中為各值的和,可以通過遍歷排序的歷史表格200來計算。在CID1,該值為空。然后,在CID2,發(fā)生在其中插入值2和3的插入302(例如,圖2中的歷史表格200的每個前兩行),產生當前的和為5。在CID3,在第二個插入304中插入第三個值2(例如,圖2中歷史表格200的每個第三行),其產生當前的和為7。在CID4,對于第一個值進行更新306,使得第一個值從2變到5(例如,圖2中歷史表格200的每個第四行),并且將和更新為10。繼圖2中的歷史表格200所示的過去的例子,CID5可以是對第二個值(其曾經是3)的刪除310,從而導致和減少到7。圖4示出了說明本主題的實施方式的一個例子的圖400,其中聚合函數是計算最大值。這種方法也可以用于其它聚合函數,例如計算最小值、中值、或者一些需要反映表格、列等中的值的當前狀態(tài)的鏈接列表結構的其它度量。在這個例子中,聚合函數可以存儲按值排序的鏈接列表,其利用計數器來指示每個值的實例的數量。其它的實施方式也是有可能的,例如最小/最大的堆(heap)或數組(array)。再次參考圖2中的示例歷史表格200,對于按“CID來自”列206排序的列表進行遍歷導致形成基于CID2的第一鏈接列表402,其中在進行值的插入之后該列表中的第一個值是3,并且第二個值是2。在這一點上,在歷史表格200的遍歷過程中,最大值404是3。在CID3,第三個值2的插入導致第二鏈接列表406,其中最大值404保持為3并且值為2的計數器遞增I以表明存在該值的兩個實例。計數器對于保持事件的準確性來講是必要的,在該事件中存在兩個最大值(在本例中),但只有一個根據在交易表格200中的CID被刪除。作為這個特征的示范說明,在遍歷CID4時,其中第一個值2被更新為5。所得到的第三鏈接列表410示出了對應于新插入的值5的新的最大值404。對于值2的計數可以減1,以反映值從2到5的更新。對于諸如最大值或最小值的聚合函數,值的查找可以要求僅在固定時間訪問排序列表中的第一個值。類似的優(yōu)勢可以在堆實施中實現。對于諸如中值的聚合函數或者其它需要關于數據集的結構的信息的更復雜的聚合函數,有必要檢查列表中的所有條目。圖5示出了說明本主題的實施方式的另一個例子的圖500,其中聚合函數是計算最大值。與圖4中描述的方法一樣,這種方法也可以用于其它聚合函數,包括那些需要反映表格、列等中的值的當前狀態(tài)的鏈接列表結構的聚合函數。其它可能的數據結構包括,但不限于,例如上面所討論的堆。在這個例子中,聚合函數可以存儲值的排序列表,其中重復的值包含在該列表中。再次參考圖2中的示例歷史表格200,對于按“CID來自”列206排序的列表的遍歷導致形成基于CID2的第一排序列表502,其中在進行值的插入之后該列表中的第一個值是3,并且第二個值是2。在這一點上,在歷史表格200的遍歷過程中,最大值404是3。在CID3,第三個值2的插入導致產生第二排序列表506,其中最大值404保持為3并且值2的第二實例被添加到第二排序列表506。在遍歷CID4時,其中第一個值2被更新為5,第三排序列表510包括對應于新插入的值5的新的最大值404。值2的實例之一從第三排序列表510中移除,以反映值從2到5的更新。在又一個符合本主題的方法中,諸如圖6A所示的先前版本的陣列600可以用來訪問對于每個CID為有效的所有行的值。在存儲器中只需要一個位置。當下一個CID被掃描時,在先前版本陣列600中的值可以被覆蓋。在歷史表格200的掃描期間,為每個標識符更新一個值(例如在ID列202),使得存儲的值對用于當前CID的標識符來說是有效的。對于每個CID重復這個處理。相應地,這種方法對于大型表格來說不是很有利,因為需要為每個CID保持整個歷史表格的復本。只有新添加的行需要被添加到歷史表格而刪除或更新的行被刪除。這通常是歷史表格一個非常小的比例??傮w上歷史表格的每一行被添加至這個數據結構正好一次。在這種情況下不需要無效索引。然而,優(yōu)勢仍可以實現,因為這些復制的表格的線性掃描是可能的,使得存儲器引用會減少甚至消除,這可以極大地提高緩存效率。在一些例子中,復本可以表示可見的行值的集合。—種可用于結合一個或多個本主題的實施方式的算法可以提供當持有值的字段、記錄等的先前版本被無效時訪問該值的有效途徑。在一個例子中,可以形成諸如圖6B所示的例子中的無效索引602。歷史表格中的“CID去往”列210被索引至歷史表格中值被無效的位置,其中值的無效通過刪除或更新到另一個值來進行。無效索引602只需要被計算一次然后僅在額外更新或刪除發(fā)生時被附加,因此無效索引602包括對于每個CID的無效元組(tuples)的列表。無效索引提供了歷史表格內發(fā)生無效的位置的清晰列表,并且在一些情況下也是有利的,這些情況包括:其中相對少量的更新或刪除已經發(fā)生或者可能會發(fā)生的情況,以及其中歷史表格中的位置的存儲帶有方便的位置標識符的情況。用于記錄何處發(fā)生值的無效的另一種選擇是使用對于每個CID的無效元組的單獨位列表,如圖6C中的位列表604的表格中所示的那樣。在這個例子中,每個CID具有其自己的位列表,其指示是否在歷史表格200的每個位置由該CID提交了無效。這種方法在一些情況下是有利的,這些情況包括:在其中大量的刪除已經發(fā)生或者預期要發(fā)生的情況,以及如果壓縮(例如游長壓縮)可用的情況。圖7示出了描述方法特征的一個處理流程圖700,特征中的一個或多個可以被包含在本主題的實施方式中。在702,訪問數據庫的排序的歷史表格。該排序的歷史表格可以通過直接輸出‘CID來自’順序的數據庫程序來獲取,例如如上述討論的?;蛘?,該排序的歷史表格可以通過對歷史表格按‘CID來自’值進行排序而預備。歷史表格包括多個提交標識符(CID),這些提交標識符與對數據庫表格中的值的一個或多個更新、插入和刪除相關聯。排序的表格可以包括與一個或多個值的變化的首次發(fā)生相關聯的CID的順序列表。在704,例如在單向過程中遍歷排序的歷史表格,以使用優(yōu)化算法來計算聚合函數。優(yōu)化算法可以包括與上面參考圖6B或圖6C所討論的例子一致的一個或多個特征,該優(yōu)化算法可以啟動基于所選擇的用于跟蹤被無效的值到其相應的CID的方法來計算值的聚合度量值。在706,為數據庫表格的當前版本生成計算的度量值,且計算的度量值在710被提升。提升可以包括下列操作中的一個或多個:存儲計算的度量值、通過用戶界面顯示器呈現計算的度量值、發(fā)送包含該計算的度量值的電子消息、或者持久化計算的度量值或提供該度量值用于由一個或多個人查看或用于由一個或多個其它自動化流程(例如,軟件程序、基于計算的度量值的一個或多個特征的硬件實施方式、這些處理的組合等)使用的一些其它方式。圖8顯示了可以包括在這里討論的聚合計算中的各層的示范圖800??蛻舳?02可以向數據庫管理系統(tǒng)的SQL接口804提交聚合請求。SQL接口804,與交易管理器806和SQL優(yōu)化器810的操作相結合,可以調用優(yōu)化的SQL擴展以及符合本主題的實施方式的操作器和數據結構,并且向查詢引擎812傳遞聚合查詢。查詢引擎可以從存儲器獲得必要的數據庫表格、歷史表格等,存儲器可以是任何類型的計算機可讀存儲介質,可以是本地的,也可以是通過網絡訪問的。另一個可以由本主題的實施方式所支持的查詢的示范性例子是請求未裝載訂單(unshippedorder)的最大數量,例如由可用數據庫跨越的整個歷史,或者在一些指定的時間間隔。圖9中的第一個示例性代碼段900示出了如何在SQL中實現這樣的查詢,而無需使用符合本主題的實施方式的一種改進的操作器。代碼段900中的內部查詢對每一個CID(即每一次數據庫被更新時)或者以一定的有效間隔([T_BEGIN],[T_END])檢索未裝載訂單的數量。這個查詢執(zhí)行的測試被證明是非常昂貴的,因為具有所有可能的CID的表格的加入導致非常大的中間結果的產生。圖9中的第二個示例性代碼段902示出了利用符合本主題的實施方式的時間滑動操作器的SQL擴展的查詢。依據歷史間隔的類型,可以選擇合適的VISIBLEAT操作器。貫穿歷史表格在單向過程中以所選擇的間隔對每一個CID計算聚合,其可以在執(zhí)行效率和處理負擔的減少或最小化上帶來實質性的好處。此外,SQL擴展可以提供更為簡潔的語法并提供線索給優(yōu)化器以啟動選擇更有效的算法。如圖所示,為每一個CID計算特定狀態(tài)的語義可以由組加上表名稱tableName.CIDO來表示。CIDO的函數語法可以強調CID不是物理屬性。此外,VISIBLEAT操作器可以用于表露不同的版本。如前面所述的,這種方法對于執(zhí)行時間是有利的,該執(zhí)行時間隨著表格被掃描與表格的尺寸至少近似線性的成比例,并且在遍歷按“CID來自”列206排序的歷史表格期間,當每個新值被讀取時,聚合函數的狀態(tài)被保持和適配。每個聚合函數(例如,和、平均、最大、最小等)可以被操作器的一個單獨實施方式所支持。與本主題的一些實施方式相一致,企業(yè)資源計劃(ERP)系統(tǒng)、其它商業(yè)軟件架構或其它數據密集計算應用程序或軟件架構可以被提供為單獨的定制的軟件安裝,其運行于在特定組織的控制下的一個或多個處理器上。這種安排對于具有非常復雜的內部信息技術(IT)人員的大規(guī)模組織來說非常有效,以及對于需要可觀的資本投資到計算硬件和咨詢服務以定制商業(yè)上可獲得的商業(yè)軟件方案用于與特定組織的業(yè)務流程和功能一起工作是可實行的人來說是非常有效的。圖10描述了與這種實施方式相一致的系統(tǒng)的框圖。計算系統(tǒng)1002可以包含一個或多個核心軟件平臺模塊304,其用于提供商業(yè)軟件系統(tǒng)的一個或多個特征。計算系統(tǒng)還可以聚合或另外提供網關,通過網關用戶可以訪問由一個或多個外部軟件組件1006提供的功能。客戶機802可以通過直接連接、本地終端、或者通過網絡1010(例如局域網、廣域網、無線網、因特網等等)訪問計算系統(tǒng)。聚合模塊1012或其它相當的功能體可以有選擇地包括或能夠訪問交易管理器806或相當的功能體,所述聚合模塊1012或其它相當的功能體可以執(zhí)行本文中描述的一個或多個特征或功能,并且可以訪問存儲數據(例如業(yè)務情景、業(yè)務流程和一個或多個業(yè)務配置的定義,以及與業(yè)務情景、業(yè)務流程和一個或多個業(yè)務配置的定義相關的數據、元數據、主數據等,和/或與業(yè)務情景或業(yè)務流程的特定實例有關系的數據對象和/或業(yè)務對象的具體實例,等等)和提供對該數據的訪問的數據庫管理系統(tǒng)1014。數據庫管理系統(tǒng)1014可以包括與這里描述的特征相一致的并行化特征。出于數據分布的目的,可以把表格或表格內的范圍分配到不同的數據庫分區(qū),這些不同的數據庫分區(qū)例如出于數據分布和/或可擴展性原因而被分配到不同的主機。圖11顯示了與包含用于可擴展原因的數據分布的實施一致的企業(yè)資源系統(tǒng)架構1100的例子。這樣的配置可以用于具有高性能要求的大型、就地部署(on-premise)或獨立(stand-alone)系統(tǒng)。每個數據服務器進程1102及其相關數據分區(qū)1104可以被分配到離散的主機1106。主機1106可以是具有一個或多個物理處理器的獨立機器或者是如圖11所不的在大系統(tǒng)1002上的虛擬機。圖11中標記為名稱服務器1112的中央組件了解該系統(tǒng)的技術以及如何分布數據。在具有數據分布的系統(tǒng)中,名稱服務器了解表格或表格的分區(qū)定位在哪個數據服務器進程1102上。一個或多個客戶機1114(例如客戶機802)可以通過直接連接或者通過網絡1116訪問名稱服務器1112。在數據分布情景中,分區(qū)可以明智表格(tablewise)完成或者也可以通過分離表格來完成。使用明智表格分區(qū),名稱服務器基于當前的表格的分布(分配到每個數據庫服務器進程1102的表格的數量)將新的表格分配到數據庫服務器進程1102。然后用于該表格的數據會僅僅駐留在數據庫服務器進程1102上。還可能指定,表格是在多個數據庫服務器進程1102上被分離。名稱服務器1112可選擇地基于由應用程序指定的大小估計來對表格進行分區(qū)。當記錄被插入到分離的表格中時,可以基于名稱服務器信息將記錄分布到其它數據庫服務器進程1102。較小的組織也可以從商業(yè)軟件功能的使用中獲益。然而,這樣的組織可能缺少使用單獨商業(yè)軟件架構產品所必需的必要的硬件資源、IT支持、和/或咨詢預算,并且在一些情況下可以更加有效地由軟件即服務(SaaS)安排進行服務,在軟件即服務安排中商業(yè)軟件系統(tǒng)架構被托管在諸如服務器的計算硬件上以及數據存儲庫被遠離該組織的地點而進行維護并由授權用戶通過瘦客戶端,例如網絡瀏覽器,通過網絡進行訪問。在商業(yè)軟件系統(tǒng)的服務被提供于多個組織中的每一個組織的軟件交付配置中,所述服務被托管于僅僅為該組織可訪問的專用系統(tǒng),在該專用系統(tǒng)中的軟件安裝可以以類似于上述舉例的單獨的、定制的本地運行在組織的硬件之上的軟件安裝的方式進行定制和配置。然而,為了更有效地利用SaaS提供者的計算資源以及為了提供重要性能冗余和更好的可靠性,將多個承租者托管于單一系統(tǒng)是有利的,該單一系統(tǒng)包含多個服務器并且為所有的多個承租者以安全的方式維護數據并同時還提供為每個承租者的業(yè)務流程定制的定制方案。與本主題的實施方式一致的數據分區(qū)還可以使用在如圖12的系統(tǒng)架構1200描述的多租戶環(huán)境中。多個承租者1202,每個互相隔離并且可由多個組織內的單獨組織1204內的客戶機1114通過網絡1116訪問,可以由同一個主機1106托管,主機1106可以是如圖12所示的大系統(tǒng)1002上的虛擬機或者是包含一個或多個物理處理器的單獨系統(tǒng)。承租者1202還可以有選擇地跨越多個數據庫服務器進程1102被分配到多于一個的主機1106上。以這種方式,把表格或表格內的范圍分配到由于可擴展原因被分配到不同主機1106的不同數據庫進程1102?;蛘?,對于與其它承租者1202相隔離的各個承租者1202,一個或多個承租者1202可以由訪問數據分區(qū)1104(或多個數據分區(qū)1104)的單一的數據庫服務器進程1102進行服務。為了提供由單一軟件發(fā)布架構1200支持的多個組織中的每個組織的業(yè)務流程的定制,由數據庫管理系統(tǒng)1104存儲的數據和數據對象可以包括如圖13所示的三種類型的內容:核心軟件平臺內容1302(例如業(yè)務流程的標準定義),系統(tǒng)內容1304以及承租者內容1306。核心軟件平臺內容1302包括表示核心功能的內容并且不能由承租者修改。在一些例子中,系統(tǒng)內容1304可以由核心軟件平臺的運行時創(chuàng)建,并且可以包括存儲與給定業(yè)務流程的特定實例相關的具體數據以及可修改地具有由每個承租者提供的數據的核心數據對象。保存在這些數據對象中的數據是承租者特有的:例如,承租者組中的每個承租者1202可以存儲關于其自身庫存、銷售訂單等的信息。隔離于承租者組中的每個承租者1202的承租者內容1306包括,為承租者組中的一個特定承租者1202定制的用于反映業(yè)務流程和數據的數據對象或到其它數據對象的擴展,該業(yè)務流程和數據是針對該特定承租者的并且在相應的承租者僅僅對于授權用戶是可訪問的。這種數據對象可以包括關鍵字域(例如庫存跟蹤情況下的“客戶”)以及一個或多個主數據、業(yè)務配置信息、交易數據等等。例如,承租者內容1306可以反映承租者對于業(yè)務流程的標準模板定義的特有的修改或改變,以及與單獨的流程步驟相關的業(yè)務對象的承租者特有的定制(例如在生成的條件表格中的記錄、訪問順序、價格計算結果、其它承租者特有的值等等)。軟件平臺內容1302和系統(tǒng)內容1304的組合以及承租者組中的一個特定承租者1202的承租者內容1306被訪問,以根據該承租者的定制和業(yè)務數據來提供業(yè)務流程定義和/或與業(yè)務流程的特定實例相關的狀態(tài)信息,從而使得承租者組中的每個承租者1202被提供對定制方案的訪問,該定制方案的數據僅僅對來自那個承租者1202的用戶是可用的。此處描述的主題的一個或多個方面或特征可以在數字電子電路、集成電路、專門設計的專用集成電路(ASIC)、現場可編程門陣列(FPGA)計算硬件、固件、軟件和/或其組合中實現。這些不同的方面或特點可以包括在包含至少一個可編程處理器的可編程系統(tǒng)上可執(zhí)行和/或可解釋的一個或多個計算機程序中的實現,可編程處理器可以是專用的或通用的,耦接到存儲系統(tǒng)、至少一個輸入設備以及至少一個輸出設備以從其中接收數據和指令并向其發(fā)送數據和指令??蛻魴C和服務器一般是互相遠離的且通常通過通信網絡進行交互??蛻魴C和服務器之間的關系由運行在各自計算機上的并具有客戶機-服務器相互關系的計算機程序虛擬產生。這些計算機程序,其還可以被稱為程序、軟件、軟件應用程序、應用程序、組件、或代碼,包括可編程處理器的機器指令,并且可以用高級程序和/或面向對象的編程語言,和/或匯編/機器語言來實現。如此處使用的,術語“機器可讀介質”是指用于向可編程處理器提供機器指令和/或數據的任何計算機程序產品、裝置和/或設備,比如磁盤、光盤、存儲器和/或可編程邏輯器件(PLD),包括接收機器指令作為機器可讀信號的機器可讀介質。術語“機器可讀信號”指任何用于提供機器指令和/或數據給可編程處理器的信號。機器可讀介質可以非暫時性地存儲這種機器指令,比如作為非暫時性的固態(tài)存儲器或磁硬盤驅動器或任何其它等效的存儲介質。機器可讀介質可以可選地或另外地以暫時的方式存儲這種機器指令,比如作為處理器高速緩存或其它與一個或多個物理處理器核心相關聯的隨機存取存儲器。為提供與用戶的交互,此處描述的主題的一個或多個方面或特征可以在計算機上實現,該計算機具有諸如用于向用戶顯示信息的陰極射線管(CRT)或液晶顯示器(LCD)或光發(fā)射二極管(LED)監(jiān)視器的顯示設備和用戶用來向計算機提供輸入的鍵盤以及諸如鼠標或軌跡球的指示設備。其它種類的設備也可以用于提供和用戶的交互。例如,提供到用戶的反饋可以是任何形式的感測反饋,比如視覺反饋、聽覺反饋或觸覺反饋;并且來自用戶的輸入可以以任何形式接收,包括但不限于,聲音、語音或觸覺輸入。其它可能的輸入設備包括但不限于,觸摸屏或其它諸如單一或多點電阻或電容軌跡板、語音識別硬件和軟件、光學掃描儀、光學指示器、數字圖像捕獲設備及相關聯的解譯軟件等等。此處描述的主題可以基于想要的配置而體現為系統(tǒng)、裝置、方法和/或物品。在前面的說明中提出的實施方式不代表與此處描述的主題一致的所有實施方式。相反,它們僅僅是與所描述主題一致的一些例子。盡管上面已經詳細描述了一些變化形式,但是可能做出其它的修改或添加。特別是,可以在此處提出的這些內容之外提供進一步的特征和/或變化。例如,上述實施方式可以指導出所公開的特征的各種組合和子組合和/或上述公開的一些進一步的特征的組合和子組合。另外,附圖中示出的和/或本文描述的邏輯流程并不必然要求所顯示的特定順序或連續(xù)順序以獲得想要的結果。其它實施方式也在權利要求書的范圍之內。權利要求1.一種計算機程序產品,包括存儲指令的機器可讀介質,當所述指令由至少一個可編程處理器執(zhí)行時引起所述至少一個可編程處理器執(zhí)行包括下列操作的操作:訪問數據庫的排序的歷史表格,該歷史表格包括與對數據庫表格中的值的一個或多個更新、插入和刪除相關聯的多個提交標識符,該排序的歷史表格包括與一個或多個值的變化的首次發(fā)生相關聯的提交標識符的順序列表;在單向過程中遍歷排序的歷史表格,以使用優(yōu)化算法來計算聚合函數,該優(yōu)化算法啟動基于所選擇的用于跟蹤被無效的值到其相應的提交標識符的方法來計算值的聚合度量值;為數據庫表格的當前版本生成計算的度量值;以及提升所計算的度量值。2.如權利要求1所述的計算機程序產品,其中所述提升包括下列事項中的一個或多個:存儲計算的度量值、通過用戶界面顯示器呈現計算的度量值、以及發(fā)送包含該計算的度量值的電子消息。3.如權利要求1所述的計算機程序產品,其中所述優(yōu)化算法包括下列事項中的一個或多個:生成無效索引、為多個提交標識符中的每個提交標識符生成單獨的位列表、以及生成先前版本數組。4.如權利要求3所述的計算機程序產品,其中所述操作還包括根據聚合函數從多個算法中選擇所述優(yōu)化算法,該選擇包括對多個算法中的每一個算法評估與一組優(yōu)化標準相關的數據庫表格的一個或多個屬性。5.如權利要求1所述的計算機程序產品,其中所述遍歷包括下列事項中的一個或多個:基于在每一個提交標識符處的值的變化遞增變量、創(chuàng)建對應于每一個提交標識符的鏈接列表、以及創(chuàng)建對應于每一個提交標識符的排序的列表。6.如權利要求1所述的計算機程序產品,其中所計算的度量值包括和值、計數值、平均值、最小值、最大值、中值、模值和偏值中的一個或多個。7.如權利要求1所述的計算機程序產品,其中所述操作還包括通過以提交標識符依序對歷史表格進行排序而生成所述排序的歷史表格。8.一種系統(tǒng),包括:至少一個可編程處理器,以及存儲指令的機器可讀介質,當所述指令由所述至少一個可編程處理器執(zhí)行時,引起所述至少一個可編程處理器執(zhí)行包括下列操作的操作:訪問數據庫的排序的歷史表格,該歷史表格包括與對數據庫表格中的值的一個或多個更新、插入和刪除相關聯的多個提交標識符,該排序的歷史表格包括與一個或多個值的變化的首次發(fā)生相關聯的提交標識符的順序列表;在單向過程中遍歷排序的歷史表格,以使用優(yōu)化算法來計算聚合函數,該優(yōu)化算法啟動基于所選擇的用于跟蹤被無效的值到其相應的提交標識符的方法來計算值的聚合度量值;為數據庫表格的當前版本生成計算的度量值;以及提升所計算的度量值。9.如權利要求8所述的系統(tǒng),其中所述提升包括下列事項中的一個或多個:存儲計算的度量值、通過用戶界面顯示器呈現計算的度量值、以及發(fā)送包含該計算的度量值的電子消息。10.如權利要求8所述的系統(tǒng),其中所述優(yōu)化算法包括下列事項中的一個或多個:生成無效索引、為多個提交標識符中的每個提交標識符生成單獨的位列表、以及生成先前版本數組。11.如權利要求10所述的系統(tǒng),其中所述操作還包括從多個算法中選擇所述優(yōu)化算法,該選擇包括對多個算法中的每一個算法評估與一組優(yōu)化標準相關的數據庫表格的一個或多個屬性。12.如權利要求8所述的系統(tǒng),其中所述遍歷包括下列事項中的一個或多個:基于在每一個提交標識符處的值的變化遞增變量、創(chuàng)建對應于每一個提交標識符的鏈接列表、以及創(chuàng)建對應于每一個提交標識符的排序的列表。13.如權利要求8所述的系統(tǒng),其中所計算的度量值包括和值、計數值、平均值、最小值、最大值、中值、模值和偏值中的一個或多個。14.一種計算機實現的方法,包括:訪問數據庫的排序的歷史表格,該歷史表格包括與對數據庫表格中的值的一個或多個更新、插入和刪除相關聯的多個提交標識符,該排序的歷史表格包括與一個或多個值的變化的首次發(fā)生相關聯的提交標識符的順序列表;在單向過程中遍歷排序的歷史表格,以使用優(yōu)化算法來計算聚合函數,該優(yōu)化算法啟動基于所選擇的用于跟蹤被無效的值到其相應的提交標識符的方法來計算值的聚合度量值;為數據庫表格的當前版本生成計算的度量值;以及提升所計算的度量值。15.如權利要求14所述的計算機實現的方法,其中所述提升包括下列事項中的一個或多個:存儲計算的度量值、通過用戶界面顯示器呈現計算的度量值、以及發(fā)送包含該計算的度量值的電子消息。16.如權利要求14所述的計算機實現的方法,其中所述優(yōu)化算法包括下列事項中的一個或多個:生成無效索引、為多個提交標識符中的每個提交標識符生成單獨的位列表、以及生成先前版本數組。17.如權利要求16所述的計算機實現的方法,還包括從多個算法中選擇所述優(yōu)化算法,該選擇包括對多個算法中的每一個算法評估與一組優(yōu)化標準相關的數據庫表格的一個或多個屬性。18.如權利要求14所述的計算機實現的方法,其中所述遍歷包括下列事項中的一個或多個:基于在每一個提交標識符處的值的變化遞增變量、創(chuàng)建對應于每一個提交標識符的鏈接列表、以及創(chuàng)建對應于每一個提交標識符的排序的列表。19.如權利要求14所述的計算機實現的方法,其中所計算的度量值包括和值、計數值、平均值、最小值、最大值、中值、模值和偏值中的一個或多個。20.如權利要求14所述的計算機實現的方法,其中所述排序、遍歷、生成、和提升中的至少一個是由一個或多個可編程處理器執(zhí)行的。全文摘要提供了用于優(yōu)化對歷史表格中的聚合值的計算的方法、計算機程序產品和系統(tǒng),其中可以對歷史表格進行訪問。排序的歷史表格可以包括提交標識符的順序列表,所述提交標識符與對數據庫表格中的值的更新、插入和/或刪除相關聯??梢栽趩蜗蜻^程中遍歷排序的歷史表格,以使用優(yōu)化算法來計算聚合函數。優(yōu)化算法可以啟動基于所選擇的用于跟蹤被無效的值到其相應的提交標識符的方法來計算值的聚合度量值。為數據庫表格的當前版本生成計算的度量值;以及提升所計算的度量值。文檔編號G06F17/30GK103177063SQ201210462088公開日2013年6月26日申請日期2012年9月28日優(yōu)先權日2011年12月23日發(fā)明者M·考夫曼,N·梅,A·湯德,D·科斯曼申請人:Sap股份公司