專利名稱::自我維護(hù)的實(shí)時數(shù)據(jù)集合的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及用于監(jiān)控商家或者其他組織的工作流程的方法和計(jì)算機(jī)系統(tǒng)。本發(fā)明更具體地涉及用于集合和活動的多樣實(shí)例相關(guān)的集合信息,以及用于維護(hù)該集合的方法。
背景技術(shù):
:商家和其他組織使用計(jì)算機(jī),尤其是計(jì)算機(jī)數(shù)據(jù)庫應(yīng)用程序,來監(jiān)控和記錄關(guān)于組織活動的信息。通常,該組織會有必須執(zhí)行的各種過程或者活動,而且頻繁再現(xiàn)。的確,對于在任何既定時間的不同完成階段中具有大量活動實(shí)例的商家而言,這是很普遍的。作為一個實(shí)施例,商家可能基于從客戶處收到的訂購單銷售貨物。行業(yè)活動可履行這些客戶訂購單;每一個訂購單代表該活動的一個單獨(dú)實(shí)例。在任何特殊時間,在各種完成階段,上述商家可具有該活動的多樣實(shí)例(例如,來自多樣客戶的多樣實(shí)例)。作為另外一個實(shí)施例,一個金融機(jī)構(gòu)可基于來自那些客戶的申請而貸款給客戶。行業(yè)活動可以是用來完成(例如,批準(zhǔn)或拒絕)的貸款申請的處理,每一個貸款請求代表一個單獨(dú)的活動實(shí)例。在任何特殊時間,在處理的不同階段都會存在多樣貸款申請實(shí)例。再如,在不同的處理階段,一個負(fù)責(zé)簽發(fā)許可的政府實(shí)體可有多樣許可申請。為了能夠監(jiān)控大量的活動實(shí)例,許多組織將關(guān)于這些活動實(shí)例的信息存儲在一個數(shù)據(jù)庫程序中。特別是,可為活動的每個實(shí)例而創(chuàng)建記錄或別的數(shù)據(jù)對象。然后建立一個單獨(dú)的字段或記錄的其它成分,以持有和每個實(shí)例所共有的、用于一些信息類型的數(shù)值。用前述的實(shí)施例來描述,商家銷售貨物可為每個客戶訂購單而創(chuàng)造單獨(dú)的數(shù)據(jù)庫記錄。其中,對于訂購單的接收時間而言,這些記錄可以是單獨(dú)的字段,訂購單是從哪兒收到的,訂購單是什么樣的,訂購單何時發(fā)貨,等等。這種數(shù)據(jù)庫程序的使用通常被概念化為一個表?;顒拥拿總€實(shí)例被指定為表的一個單獨(dú)的行(或元組)。然后和多樣實(shí)例共有的信息的每個類型被指定為該表的一個單獨(dú)的列。盡管有時需要個別記錄中的個別字段的值,許多組織者還頻繁需要關(guān)于記錄群的信息,而且,還經(jīng)常實(shí)時需要該信息。諸如,許多售貨的商家需要了解有多少訂購單正待處理,有多少定購單已被完成,以及有多少訂購單正處于一個或更多完成的中間階段。確定的數(shù)據(jù)庫程序可以通過該數(shù)據(jù)庫的多樣記錄中的集合數(shù)值來提供這樣的報告。僅此而已,然而,這只是在數(shù)據(jù)庫很龐大的實(shí)例下的一種經(jīng)常不被接收的做法。隨著越來越多的記錄累積,數(shù)據(jù)庫的訪問速度會明顯降低。對于諸如一個每天接收成百上千訂購單的大型商家而言,記錄的數(shù)量能達(dá)到成千上萬甚至百萬條。數(shù)據(jù)庫時時都在查詢,在有限的時間內(nèi)需要搜索磁盤或別的存儲設(shè)備。類似的,當(dāng)創(chuàng)建新的記錄和更新舊的記錄時,需要有限的時間以完成每條信息的創(chuàng)建或更新。隨著記錄數(shù)目的增長,尋找特定記錄所需的時間在增加。在一個具有數(shù)百(或數(shù)千)用戶和成百上千(或數(shù)百萬)數(shù)據(jù)庫記錄的商家或者組織中,數(shù)據(jù)庫系統(tǒng)訪問的等待時間變得相當(dāng)?shù)闹匾?。此外,隨著眾多的用戶試圖訪問數(shù)據(jù)庫中的相同信息,在試圖訪問相同記錄的用戶之間會發(fā)生死鎖。如果眾多的用戶插入或者更新記錄到一個大型數(shù)據(jù)庫中,而其他用戶試圖訪問該數(shù)據(jù)庫,以便生成各個字段的摘要信息,則所有的用戶都將體驗(yàn)欠滿意的數(shù)據(jù)庫性能。另外一個可能的解決方案是為數(shù)據(jù)庫中的數(shù)據(jù)生成聯(lián)機(jī)分析處理(OLAP)立方。然而,需要生成OLAP立方的處理也相當(dāng)耗時。如果存在大量數(shù)據(jù)庫記錄,可經(jīng)常僅僅以日(有時是以小時)為基準(zhǔn)生成OLAP立方。如果一個組織需要實(shí)時的集合信息,則OLAP立方常常會力不從心。發(fā)明概述本發(fā)明解決上述和其他的難題,即關(guān)于活動的多樣實(shí)例相關(guān)的集合信息的問題。在至少一個實(shí)施例中,此發(fā)明包括一種用于維護(hù)被多樣數(shù)據(jù)庫記錄的字段所包含的數(shù)值的集合的方法。這種方法包括多樣集合群的創(chuàng)建。每個群體包括多個集合記錄,并且每個集合記錄包括一個用于數(shù)值集合的數(shù)值,該值被多樣數(shù)據(jù)庫記錄的不同子集所包含。該方法進(jìn)一步包括,當(dāng)插入或更新多樣數(shù)據(jù)庫記錄的第一個的時候,選擇一個第一集合群。該方法還包括基于一個或多個插入的或更新的第一數(shù)據(jù)庫記錄中的值而進(jìn)行的修訂,并作為第一集合群更新處理的一部分以及第一集合群的集合記錄之一的集合值。在完成第一集合群的的更新處理之前,阻止第一組集合群的隨后選擇。當(dāng)執(zhí)行第一組集合群的更新處理且插入或更新多樣數(shù)據(jù)庫記錄中的第二個時,選擇一個第二集合群?;谝粋€或多個插入的或更新的第二數(shù)據(jù)庫記錄,且在第一組集合群更新處理期間,修訂第二集合群的集合記錄之一的集合值。在本發(fā)明的另一方面中,其集合群被并入集合記錄的單個表。在至少另一個實(shí)施例中,此項(xiàng)發(fā)明包括一種維護(hù)涉及一個組織活動的多樣實(shí)例的集合數(shù)據(jù)的方法,活動的每個實(shí)例具有多個過程狀態(tài)。該方法包括在集合數(shù)據(jù)表中創(chuàng)建多個記錄,每條記錄包含一個在同一時期同一過程狀態(tài)的多樣實(shí)例的子集的集合值。這個方法還包括更新集合數(shù)據(jù)表來反映數(shù)據(jù)相應(yīng)于預(yù)選時間窗口之外的過程狀態(tài)之一中的實(shí)例的數(shù)據(jù)的刪除。結(jié)合附圖,本發(fā)明的這些和另一些特征和優(yōu)點(diǎn)將從優(yōu)選實(shí)施例的以下的詳細(xì)描述中容易體現(xiàn)和完全理解。附圖概述附圖1是一個框圖,其展示了經(jīng)由假設(shè)的批發(fā)商的客戶訂貨的過程。附圖2是用于附圖1的商家的實(shí)例數(shù)據(jù)表的一部分。附圖3是一個表,其集合了來自附圖2的表的不同字段。附圖4展示了一個集合數(shù)據(jù)表的更新,用來反映一個新的實(shí)例數(shù)據(jù)記錄。附圖5展示了一個集合數(shù)據(jù)表的更新,以反映一個現(xiàn)存的實(shí)例數(shù)據(jù)記錄的更新。附圖6展示了在一個多樣程序線程中的死鎖。附圖7展示了按照本發(fā)明的至少一個實(shí)施例的多樣分區(qū)集合表。附圖8展示了按照本發(fā)明的至少一個實(shí)施例的附圖7的集合表的執(zhí)行。附圖9展示了按照本發(fā)明的至少一個實(shí)施例的、結(jié)合了多樣分區(qū)集合表的分區(qū)的一個視圖。附圖10展示了用于將分區(qū)分配給程序線程的一個存儲過程的執(zhí)行。附圖11展示了提供集合數(shù)據(jù)的另一個表格,且在該表中一個商家里程碑時標(biāo)被用作一個集合標(biāo)準(zhǔn)。附圖12展示了根據(jù)本發(fā)明的至少一個實(shí)施例來促進(jìn)對陳舊集合數(shù)據(jù)的刪除。附圖13是一個流程圖,其展示了根據(jù)本發(fā)明的至少一個實(shí)施例而維護(hù)實(shí)時數(shù)據(jù)集合表的觸發(fā)器的邏輯。優(yōu)選實(shí)施例的詳細(xì)描述本發(fā)明可通過結(jié)合于2002年5月31日提出的、序號為10/157,968、標(biāo)題為“對關(guān)于過程的當(dāng)前狀態(tài)、數(shù)據(jù)和歷史的查詢的支持”的美國專利申請中所描述的方法、裝置和系統(tǒng)而被方便的使用,且存檔于2002年5月31日,在此通過引用而結(jié)合其內(nèi)容。參考結(jié)構(gòu)化查詢語言(SQL)指令和其它數(shù)據(jù)分析特征來描述本發(fā)明,其中數(shù)據(jù)分析特征來自SQLSERVERTM2000關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)軟件和華盛頓州的雷德蒙市的微軟公司的相關(guān)的RDBMS聯(lián)機(jī)分析處理(OLAP)軟件。盡管可在這里描述用于執(zhí)行本發(fā)明的某些實(shí)施例的SQL指令的某些方面,然而,只要提供這里所提供的說明,用于執(zhí)行本發(fā)明的另外的一些指令、程序設(shè)計(jì)算法和程序?qū)τ诒绢I(lǐng)域技術(shù)人員技術(shù)人員而言將是顯而易見的??蓮母鞣N資源中獲得SQLSERVERTM2000RDBMS軟件和相關(guān)的OLAP服務(wù)軟件的概述,包括KarenDelaney(2001Microsoftpress)的InsideMicrosoftSQLSERVERTM2000和MicrosoftSQLSERVERTM2000在線書籍,其可從http//www.microsoft.com/sql/techinfo/productdoc/2000/>處獲取。本發(fā)明不僅僅局限于通過使用SQLSERVERTM2000RDBMS軟件和相關(guān)的OLAP服務(wù)軟件來得以實(shí)施,也可通過使用其他類型的RDBMS軟件和OLAP軟件來得以實(shí)施。也可以通過參考在一臺服務(wù)器上運(yùn)行的以及被一個或多個客戶機(jī)訪問的RDBMS軟件(例如上述的SQLSERVERTM2000軟件)來描述本發(fā)明。這種配置在本領(lǐng)域中是已知的,且在諸如先前所結(jié)合的美國專利申請10/157,968中描述。然而,一個客戶服務(wù)器配置僅是實(shí)現(xiàn)發(fā)明的方式的一個實(shí)施例。本發(fā)明也能夠在其他的物理配置系統(tǒng)中實(shí)現(xiàn)。附圖1是一幅框圖,展示了通過基于客戶定購單來向客戶銷售貨物的假定的批發(fā)商的客戶定購的過程。方便起見,商家在此被稱為“商家X”。商家X接收來自多樣客戶的訂購單。商家X根據(jù)收到的每個訂購單,將訂單的相關(guān)信息輸入到保留在數(shù)據(jù)庫服務(wù)器上的數(shù)據(jù)庫中。特別是,隨著與單個訂購單共有的各種信息類型的字段,商家X在數(shù)據(jù)庫里為訂購單創(chuàng)建一個新的記錄。在實(shí)施例中,每條記錄包括訂購單數(shù)目、接收的日期和時間、客戶所在城市、訂購的貨物的數(shù)量的字段。商家X確定每個訂購單將被接收或拒絕,并接著在數(shù)據(jù)庫內(nèi)更新一個或者多個其它字段來反映接收或拒絕。如果一個訂購單被接收,那么將生成一個相對應(yīng)的銷售訂單并發(fā)送給定購客戶所在城市的商家X的倉庫。當(dāng)貨物被裝運(yùn)發(fā)向客戶處時,將發(fā)貨的時間輸入(通過倉庫之一中的一個客戶機(jī))到記錄的另外一個字段。當(dāng)貨物交付時,還要更新其它字段。盡管已創(chuàng)建上述的實(shí)施例,用以描述本發(fā)明,但是該實(shí)施例(包括在此描述的補(bǔ)充方面)代表了許多實(shí)際的商家,盡管是以簡化的形式。此外,本領(lǐng)域技術(shù)人員技術(shù)人員可知,所描述的關(guān)于假定的商家的概念廣泛適用于商家和其它組織活動。的確,可通過對“組織”而不是“商家X”的類屬參考來替換地描述本發(fā)明。類似的,代替對訂購單和訂單履行的不同階段的引用,本發(fā)明能夠用一般的術(shù)語來描述,例如“一個組織過程的實(shí)例”,組織過程實(shí)例的一個“狀態(tài)”,組織過程實(shí)例的完成,等等。盡管一個實(shí)際商家類型的簡化的例子用來提供更易讀的說明,但本發(fā)明不限于特殊的組織或組織活動類型。附圖2是來自附圖1的數(shù)據(jù)庫的數(shù)據(jù)表的一部分,而且是由商家X維護(hù),并用于存儲有關(guān)單個訂購單實(shí)例的數(shù)據(jù)。這些實(shí)例數(shù)據(jù)表具有每個訂購單的單獨(dú)記錄(例如,行)和各種數(shù)據(jù)類型的單獨(dú)字段(列)。在實(shí)施例中,“PO#”是訂購單號碼?!癛ecvTime”是接收訂購單的日期和時間,“City”最接近于發(fā)出訂購單的客戶的倉庫的所在城市,且“Quantity”是訂購的項(xiàng)目的數(shù)目?!癝hipTime”是訂購單的貨物的裝運(yùn)時間,且“DeliveryTime”是貨物發(fā)出的時間?!癙rocessState”是用來描述當(dāng)前處理的訂購單的部分過程的變量。如果已接收了訂購單但還未發(fā)貨,則訂購單為“InProcess”。如果已經(jīng)發(fā)貨但還未交付,則訂購單為“Shipped”。如果已經(jīng)交付,則訂購單為“Delivered”。盡管沒有示出,但還存在ProcessState的其它值(例如,被拒絕的訂購單的“Denied”)。還未裝運(yùn)貨物的訂購單在ShipTime字段會有一個<NULL>值。類似的,還未發(fā)貨的訂購單在DeliveryTime字段中會有一個<NULL>值。由于訂購單被裝運(yùn)和/或發(fā)貨,所以這些字段將通過適當(dāng)?shù)臅r間值而被更新。如附圖2所示,即使通過有限數(shù)目的記錄,當(dāng)要求集合信息的時候,原始數(shù)據(jù)表將顯得不便。例如,如果需要來自一個特殊倉庫交付的所有貨物,則檢查每一行數(shù)據(jù)是很有必要的。用于獲取集合數(shù)據(jù)的一個更有用的表格式在附圖3中示出。尤其是,附圖3示出的、通過倉庫的、正在發(fā)貨或處于裝運(yùn)狀態(tài)的訂購單的總數(shù)(“Count”)。附圖3同時也在數(shù)量列中示出了已經(jīng)被發(fā)貨、裝運(yùn)且正在運(yùn)送的每個倉庫的貨物總數(shù)。附圖4展示附圖3的表如何被更新,以反映一個來自Redmond的三十個單位的新的訂購單數(shù)目135的接收。特別是,Redmond的“過程中的”總數(shù)增加了30且Count總數(shù)加1。圖5展示了當(dāng)訂購單數(shù)目135被裝運(yùn)時的圖4的表的更新。Redmond/InProcess訂購單的“Quantity”和“Count”總數(shù)分別減少30和1,而Redmond/Shipped訂購單的相同字段分別增加30和1。盡管附圖4和附圖5的更新相對簡單,然而當(dāng)多重編程線程正同時訪問相同的集合數(shù)據(jù)表時便出現(xiàn)了問題。附圖6展示了試圖同時對相同的表執(zhí)行處理的兩個程序線程。為簡單起見,假使在City和ProcessState(例如,基于群集索引鍵而被存儲在訂單中的數(shù)據(jù)行)上存在群集索引,其允許以圖6所示的次序從上至下地訪問記錄。在許多數(shù)據(jù)庫環(huán)境中,多樣記錄作為訪問表的單個事務(wù)的一部分而被修改。由于每項(xiàng)事務(wù)必需的處理開銷,因此批處理多樣記錄經(jīng)常更有效。對于要求在“全部或沒有”基礎(chǔ)上執(zhí)行事務(wù)而言,這是個一般慣例。換句話來說,沒有記錄被修改,除非完成事務(wù)的所有部分。否則,將會破壞表的完整性。這些數(shù)據(jù)庫處理約束可導(dǎo)致死鎖。當(dāng)程序線程A試圖在一個事務(wù)中更新三個記錄時死鎖在圖6中發(fā)生更新Redmond/InProcess和Redmond/Shipped以反映訂購單134已經(jīng)裝貨,并更新Seattle/InProcess以反映新的訂購單136。同時,程序線程B還試圖在一個事務(wù)中更新三個記錄更新Seattle/InProcess和Seattle/Shipped以反映訂購單133已被裝貨,以及接下來更新Redmond/InProcess以反映新的訂購單135。為了執(zhí)行其事務(wù),線程A在Redmond/InProcess和Redmond/Shipped上獲得一個排它鎖,以便在這些記錄被線程A更新的時候,防止其它線程對這些記錄的影響。接下來線程A嘗試去在Seattle/InProcess上獲得排它鎖。同時,線程B在記錄Seattle/InProcess和Seattle/Shipped上獲得一個排它鎖并進(jìn)行一項(xiàng)修改,接著設(shè)法在Redmond/InProcess上獲得一個排它鎖。由于線程A已經(jīng)鎖定了Redmond/InProcess,所以線程B不能完成它的事務(wù)的第一部分。然而,線程B能夠在線程A試圖鎖定Seattle/InProcess之前鎖定Seattle/InProcess和Seattle/Shipped。線程A從而阻止其事務(wù)的第二部分的完成。事實(shí)上,每個線程都在等待別的線程結(jié)束,而且兩個都不能完成其事務(wù)。一些系統(tǒng)將選擇線程之一作為死鎖犧牲,重新運(yùn)行該犧牲的事務(wù)的任何未全部完成的部分,并向犧牲報告錯誤。盡管這里允許其它線程進(jìn)行,且盡管犧牲可重試其事務(wù),但是系統(tǒng)性能仍然下降。尤其是,取消部分完成的事務(wù)浪費(fèi)了處理資源和內(nèi)存,以及接下來由于重復(fù)事務(wù)先前所完成的部分,又導(dǎo)致了進(jìn)一步的浪費(fèi)。附圖7展示了如何根據(jù)本發(fā)明的至少一個實(shí)施例來防止死鎖。一個數(shù)值集合表被分割成單獨(dú)的表。附圖7展示了兩個分區(qū)(被一粗線分開),附加部分的存在由垂直省略號所表示。每個單獨(dú)的分區(qū)表0、1等包含相同的記錄,但是這些記錄中的數(shù)值在分區(qū)之間通常將各不相同。在附圖7的例子中,分區(qū)0具有Redmond/Delivered、Redmond/InProcess、Redmond/Shipped、Seattle/Delivered、Seattle/InProcess以及Seattle/Shipped的記錄。分區(qū)1也具有Redmond/Delivered、Redmond/InProcess、Redmond/Shipped、Seattle/Delivered、Seattle/InProcess以及Seattle/Shipped的記錄。然而,在分區(qū)0中Redmond/Delivered的Quantity和Count的值不同于分區(qū)1中Redmond/Deliverd的Quantity和Count的值,等等。在一個時間只允許僅僅單個的程序線程訪問特定的部分。為舉例說明,附圖6中的線程A和線程B現(xiàn)在被展示在附圖7中。在附圖7中,線程A在分區(qū)0中執(zhí)行其事務(wù),而線程B同時在分區(qū)1中執(zhí)行其事務(wù)。因?yàn)檫@些線程不再爭相訪問同一記錄,因而避免了死鎖。在使用SQLSERVERTM2000RDBMS軟件的本發(fā)明的一個實(shí)施例中,附圖7的分區(qū)表被作為單獨(dú)的SQL表來實(shí)現(xiàn),例如附圖8所展示的那樣。分區(qū)數(shù)目作為一個附加字段(“PartitionID”)而被包括。觸發(fā)器在圖2的實(shí)例數(shù)據(jù)表上維護(hù)該多重分區(qū)集合表。如本領(lǐng)域所公知,“觸發(fā)器”是SQL存儲程序的一個特定類型,其中該程序被INSERT、UPDATE或DELETE狀態(tài)所自動調(diào)用。無論何時一個新記錄被插入到圖2的實(shí)例數(shù)據(jù)表中,觸發(fā)器導(dǎo)致一個相應(yīng)的基值,該基值被產(chǎn)生到圖8的多重分區(qū)集合表的分區(qū)之一中。同樣,當(dāng)更新實(shí)例數(shù)據(jù)表(附圖2)中的一個記錄時,多重分區(qū)集合表(附圖8)的相應(yīng)記錄也被更新。在任何給定的時間,附圖8的表中的單獨(dú)分區(qū)將不具有關(guān)于BusinessX的完整的信息。對實(shí)例數(shù)據(jù)表(附圖2)的一個可導(dǎo)致分區(qū)0內(nèi)的一個更新,而對實(shí)例數(shù)據(jù)表的另一個更新可導(dǎo)致分區(qū)1內(nèi)的一個更新,等等。此外,實(shí)例數(shù)據(jù)表中的記錄的創(chuàng)建可導(dǎo)致附圖8的一個分區(qū)表中的記錄的更新,且同一實(shí)例數(shù)據(jù)記錄的的之后的更新可導(dǎo)致不同分區(qū)中的記錄的更新。例如,將新的訂購單數(shù)目140(Redmond,Quantity=200)加入附圖2可導(dǎo)致附圖8中的<PartitionID=1>/<City=Redmond>/<ProcessState=InProcess>記錄的Quantity和Count字段增加200和1。然而,當(dāng)裝貨訂購單140的貨物時,附圖8中的<PartitionID=3>/<City=Redmond>/<ProcessState=InProcess>記錄的Quantity和Count字段可減少200和1,且<PartitionID=3>/<City=Redmond>/<ProcessState=Shipped>記錄的相同字段增加200和1。相應(yīng)的,結(jié)合該分區(qū)以便為BusinessX提供一個完整的數(shù)據(jù)集合表。尤其是,下面的SQL代碼被至少一個實(shí)例運(yùn)用CREATEVIEW<view_name>ASSELECTCity,ProcessState,SUM(Quantity),SUM(Count)FROM<multi_partition_table>GROUPBYCity,ProcessState第一個斜體名(“view_name”)是一個視圖的名稱,在該視圖中結(jié)合有單獨(dú)的分區(qū)。第二個斜體名(“multi_partition_table”)是附圖8的多重分區(qū)集合表的名稱。結(jié)果表(“view_name”)會依照附圖9所示的形式。由于多重分區(qū)表的每個分區(qū)包含相對少量的記錄,因此分區(qū)可以相對快速的結(jié)合。事實(shí)上,概括了概要。在另一個實(shí)例中,每個分區(qū)可作為一個單獨(dú)的表實(shí)現(xiàn),然后隨著SQLJOIN狀態(tài)而加入一個CREATEVIEW命令。因而每個分區(qū)在一個時間僅僅被一個程序線程所訪問,一個線程必須具有一個虛擬權(quán)標(biāo)的占有權(quán)以訪問一個分區(qū)。在本發(fā)明的一個實(shí)施例中,通過對一個名為Get_Mutex的特定存儲程序的調(diào)用來獲得該權(quán)標(biāo)。如前邊所討論的那樣,多重分區(qū)集合表由一個SQL觸發(fā)器來維護(hù)。在可更新多重分區(qū)集合表中的一行之前,觸發(fā)器中的一個或多個指令必須表明更新哪一行。作為這些指令的一部分,Get_Mutex調(diào)用存儲程序。該Get_Mutex程序接著返回一個該表的PartitionID列的值。當(dāng)線程在具有返回的PartitionID值的記錄上執(zhí)行事務(wù)時,阻止其它線程獲取相同的值,且因而在其被其它線程所更新時阻止對分區(qū)的訪問。聯(lián)系前邊的例子,當(dāng)在實(shí)例數(shù)據(jù)表(圖2)中初次創(chuàng)建一個訂購單140的記錄時,激發(fā)觸發(fā)器。觸發(fā)器接下來調(diào)用Get_Mutex并接收PartitionID的一個數(shù)值;確定被更新的分區(qū)中的行;識別多重分區(qū)集合表的行,其中PartitionID等于Get_Mutex程序所返回的PartitionID值,其中City等于訂購單140的實(shí)例數(shù)據(jù)記錄中的值,且其中ProcessState等于“InProcess”;通過訂購單140的實(shí)例數(shù)據(jù)記錄中的Quantity值來增加該行中的Quantity值;并且將該行中的Count值加1。作為進(jìn)一步的說明,訂購單140的現(xiàn)存的實(shí)例數(shù)據(jù)記錄隨后被更新,以將ProcessState從InProcess改為Shipped。觸發(fā)器中的附加邏輯將調(diào)用Get_Mutex并接收PartitionID的一個數(shù)值;確定被更新的分區(qū)中的行;識別多重分區(qū)集合表的行,其中PartitionID等于由Get_Mutex程序所返回的值,其中City等于訂購單140的實(shí)例數(shù)據(jù)記錄中的值,且其中ProcessState等于InProcess;通過訂購單140的實(shí)例數(shù)據(jù)記錄中的Quantity值來減少該行中的Quantity值;將該行中的Count值減1;識別多重分區(qū)集合表的行,其中PartitionID等于Get_Mutex程序所返回的值,其中City等于訂購單140的實(shí)例數(shù)據(jù)記錄中的值,且其中ProcessState等于Shipped;通過訂購單140的實(shí)例數(shù)據(jù)記錄中的Quantity值來增加該行中的Quantity值;并且將該行中的Count值加1。當(dāng)訂購單140ProcessState從Shipped改為Delivered時,類似的邏輯將識別和修改多重分區(qū)集合表中的適當(dāng)?shù)男?。一個Get_Mutex的執(zhí)行展示在附圖10中。首先,創(chuàng)建一個名為RTA_Mutex的單列表(“創(chuàng)建表RTA_Mutex”)。RTA_Mutex表具有和附圖8的多重分區(qū)集合表中的分區(qū)數(shù)相同的行數(shù);接著為每個字段分配PartitionID值之一。在附圖10的實(shí)施例中,假使附圖8的表包括10個分區(qū)(例如,PartitionID具有從0到9的整數(shù)值)。接下來,創(chuàng)建Get_Mutex存儲程序。在聲明局部變量@par之后,局部@par變量被分配來自RTA_Mutex表中的行的一個值。尤其是,“選擇”狀態(tài)將來自RTA_Mutex表的PartitionID的值分配給(@par,其中RTA_Mutex表的PartitionID等于“@@spid%10”。系統(tǒng)函數(shù)@@spid返回當(dāng)前用戶進(jìn)程的服務(wù)進(jìn)程標(biāo)志符。換言之,該@@spid函數(shù)返回一個識別程序線程的數(shù)目,該程序線程調(diào)用Get_Mutex存儲程序。模數(shù)算術(shù)運(yùn)算符(“%”)接著返回被10所除的程序線程標(biāo)識符的余數(shù)。該程序接著找出RTA_Mutex的行,該行的PartitionID的值等于余數(shù),并通過排它鎖鎖定提示(“(xlock)”)來鎖定該行。被鎖定的RTA_Mutex行中的PartitionID值接下來作為Get_Mutex存儲程序的結(jié)果而被返回。因?yàn)樵撔猩系呐潘i,沒有其他程序線程被允許訪問RTA_Mutex表的行,因此直到先前獲得該P(yáng)artitionID值的事務(wù)完成為止,都不能獲得該P(yáng)artitionID值。出于說明的目的,具有231的識別符的程序線程調(diào)用Get_Mutex。231被10除后的余數(shù)為1;從而通過Get_Mutex而被返回給程序線程的值是RTA_Mutex中的字段的值,其中該RTA_Mutex的PartitionID等于1。根據(jù)來自Get_Mutex的值的返回,線程231接著能更新附圖8中分區(qū)1的行。當(dāng)線程231更新分區(qū)1的時候,線程161調(diào)用Get_Mutex。然而,由于線程231的事務(wù)還沒有完成,因此線程161還不能訪問持有PartitionID的1的值的RTA_Mutex的行。線程161因而進(jìn)入等待隊(duì)列,直到必需的RTA_Mutex行上的排它鎖被釋放(例如線程231的事務(wù)被完成)時為止。如果額外的線程試圖訪問該RTA_Mutex行,則它們也得根據(jù)先進(jìn)先出(或別的)的基準(zhǔn)進(jìn)入等待隊(duì)列。顯然,在一個數(shù)值從對Get_Mutex的調(diào)用中被返回之前,線程161不會繼續(xù)進(jìn)行,線程161因而不會在線程231訪問分區(qū)1時試圖訪問分區(qū)1。當(dāng)線程161在隊(duì)列中等待釋放xlock時,線程154調(diào)用Get_Mutex。由于目前在PartitionID=4的RTA_Mutex的行上沒有加鎖,因此Get_Mutex向線程154返回一個值(4)。附圖10僅僅只是可執(zhí)行Get_Mutex程序的一種方式的實(shí)施例。作為另外一個實(shí)施例,試圖訪問一個分區(qū)的所有線程能夠進(jìn)入先進(jìn)先出的隊(duì)列。因而隊(duì)列中的每個線程能夠被分配第一可用分區(qū)。在一個實(shí)例中,分區(qū)的數(shù)量至少等于且最好是大于數(shù)據(jù)庫服務(wù)器上的處理器的數(shù)量。如上所述,實(shí)例數(shù)據(jù)表(附圖2)的大小將會隨著時間的推移、和所接收的越來越多的訂購單一樣不斷增大。然而,附圖9的集合表(或者附圖8的多重分區(qū)集合表)的大小不會增加,除非增加附加集合字段(例如,Redmond/Denied和Seattle/Denied)。盡管表的大小不會增加,然而Quantity和Count列的數(shù)值將會增加。通常,一個組織僅僅需要某個時“窗”內(nèi)的事件的集合數(shù)據(jù)。例如,BusinessX也許需要當(dāng)前處理的訂購單的、當(dāng)前正被裝貨的訂購單的、已在最近24小時內(nèi)發(fā)貨的訂購單的集合數(shù)據(jù)。不僅如此,BusinessX也許需要諸如事件發(fā)生日的時間之類的基礎(chǔ)上的分類數(shù)據(jù)。聯(lián)系附圖11,BusinessX管理人員們希望了解在最近的上午8:00和還未被裝貨(實(shí)施例中的0)期間、在最近的上午9:00期間(也是實(shí)施例中的0)、在最近的上午10:00期間(2和1)等等,在累蒙德和西雅圖發(fā)生了多少訂購單。管理人員同樣,這些管理人員們也想了解有多少訂購單已在上午8:00被裝貨,但是還未發(fā)貨,有多少訂購單已在上午9:00被裝貨,但還未發(fā)貨,等等。這些管理人員們還想知道在這些時間段內(nèi)有多少訂購單已被發(fā)貨。然而,這就意味著集合表在每小時內(nèi)增長。不同于“InProcess”或者“Shipped”的訂購單,其最終將變成“Delivered”,一個“Delivered訂購單不能轉(zhuǎn)到另外一個狀態(tài)。不同的是,一旦一個訂購單在特定一天中的特定一個小時中變成“Delivered”,記錄就堅(jiān)持該小時/天的集合表,除非某些行為發(fā)生。隨著時間的推移,表將因而變得巨大且查詢速度緩慢。另一方面,這些管理人員們對了解訂購單的總數(shù)興趣不大,這些訂購單是在一個更長的時期(例如,在最近的一周,等等)中已從一個地點(diǎn)被發(fā)貨。盡管該信息對于某些目的而言也許有用,但其相對較少需要。附圖12展示了在本發(fā)明的至少一個實(shí)施例中,停止的訂購單(例如,已發(fā)貨的訂購單)的數(shù)據(jù)在到了一定的壽命時可從實(shí)時集合表中清除。為簡單起見,僅展示了單個的分區(qū)。然而,如本領(lǐng)域技術(shù)人員基于以下描述而所知的那樣,可結(jié)合上述多重分區(qū)的實(shí)施例來實(shí)現(xiàn)圖12的實(shí)施例。如圖12所示,TimeSlice和Hour已經(jīng)被添加到圖9的實(shí)時集合表中。TimeSlice是服務(wù)日期和時間(精確到小時),更新該實(shí)例數(shù)據(jù)表(附圖2),以反映完成了一個實(shí)例。在本例中,當(dāng)訂購的貨物已發(fā)貨給客戶時,一個訂購單就完成了。Hour是行業(yè)事件發(fā)生那天的小時。在例子中,TimeSlice的成分跟完整記錄的Hour相同,盡管這是無關(guān)緊要的。正如先前的例子,圖12實(shí)時集合表的數(shù)據(jù)被觸發(fā)器修正,當(dāng)實(shí)例數(shù)據(jù)表的數(shù)據(jù)記錄被插入或更新時,觸發(fā)器就激發(fā)。TimeSlice列的數(shù)值由觸發(fā)器按照兩個規(guī)則自動生成。如果期望對一個記錄的更多的更新(比如,貨物還沒有被發(fā)送),那么TimeSlice為空。否則,生成一個數(shù)字,其代表當(dāng)前時間(精確到小時)和日期。顯然,用于完成的訂購單的非空TimeSlice值并不阻止完成的訂購單的日期的集合。因?yàn)門imeSlice的時間成分只精確到小時,在相同1小時內(nèi)由同一個倉庫發(fā)貨的訂購單可集合于單個的記錄中。比如,訂購單126和128(附圖2)在下午3:10和3:05被分別發(fā)貨。如圖12所示,1月20日下午3點(diǎn)/3/西雅圖/發(fā)送表明了2的計(jì)數(shù)和790的數(shù)量,它將圖2中的訂購單126和訂購單128的數(shù)據(jù)記錄聯(lián)系起來。每當(dāng)觸發(fā)器修正圖12的實(shí)時集合表時,觸發(fā)器也決定該表中的任意的完成實(shí)例集合數(shù)據(jù)是否是陳舊的,比如,不再需要的。在實(shí)施例中,假設(shè)24小時以前完成的請求集合數(shù)據(jù)是陳舊的且應(yīng)該從集合數(shù)據(jù)表中移出。因此,每次觸發(fā)器修正圖12的表時,觸發(fā)器刪除具有TimeSlice值的記錄,其中該時間片期間中的最近一次在本次的24小時以前。如果觸發(fā)器在1月21日下午1:05更新附圖12的表,那么1月20日下午12點(diǎn)/12/西雅圖/發(fā)貨的記錄就會被刪除,就象那個記錄中的所有數(shù)據(jù)相應(yīng)于24小時之前所完成的訂購單一樣。在至少一個實(shí)施例中,圖12的表被陳列在一個隱藏來自用戶的TimeSlice數(shù)據(jù)的視圖中。圖13是一個流程圖,它顯示了在多重分區(qū)中維護(hù)實(shí)時數(shù)據(jù)集合表(例如附圖12)的觸發(fā)器的邏輯。特別是,圖13的流程圖展示了在更新分區(qū)中的一個或多個集合數(shù)據(jù)記錄的事務(wù)期間,每個單獨(dú)程序線程中的觸發(fā)器所遵循的邏輯。每個線程更新一個單獨(dú)分區(qū),每個分區(qū)都有和圖12的表相似的格式。在執(zhí)行期間,觸發(fā)器訪問兩個被命名為“插入”和“刪除”的系統(tǒng)表,這兩個表被SQL數(shù)據(jù)庫服務(wù)器維護(hù)于內(nèi)存(比如RAM)中,“插入”和“刪除”表由數(shù)據(jù)庫服務(wù)器自動生成,并且臨時儲存來自一行的數(shù)據(jù)副件,該行在先前試圖更新或是插入一個記錄到一個現(xiàn)有的實(shí)例數(shù)據(jù)表(比如圖2)的記錄時被影響。特別是,插入的表包括被插入到實(shí)例數(shù)據(jù)表的一行中的值,刪除的表包括在實(shí)例數(shù)據(jù)表的更新的行中被替換的值。開始后,觸發(fā)器首先獲得塊102的權(quán)標(biāo)。如上所述,觸發(fā)器通過對諸如Get_Mutex之類的程序的調(diào)用而獲得一個權(quán)標(biāo)。在塊104中,觸發(fā)器從而決定是否正在更新實(shí)例數(shù)據(jù)記錄。特別是,觸發(fā)器決定刪除的表是否為空。如果刪除的表不為空,則刪除的表中的Quantity值將在塊106中使用,以減少分區(qū)的合適記錄的Quantity值。特別是,觸發(fā)器要識別分區(qū)中的記錄,此處,Hour等于實(shí)例數(shù)據(jù)記錄被更新到以前的ProcessState值期間的小時,City等于更新實(shí)例數(shù)據(jù)記錄的城市,ProcessState等于更新記錄的以前的過程狀態(tài)。記錄的Count值被減去1。在塊108中,觸發(fā)器從而決定分區(qū)中的任意記錄是否具有TimeSlice的空值和為0的Count值。如果這樣,則刪除那些記錄。在塊110中,觸發(fā)器決定正被更新的(或插入的)實(shí)例數(shù)據(jù)記錄是否完整。換言之,該觸發(fā)器決定是否期望進(jìn)一步的更新。這可以用各種辦法來執(zhí)行,比如,一個“IsComplete”列可以被添加到每個實(shí)例記錄中,且當(dāng)更新完成時設(shè)置成“1”。在另一個實(shí)施例中,各種過程狀態(tài)值(比如“Delivered”或“Denied”)可以通過信號表示實(shí)例的過程完成。如果實(shí)例數(shù)據(jù)記錄不完整(比如,正被更新的訂購單實(shí)例的過程仍然活動且期望進(jìn)一步的更新),來自插入表的Quantity值就用于塊112,以增加集合表分區(qū)中的記錄的Quantity值,在此處TimeSlice為空,Hour等于實(shí)例數(shù)據(jù)記錄被更新為其當(dāng)前ProcessState值的小時,City等于更新的實(shí)例數(shù)據(jù)記錄的城市,且ProcessState等于更新的實(shí)例數(shù)據(jù)記錄的當(dāng)前ProcessState值。該分區(qū)記錄中的Count值也加上1。觸發(fā)器從而終結(jié)。如果在塊110中,觸發(fā)器決定正被更新的實(shí)例數(shù)據(jù)記錄是完整的,則在塊114中生成TimeSlice值。在塊116中,觸發(fā)器刪除具有所選擇的時窗(例如24小時之前的)之外的TimeSlice值的所有記錄。觸發(fā)器從而識別(如果必須的話則創(chuàng)建)一個分區(qū)記錄,在這個記錄中TimeSlice等于剛生成的TimeSlice值,Hour等于完成的小時,City等于更新的實(shí)例數(shù)據(jù)記錄的城市,ProcessState等于來自完整的實(shí)例數(shù)據(jù)記錄(例子中的“Delivered”)的值。來自“插入”表的Quantity值接著用于增加識別的(或創(chuàng)建的)分區(qū)記錄的Quantity值。分區(qū)記錄的Count值也加上1。觸發(fā)器從而終結(jié)。在別的實(shí)施例中,圖13的觸發(fā)器邏輯可以被修正以調(diào)節(jié)實(shí)例數(shù)據(jù)表中的多樣記錄的更新。替代塊112和118之后的結(jié)束,觸發(fā)器將決定是否有附加的實(shí)例記錄作為實(shí)例數(shù)據(jù)表的批量更新而正被更新。如果如此,觸發(fā)器邏輯將返回塊104。如果不是這樣,觸發(fā)器從而終結(jié)。在別的實(shí)例中,時窗可以由用戶調(diào)整。雖然本發(fā)明可以使用一個假設(shè)的商家類型作為例子,但是應(yīng)該記住,該發(fā)明不必受限于商家、組織或活動的特殊類型。而且,該發(fā)明也不必受限于某些實(shí)施,在這些實(shí)施中,數(shù)值被數(shù)據(jù)庫記錄中的字段的求和值所集合。但在一個實(shí)施例中,可以創(chuàng)建集合表,其中集合數(shù)值代表數(shù)據(jù)庫記錄中字段的平均值。因此,雖然已經(jīng)描述了執(zhí)行發(fā)明的特定實(shí)施例,然而那些本領(lǐng)域技術(shù)人員知道,如同附加的權(quán)利要求所闡明的那樣,這里存在著上述系統(tǒng)的眾多變化和置換以及落入本發(fā)明的精神和范圍之中的技術(shù),這些內(nèi)容和其它的修改都在由附加的權(quán)利要求所定義的本發(fā)明的范圍之中。權(quán)利要求1.一種維護(hù)數(shù)值集合的方法,該數(shù)值被包括在多樣數(shù)據(jù)庫記錄的字段中,該方法包括創(chuàng)建多樣集合群,每個群包括多個集合記錄,每個集合記錄包括被多樣數(shù)據(jù)庫記錄的一個不同子集的字段所包含的一個數(shù)值集合的數(shù)值;當(dāng)插入或更新第一多樣數(shù)據(jù)庫記錄時選擇一個第一數(shù)據(jù)集合群;基于插入或更新的第一數(shù)據(jù)庫記錄中的一個或多個數(shù)值并作為第一集合群更新處理的一部分來修訂第一集合群的集合記錄之一的集合值;阻止第一集合群的隨后的選擇,直到完成第一集合群的更新處理時為止;當(dāng)執(zhí)行第一集合群更新處理且當(dāng)插入或更新第二多樣數(shù)據(jù)庫記錄時,選擇一個第二集合群;并且基于插入或更新的第二數(shù)據(jù)庫記錄中的一個或多個數(shù)值且在第一集合群更新處理期間,修訂第二集合群的集合記錄之一的集合值。2.根據(jù)權(quán)利要求1所述的方法,其中每個集合群是一個多分區(qū)集合表的一個單獨(dú)分區(qū)。3.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括當(dāng)啟動更新所述第一多樣數(shù)據(jù)庫記錄的隨后的處理時,選擇一個第三集合群;并且基于隨后更新的第一數(shù)據(jù)庫記錄中的一個或多個數(shù)值,修訂該第三集合群的集合記錄的集合值;4.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括將所述多樣集合群組合成單個的集合記錄表,該單個表的每個記錄集合了來自每個所述多樣集合群的集合記錄的數(shù)值。5.根據(jù)權(quán)利要求1所述的方法,其中所述的創(chuàng)建多樣集合群包括創(chuàng)建至少三個集合群。6.根據(jù)權(quán)利要求1所述的方法,其中所述的創(chuàng)建多樣集合群包括創(chuàng)建至少十個集合群。7.根據(jù)權(quán)利要求1所述的方法,其中所述的創(chuàng)建多樣集合群包括創(chuàng)建大量集合群,并且該數(shù)目超過用于執(zhí)行權(quán)利要求1的步驟的計(jì)算機(jī)中的處理器的數(shù)目。8.根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)第一程序線程的請求而啟動對第一集合群的所述選擇,以訪問多樣集合群之一;并且所述的阻止隨后的選擇包括拒絕其他程序線程訪問第一集合群,直到第一程序線程不再要求訪問第一集合群。9.根據(jù)權(quán)利要求8述的方法,進(jìn)一步包括當(dāng)收到來自程序線程的、請求訪問集合群的請求時,確定請求程序線程的系統(tǒng)標(biāo)識符;并且基于所確定的系統(tǒng)標(biāo)識符而將集合群標(biāo)識符分配給請求程序線程。10.根據(jù)權(quán)利要求1所述的方法,其中每個多樣數(shù)據(jù)庫記錄相應(yīng)于一個組織活動的實(shí)例,每個多樣數(shù)據(jù)庫記錄包括具有一個數(shù)值的一個字段,該數(shù)值指示相應(yīng)的請求處于多個過程狀態(tài)之一,并且每個集合群包括時序分類集合記錄,每個時序分類集合記錄包括實(shí)例的一個集合值,該實(shí)例處于和時序分類集合記錄相關(guān)的時期之中的幾個過程狀態(tài)之一之中。11.根據(jù)權(quán)利要求10所述的方法,其中所述多個過程狀態(tài)之一包括被完成的一個實(shí)例,并進(jìn)一步包括刪除相應(yīng)于在預(yù)選時窗之外所完成的實(shí)例的集合記錄。12.一種維護(hù)集合數(shù)據(jù)的方法,該數(shù)據(jù)涉及一個組織活動的多樣實(shí)例,每個活動實(shí)例都有多個過程狀態(tài)之一,該方法包括在一個集合數(shù)據(jù)表中創(chuàng)建多個記錄,每條記錄含有一個集合值,該值用于同一個時段同一個過程狀態(tài)的多樣實(shí)例的一個子集;并且更新集合數(shù)據(jù)表以反映相應(yīng)于預(yù)選時窗之外的過程狀態(tài)之一中的實(shí)例的數(shù)據(jù)的刪除。13.根據(jù)權(quán)利要求12所述的方法,包括刪除來自集合數(shù)據(jù)表的記錄,該表指示沒有多樣實(shí)例處于相應(yīng)于刪除記錄的時期中的過程狀態(tài)之一之中。14.根據(jù)權(quán)利要求12所述的方法,其中所述的更新集合記錄表包括刪除包含有所述多樣實(shí)例的實(shí)例的集合數(shù)據(jù)的記錄,其中該多樣實(shí)例在預(yù)選時窗之外完成。15.根據(jù)權(quán)利要求12所述的方法,其中過程狀態(tài)之一相應(yīng)于一個正被完成的實(shí)例,且其中多個記錄中的每一個都包括完成時間字段;且進(jìn)一步包括為記錄的完成時間字段分配一個空值,該記錄相應(yīng)于未被完成的實(shí)例;為記錄的完成時間字段分配一個非空值,該記錄相應(yīng)于已被完成的實(shí)例。16.根據(jù)權(quán)利要求15的方法,其中在實(shí)例數(shù)據(jù)表的相關(guān)記錄中維護(hù)每個實(shí)例的數(shù)據(jù),且包括確定實(shí)例數(shù)據(jù)表的記錄是否已經(jīng)被更新;當(dāng)確定一個實(shí)例數(shù)據(jù)表的記錄已經(jīng)被更新時,基于所述更新來修訂多個記錄之一的集合值;進(jìn)一步確定已更新的實(shí)例數(shù)據(jù)表記錄是否包括一個值,該值指示該相關(guān)實(shí)例處于已完成的過程狀態(tài)中;當(dāng)確定該相關(guān)實(shí)例處于已完成的過程狀態(tài)中時,生成用于實(shí)例的完成值的時間;并且基于所述用于實(shí)例的完成值的時間來更新該集合數(shù)據(jù)表的一個記錄。17.如權(quán)利要求16所述的方法,包括刪除包含有所述多樣實(shí)例的實(shí)例的集合數(shù)據(jù)的記錄,該多樣實(shí)例在預(yù)選時窗之外被完成。18.一種具有存儲其上的數(shù)據(jù)的計(jì)算機(jī)可讀媒體,該數(shù)據(jù)表示處理器所執(zhí)行的、處理器所執(zhí)行時的指令的次序,致使處理器執(zhí)行的步驟包括創(chuàng)建多樣集合群,每個群包括多個集合記錄,每個集合記錄包括被多樣數(shù)據(jù)庫記錄的一個不同子集的字段所包含的一個數(shù)值集合的數(shù)值;當(dāng)插入或更新第一多樣數(shù)據(jù)庫記錄時選擇一個第一數(shù)據(jù)集合群;基于插入或更新的第一數(shù)據(jù)庫記錄中的一個或多個數(shù)值并作為第一集合群更新處理的一部分來修訂第一集合群的集合記錄之一的集合值;阻止第一集合群的隨后的選擇,直到完成第一集合群的更新處理時為止;當(dāng)執(zhí)行第一集合群更新處理且當(dāng)插入或更新第二多樣數(shù)據(jù)庫記錄時,選擇一個第二集合群;并且基于插入或更新的第二數(shù)據(jù)庫記錄中的一個或多個數(shù)值且在第一集合群更新處理期間,修訂第二集合群的集合記錄之一的集合值。19.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,其中每個集合群是一個多分區(qū)集合表的一個單獨(dú)分區(qū)。20.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,包括用于執(zhí)行以下步驟的進(jìn)一步的指令當(dāng)啟動更新所述第一多樣數(shù)據(jù)庫記錄的隨后的處理時,選擇一個第三集合群;并且基于隨后更新的第一數(shù)據(jù)庫記錄中的一個或多個數(shù)值,修訂該第三集合群的集合記錄的集合值。21.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,包括用于執(zhí)行以下步驟的進(jìn)一步的指令將所述多樣集合群組合成一個單個的集合記錄表,該單個表的每個記錄集合了來自每個所述多樣集合群的一個集合記錄的數(shù)值。22.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,其中所述的創(chuàng)建多樣集合群包括創(chuàng)建至少三個集合群。23.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,其中所述的創(chuàng)建多樣集合群包括創(chuàng)建至少十個集合群。24.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,其中響應(yīng)第一程序線程的請求而啟動對第一集合群的所述選擇,以訪問多樣集合群之一;所述的阻止隨后的選擇包括拒絕其他程序線程訪問第一集合群,直到第一程序線程不再要求訪問第一集合群。25.根據(jù)權(quán)利要求24述的計(jì)算機(jī)可讀媒體,包括用于執(zhí)行以下步驟的進(jìn)一步的指令當(dāng)收到來自程序線程的、請求訪問集合群的請求時,確定請求程序線程的系統(tǒng)標(biāo)識符;并且基于所確定的系統(tǒng)標(biāo)識符而將集合群標(biāo)識符分配給請求程序線程。26.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,其中每個多樣數(shù)據(jù)庫記錄相應(yīng)于一個組織活動的實(shí)例,每個多樣數(shù)據(jù)庫記錄包括具有一個數(shù)值的一個字段,該數(shù)值指示相應(yīng)的請求處于多個過程狀態(tài)之一,并且每個集合群包括時序分類集合記錄,每個時序分類集合記錄包括實(shí)例的一個集合值,該實(shí)例處于和時序分類集合記錄相關(guān)的時期之中的幾個過程狀態(tài)之一之中。27.根據(jù)權(quán)利要求26所述的方法,其中所述多個過程狀態(tài)之一包括被完成的一個實(shí)例,且包括用于執(zhí)行以下步驟的進(jìn)一步的指令刪除相應(yīng)于在預(yù)選時窗之外所完成的實(shí)例的集合記錄。28.一種具有存儲其上的數(shù)據(jù)的計(jì)算機(jī)可讀媒體,該數(shù)據(jù)表示處理器所執(zhí)行時的指令的次序,致使處理器執(zhí)行的步驟包括在一個集合數(shù)據(jù)表中創(chuàng)建多個記錄,每條記錄含有組織活動的多樣實(shí)例的子集的集合值,活動的每個實(shí)例具有多個過程狀態(tài)之一,子集中的每個實(shí)例在相同的時期處于相同的過程狀態(tài);并且更新集合數(shù)據(jù)表以反映相應(yīng)于預(yù)選時窗之外的過程狀態(tài)之一中的實(shí)例的數(shù)據(jù)的刪除。29.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀媒體,包括用于執(zhí)行以下步驟的進(jìn)一步的指令刪除來自集合數(shù)據(jù)表的記錄,該表指示沒有多樣實(shí)例處于相應(yīng)于刪除記錄的時期中的過程狀態(tài)之一之中。30.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀媒體,其中所述的更新集合記錄表包括刪除包含有所述多樣實(shí)例的集合數(shù)據(jù)的記錄,其中該多樣實(shí)例在預(yù)選時窗之外完成。31.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀媒體,其中過程狀態(tài)之一相應(yīng)于一個正被完成的實(shí)例,且其中多個記錄中的每一個都包括完成時間字段;且包括用于執(zhí)行以下步驟的進(jìn)一步的指令為記錄的完成時間字段分配一個空值,該記錄相應(yīng)于未被完成的實(shí)例;為記錄的完成時間字段分配一個非空值,該記錄相應(yīng)于已被完成的實(shí)例。32.根據(jù)權(quán)利要求28的計(jì)算機(jī)可讀媒體,其中在實(shí)例數(shù)據(jù)表的相關(guān)記錄中維護(hù)每個實(shí)例的數(shù)據(jù),且包括用于執(zhí)行以下步驟的進(jìn)一步的指令確定實(shí)例數(shù)據(jù)表的記錄是否已經(jīng)被更新;當(dāng)確定一個實(shí)例數(shù)據(jù)表的記錄已經(jīng)被更新時,基于所述更新來修訂多個記錄之一的集合值;進(jìn)一步確定已更新的實(shí)例數(shù)據(jù)表記錄是否包括一個值,該值指示該相關(guān)實(shí)例處于已完成的過程狀態(tài)中;當(dāng)確定該相關(guān)實(shí)例處于已完成的過程狀態(tài)中時,生成用于實(shí)例的完成值的時間;并且基于所述用于實(shí)例的完成值的時間來更新該集合數(shù)據(jù)表的一個記錄。33.如權(quán)利要求32所述的計(jì)算機(jī)可讀媒體,且包括用于執(zhí)行以下步驟的進(jìn)一步的指令刪除包含有所述多樣實(shí)例的實(shí)例的集合數(shù)據(jù)的記錄,該多樣實(shí)例在預(yù)選時窗之外被完成。34.一種維護(hù)數(shù)值集合的數(shù)據(jù)處理裝置,其中該數(shù)值被包括在多樣數(shù)據(jù)庫記錄的字段中,該數(shù)據(jù)處理裝置包括至少一個數(shù)據(jù)儲存設(shè)備;至少一個用戶輸入設(shè)備;以及被有效連接到所述儲存裝置設(shè)備和用戶輸入設(shè)備的一個處理器,其中至少一個數(shù)據(jù)儲存設(shè)備已在其上存儲了被執(zhí)行的、被執(zhí)行時的指令組,將所述處理器配置為創(chuàng)建多樣集合群,每個群包括多個集合記錄,每個集合記錄包括被多樣數(shù)據(jù)庫記錄的一個不同子集的字段所包含的一個數(shù)值集合的數(shù)值;當(dāng)插入或更新第一多樣數(shù)據(jù)庫記錄時選擇一個第一數(shù)據(jù)集合群;基于插入或更新的第一數(shù)據(jù)庫記錄中的一個或多個數(shù)值并作為第一集合群更新處理的一部分來修訂第一集合群的集合記錄之一的集合值;阻止第一集合群的隨后的選擇,直到完成第一集合群的更新處理時為止;當(dāng)執(zhí)行第一集合群更新處理且當(dāng)插入或更新第二多樣數(shù)據(jù)庫記錄時,選擇一個第二集合群;并且基于插入或更新的第二數(shù)據(jù)庫記錄中的一個或多個數(shù)值且在第一集合群更新處理期間,修訂第二集合群的集合記錄之一的集合值。35.根據(jù)權(quán)利要求34所述的數(shù)據(jù)處理裝置,其中指令組包括被執(zhí)行的、被執(zhí)行時的附加指令,將所述處理器配置為當(dāng)啟動更新所述第一多樣數(shù)據(jù)庫記錄的隨后的處理時,選擇一個第三集合群;并且基于隨后更新的第一數(shù)據(jù)庫記錄中的一個或多個數(shù)值,修訂該第三集合群的集合記錄的集合值。36.根據(jù)權(quán)利要求34所述的數(shù)據(jù)處理裝置,其中指令組包括被執(zhí)行的、被執(zhí)行時的附加指令,將所述處理器配置為將所述多樣集合群組合成一個單個的集合記錄表,該單個表的每個記錄集合了來自每個所述多樣集合群的一個集合記錄的數(shù)值。37.根據(jù)權(quán)利要求34所述的數(shù)據(jù)處理裝置,其中響應(yīng)第一程序線程的請求而啟動對第一集合群的所述選擇,以訪問多樣集合群之一;所述的阻止隨后的選擇包括拒絕其他程序線程訪問第一集合群,直到第一程序線程不再要求訪問第一集合群。38.如權(quán)利要求37所述的數(shù)據(jù)處理裝置,其中指令組包括被執(zhí)行的附加指令,將所述處理器配置為當(dāng)收到來自程序線程的、請求訪問集合群的請求時,確定請求程序線程的系統(tǒng)標(biāo)識符;并且基于所確定的系統(tǒng)標(biāo)識符而將集合群標(biāo)識符分配給請求程序線程。39.一種用于維護(hù)涉及組織活動的多樣實(shí)例的集合數(shù)據(jù)的數(shù)據(jù)處理裝置,該活動的每個實(shí)例具有多個過程狀態(tài)之一,該裝置包括至少一個數(shù)據(jù)儲存設(shè)備;至少一個用戶輸入設(shè)備;以及被有效連接到所述儲存裝置設(shè)備和用戶輸入設(shè)備的一個處理器,其中至少一個數(shù)據(jù)儲存設(shè)備已在其上存儲了被執(zhí)行時的指令組,將所述處理器配置為在一個集合數(shù)據(jù)表中創(chuàng)建多個記錄,每條記錄含有同一時期、同一過程狀態(tài)中的多樣實(shí)例的子集的一個集合值,并且更新集合數(shù)據(jù)表以反映相應(yīng)于預(yù)選時窗之外的過程狀態(tài)之一中的實(shí)例的數(shù)據(jù)的刪除。40.根據(jù)權(quán)利要求39所述的數(shù)據(jù)處理裝置,其中所述指令組包括被執(zhí)行時的附加指令,將所述處理器配置為刪除來自集合數(shù)據(jù)表的記錄,該表指示沒有多樣實(shí)例處于相應(yīng)于刪除記錄的時期中的過程狀態(tài)之一之中。41.根據(jù)權(quán)利要求39所述的數(shù)據(jù)處理裝置,其中所述的更新集合記錄表包括刪除包含有所述多樣實(shí)例的實(shí)例的集合數(shù)據(jù)的記錄,其中該多樣實(shí)例在預(yù)選時窗之外完成。42.根據(jù)權(quán)利要求39所述的數(shù)據(jù)處理裝置,其中過程狀態(tài)之一相應(yīng)于一個正被完成的實(shí)例,且其中多個記錄中的每一個都包括完成時間字段;且其中所述指令組包括被執(zhí)行時的附加指令,將所述處理器配置為為記錄的完成時間字段分配一個空值,該記錄相應(yīng)于未被完成的實(shí)例;為記錄的完成時間字段分配一個非空值,該記錄相應(yīng)于已被完成的實(shí)例。43.根據(jù)權(quán)利要求42所述的數(shù)據(jù)處理裝置,其中在實(shí)例數(shù)據(jù)表的相關(guān)記錄中維護(hù)每個實(shí)例的數(shù)據(jù),其中所述指令組包括被執(zhí)行時的附加指令,將所述處理器配置為確定實(shí)例數(shù)據(jù)表的記錄是否已經(jīng)被更新;當(dāng)確定一個實(shí)例數(shù)據(jù)表的記錄已經(jīng)被更新時,基于所述更新來修訂多個記錄之一的集合值;進(jìn)一步確定已更新的實(shí)例數(shù)據(jù)表記錄是否包括一個值,該值指示該相關(guān)實(shí)例處于已完成的過程狀態(tài)中;當(dāng)確定該相關(guān)實(shí)例處于已完成的過程狀態(tài)中時,生成用于實(shí)例的完成值的時間;并且基于所述用于實(shí)例的完成值的時間來更新該集合數(shù)據(jù)表的一個記錄。44.如權(quán)利要求43所述的方法,其中所述指令組包括被執(zhí)行時的附加指令,將所述處理器配置為刪除包含有所述多樣實(shí)例的實(shí)例的集合數(shù)據(jù)的記錄,該多樣實(shí)例在預(yù)選時窗之外被完成。全文摘要形成能夠在一個集合數(shù)據(jù)表中作為多分區(qū)的多樣集合群。每個群群包括多樣的集合記錄;每條集合記錄包含數(shù)值的一個集合,該數(shù)值集合被多樣數(shù)據(jù)庫記錄的不同子集所包含。當(dāng)單個的程序線程在集合群更新處理期間訪問集合群時,不允許其它線程訪問該集合群組。集合群被組合成單個的集合記錄表。每個多樣數(shù)據(jù)庫記錄可以相應(yīng)于一個組織活動的實(shí)例且包括一個具有一個值的字段,該值表示處于幾個過程狀態(tài)之一中的相應(yīng)的實(shí)例。每個集合群可以進(jìn)一步包含時序分類集合記錄,在和時序分類集合記錄相關(guān)的時限期間,每個時序分類集合記錄包含幾個過程狀態(tài)之一中的一個實(shí)例的集合值。與在預(yù)選的時窗之外所完成的實(shí)例相應(yīng)的集合記錄被刪除。文檔編號G06F12/00GK1601541SQ200410055239公開日2005年3月30日申請日期2004年7月14日優(yōu)先權(quán)日2003年9月26日發(fā)明者G·B·齊克德羅夫,R·Z·加森,E·A·里爾,余春申請人:微軟公司