專利名稱::用于在查詢時間清洗基于序列的數(shù)據(jù)的方法和系統(tǒng)的制作方法
技術領域:
:本發(fā)明涉及一種用于在查詢時間清洗(cleansing)基于序列的數(shù)據(jù)(sequence-baseddata)的系統(tǒng)和方法。
背景技術:
:諸如射頻識別數(shù)據(jù)(RFID)之類的基于序列的數(shù)據(jù)正被配置于包括供應鏈優(yōu)化、業(yè)務過程自動化、資產跟蹤,以及問題追蹤能力應用在內的應用領域中?;谛蛄械臄?shù)據(jù)讀(sequence-baseddatareads)存在異常(anomaly)起因于諸如重復讀(duplicatereads)、漏讀(missedreads)和交叉讀(crossreads)的很多不同的來源。異常還可以發(fā)生在邏輯或業(yè)務過程級。在分析結果中,RFID讀中的少量異??赡苻D換成大的餘溪。常規(guī)的"急切(eager)"數(shù)據(jù)清洗方法試圖在最前面移除所有的異常,在數(shù)據(jù)庫中僅存儲清洗后的數(shù)據(jù),并且然后在清洗后的數(shù)據(jù)上應用查詢。對于在最前面移除異常的該嘗試發(fā)生在,例如,將清洗后的數(shù)據(jù)加載到數(shù)據(jù)倉庫中的抽取-變換-加載(Extract-Trnasform-Load,ETL)過程期間。然而,在最前面移除所有這樣的異常并不總是可能的。一個原因在于清洗所需要的規(guī)則和業(yè)務上下文可能在數(shù)據(jù)加栽時間不可用。例如,可能并不知道存在循環(huán)以及它們是否會影響任何分析,直到用戶于一段時間之后在查詢結果中觀察到不規(guī)則。結果,應用可能不斷地M現(xiàn)有的異常定義并且添加新的異常定義。進一步地,用于校正數(shù)據(jù)異常的規(guī)則經常是專用的(即,幾個應用在相同的數(shù)據(jù)集上有差別地定義異常和校正)。例如,第一應用查詢跟蹤存架空間規(guī)劃(shelfspaceplanning)或勞動生產率要求關于存儲器內所有循環(huán)的知識,而對產品項目在每個位置已經呆了多久進行計算的第二應用需要移除循環(huán)中除了最初和最后的讀之外的一切。更進一步,對于特定的應用(例如,藥品電子i普系跟蹤(pharmaceuticale曙pedigreetracking))來說,法律要求保留跟蹤信息,由此排除了在最前面的數(shù)據(jù)清洗。此外,當不同的應用要求規(guī)定了動態(tài)變化的規(guī)則集合時,維護和修改多個清洗后的版本在物理上是禁止的。因而,需要克服相關領域的前述不足和限制中的至少一個。
發(fā)明內容在第一實施例中,本發(fā)明提供了一種在查詢時間從基于序列的數(shù)據(jù)中清洗異常的計算機實現(xiàn)的方法,其包括將基于序列的數(shù)據(jù)加載到由計算系統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)所管理的數(shù)據(jù)庫中,所述加載是在先于所述基于序列的數(shù)據(jù)的查詢時間的、所述基于序列的數(shù)據(jù)的加載時間進行的;在所述計算系統(tǒng)的清洗規(guī)則引擎處接收清洗規(guī)則;通過所述清洗規(guī)則引擎,將所述清洗規(guī)則自動轉換成模板,所述模板包括對所迷基于序列的數(shù)據(jù)中的一個或多個異常進行補償?shù)倪壿?;在所述查詢時間并且通過所述計算系統(tǒng)的查詢重寫引擎,接收檢索所逸基于序列的數(shù)據(jù)的用戶查詢;在所述查詢時間并且通過所述查詢重寫引擎,自動重寫所述用戶查詢以提供重寫的查詢,所述自動重寫包括應用包括在所述模板中的所述邏輯來補償所述一個或多個異常;以及在所述查詢時間,通過所述DBMS執(zhí)行所述重寫的查詢,其中,通過執(zhí)行所述重寫的查詢所提供的應答與在通過將所述清洗規(guī)則應用于所有的所述基于序列的數(shù)據(jù)而生成的數(shù)據(jù)集上執(zhí)行所述用戶查詢的結果一樣。在第二實施例中,本發(fā)明提供了一種通過相對于多個清洗規(guī)則重寫查詢而在查詢時間從基于序列的數(shù)據(jù)中清洗異常的計算機實現(xiàn)的方法,其包括將基于序列的數(shù)據(jù)加載到由計算系統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)所管理的數(shù)據(jù)庫中,所述基于序列的數(shù)據(jù)包括一個或多個異常;在所述計算系統(tǒng)的清洗規(guī)則引擎處接收多個清洗規(guī)則d,…,Cn;通過所述計算系統(tǒng)的查詢重寫引擎,接收檢索所述基于序列的數(shù)據(jù)的用戶查詢Q;通過所述查詢重寫引擎自動重寫所述用戶查詢以提供重寫的查詢;通過所述DBMS執(zhí)行所述重寫的查詢,所述執(zhí)行包括從所逸基于序列的數(shù)據(jù)生成清洗后的數(shù)據(jù),所述清洗后的數(shù)據(jù)不包括所述一個或多個異常,其中所述自動重寫包括對于所述多個清洗規(guī)則d,…,Cn中的每個清洗規(guī)則Ci,進行笫一循環(huán),其包括對于關系表R上包括在清洗規(guī)則Ci的模式中的一個或多個上下文參考(contextreference)中的每個上下文參考X,進行笫二循環(huán),其包括對一個或多個合取項(conjunct)的列表設置相關^Htcr,所迷一個或多個合取項包括以下中的至少一個包括在所述清洗規(guī)則Ci的條件中并且引用所述上下文參考X的一個或多個顯式合取項,以及一個或多個隱式合取項,每個隱式合取項處于所述關系表R的群集鍵(clusterkey)上或所述關系表R的序列鍵(sequencekey)上,其中所i^目關條件cr是所述上下文參考X與T之間的相關條件,所述T是包括在所述模式中的目標參考,如果所述上下文參考X是基于位置的上下文參考,那么在所述相關條件cr的所述一個或多個合取項中僅保留位置保存(position-preserving)的隱式合取項,將s綁定到所述目標參考T,其中所述s是所迷關系表R上的查詢條件并且包括在所述用戶查詢Q中,在所述相關條件cr與所述查詢條件s之間運行傳遞性(transitivity)分析,確定d,所述d是包括了所i^目關條件cr中僅引用上下文參考x的任何合取項的集合,以及如果集合d不為空,則將集合d添加到上下文條件CCi,否則將所述上下文條件CCi設置成空集,并且中斷所述第二循環(huán),其中所述上下文條件cCi為上下文參考X定義了上下文集合,以及如果所述上下文條件CCi是空集,則中斷所述第一循環(huán),并且進行join-back(連接-回退)算法以生成所述重寫的查詢;以及如果上下文Mcci都不是空集,則進行以下步驟將總的上下文條件CC計算為CC川CC2…llcCn,將擴展條件(expandedcondition)ec計算為s||cc,其中所述s是所述用戶查詢Q的查詢條件,將所述查詢條件s簡化成優(yōu)化的查詢條件s,,所述簡化包括將所述優(yōu)化的查詢條件s'設置等于s-cc,以及將擴展重寫查詢Qe計算為所述重寫的查詢,所述計算擴展重寫查詢Qe包括利用表達式(Ocn.CDd(C^(R))),其中①cn.,dKXR))中的每個。c,(、(R))是在數(shù)據(jù)集^(R)上應用所述清洗規(guī)則Ci的結果,其中所述數(shù)據(jù)集、(R)是直接將所述擴展條件ec推向所述關系表R以及清洗由所述擴展Mec所選擇的關系表R的數(shù)據(jù)的結果。文中還描述了并要求保護對應于以上概括的方法的系統(tǒng)。有利地,本發(fā)明利用重寫的查詢提供了一種延遲基于序列的數(shù)據(jù)清洗直到查詢時間的4支術。所述重寫的查詢對批ft(即,減少在查詢時間需要清洗的數(shù)據(jù)量)和保存序列約束的語義(即,生成與使用相同的規(guī)則在查詢時間之前清洗了數(shù)據(jù)會獲得的結果相同的查詢結果)是高效的。進一步地,文中所公開的清洗技術可以采用專用清洗規(guī)則并且允許用戶在任何時間改變清洗規(guī)則。更進一步,本發(fā)明避免了在應用查詢之前提取和清洗整個數(shù)據(jù)集,并且允許保存原始讀取的數(shù)據(jù)。圖1是依照本發(fā)明的實施例用于在查詢時間清先基于序列的數(shù)據(jù)的系統(tǒng)的才匡圖2是依照本發(fā)明的實施例在圖1的系統(tǒng)中于查詢時間清先基于序列的數(shù)據(jù)的過考呈的流禾呈圖3A-3B依照本發(fā)明的實施例描繪了在圖2的過程中所利用的清洗規(guī)則的兩個例子;圖3C-3D依照本發(fā)明的實施例描繪了利用擴展重寫方法重寫查詢的兩個例子,其中可以在圖2的過程中利用該擴展重寫方法;圖4A依照本發(fā)明的實施例描繪了為圖2的過程中的查詢生成擴展重寫的過程;圖4B依照本發(fā)明的實施例描繪了為圖2的過程中的連接查詢(joinquery)生成擴展重寫的過程,其中所有的連接是n:l;圖5依照本發(fā)明的實施例描繪了利用join-back方法重寫查詢的過程,可以在圖2的過程中利用該join-back方法;圖6依照本發(fā)明的實施例描繪了擴充到支持多個規(guī)則的圖4的擴展重寫過程;圖7依照本發(fā)明的實施例描繪了存儲有模擬的RFID數(shù)據(jù)的七個關系表的模式(schema)和關系,其中生成該模擬的RFID數(shù)據(jù)來分別測試圖l和圖2的系統(tǒng)和過程的效果;圖8依照本發(fā)明的實施例描繪了分別在圖1和圖2的系統(tǒng)和過程的效果測試中所使用的兩個代表性的基準查詢;圖9依照本發(fā)明的實施例描繪了通過變化選擇性對延遲清洗的測試的性能結果;圖10依照本發(fā)明的實施例描繪了通過變化選擇性對延遲清洗的極端測試的性能結果;圖11依照本發(fā)明的實施例描繪了就規(guī)則數(shù)和異常數(shù)而言對延遲清洗的可伸縮性(scalability)的測試的性能結果;以及圖12是依照本發(fā)明的實施例用于實現(xiàn)圖2、圖4、圖5和圖6的過程的計算系統(tǒng)。具體實施方式1.概述本發(fā)明提供了一種用于延遲對基于序列的數(shù)據(jù)(例如,RFID數(shù)據(jù))的清洗直到查詢時間的方法和系統(tǒng)。如文中所4吏用的,清洗(又稱作數(shù)據(jù)清洗或清潔)是對基于序列的數(shù)據(jù)中的一個或多個異常進行處理以產生更可靠的數(shù)據(jù)。如文中所使用的,將基于序列的數(shù)據(jù)定義為元組(tuple)(即,具有固定數(shù)目的屬性的行)集合的匯集,其中每個集合由一列元組按照每個元組中的一個或多個屬性所確定的順序組成。在文中所公開的延遲清洗方法中,每個應用通過定義用于清洗存儲在數(shù)據(jù)庫中的基于序列的數(shù)據(jù)的、聲明性(declarative)基于序列的規(guī)則(又稱作清洗規(guī)則)來指定其自己的異常。清洗規(guī)則并不直接改變數(shù)據(jù)庫的內容,而在應用發(fā)布查詢時被評估(evaluate)。本發(fā)明利用了在查詢時間自動重寫應用查詢的兩種新穎的方法。所^^開的這兩種重寫方法通過在應用查詢中利用謂詞(predicate)來降低將要清潔的數(shù)據(jù)量,而同時保證對查詢的正確應答。進一步地,本發(fā)明通過利用SQL/OLAP功能性來實現(xiàn)在聲明性基于序列的語言中所指定的清洗規(guī)則,提供了對清洗規(guī)則的高效評估。本發(fā)明的延遲清洗技術使得不同的應用采用不同的清洗規(guī)則變得可行,并且允許用戶在任何時間改變清洗規(guī)則。文中所公開的實驗結果表明,本發(fā)明的延遲清洗技術經得起在RFID數(shù)據(jù)上典型的分析查詢。在一個實施例中,所公開的延遲清洗方法對急切數(shù)據(jù)清洗方法進行了補充。仍然急切地處理在基于序列的數(shù)據(jù)中其檢測和校正對于該數(shù)據(jù)的所有使用者是共同的已知異常,但卻將其它異常的檢測和校正延遲到查詢時間。如下組織本申請的其余部分在第2和第3部分中描述延遲清洗系統(tǒng)和方法的高級概述。第4部分描述了用于在時序的筒單查詢語言(SimpleQueryLanguageforTimeSeries,SQL-TS)中指定清洗規(guī)則的本發(fā)明的方法,以及利用SQL/聯(lián)機分析處理(OnLineAnalyticalProcessing)(SQL/OLAP)來進行高效評估。第4部分還提供了在若干場景中用于檢測和校正錯誤的示例規(guī)則。第5部分給出了用于基于清洗規(guī)則重寫用戶查詢的機制,并且示出可如何優(yōu)化這些重寫。在第6部分給出了評估延遲清洗的好處的實驗結果。第7部分包括對實現(xiàn)延遲清洗過程的計算系統(tǒng)的描述。2.延遲清洗系統(tǒng)圖1是依照本發(fā)明的實施例用于在查詢時間清決基于序列的數(shù)據(jù)的系統(tǒng)100的框圖。系統(tǒng)IOO包括清洗規(guī)則引擎102、查詢重寫引擎104,以及數(shù)據(jù)庫管理系統(tǒng)(DBMS)106(又稱作數(shù)據(jù)庫或數(shù)據(jù)庫引擎)。舉例來說,在DBMS上以Java來實現(xiàn)清洗規(guī)則引擎102和查詢重寫引擎104。清洗規(guī)則引擎102和查詢重寫引擎104是可擴展的并且不歸任何DBMS供應商所有。用戶或應用生成的規(guī)則108由清洗規(guī)則引擎102接收并且將其轉換成具有規(guī)則模式、條件以及動作子句(actionclause)的模板。該模板存儲在駐留于數(shù)據(jù)庫106中的規(guī)則表110中,以便由查詢重寫引擎104用于重寫用戶SQL查詢112。駐留于數(shù)據(jù)庫106中的讀表(readtable)114(又稱作輸入表)包括通過執(zhí)行重寫的查詢將要清洗的基于序列的數(shù)據(jù)。讀表114是,例如,電子產品代碼(ElectronicProductCode,EPC)讀表,EPC是寸吏用RFID標記唯一標識各個物體的編碼方案。3.延遲清洗過程圖2是依照本發(fā)明的實施例在圖1的系統(tǒng)中于查詢時間清洗基于序列的數(shù)據(jù)的過程的流程圖。清洗基于序列的數(shù)據(jù)的過程在文中也稱為延遲清洗過程。延遲清洗過程開始于步驟200。在步驟202中,清洗規(guī)則引擎102(參見圖1)對于不同應用接收在擴展SQL-TS中所指定的一個或多個用戶或應用定義的清洗規(guī)則,并且為每個規(guī)則生成SQL/OLAP模板。也就是說,將每個清洗規(guī)則轉換成SQL/OLAP模板。SQL/OLAP模板封裝邏輯以檢測并補償基于序列的數(shù)據(jù)中的一個或多個異常,并且在查詢時間插入該SQL/OLAP模板。在步驟204中,將SQL/OLAP模板從清洗規(guī)則引擎102(參見圖1)發(fā)送至數(shù)據(jù)庫106(參見圖1),其中該模板留存于規(guī)則表110中。具體地,將包括在該模板中的規(guī)則模式、條件和動作子句存儲在規(guī)則表110(參見圖1)中以便由查詢重寫引擎104(參見圖1)使用。在步驟206中,查詢重寫引擎104(參見圖1)截獲用戶SQL查詢112(參見圖1),并且確定需要重寫查詢112(參見圖1)中的哪些來補償異常。如果需要,則在步驟208中,通過應用存儲在規(guī)則表110(參見圖1)中的一個或多個相關規(guī)貝'J,查詢重寫引擎104(參見圖1)將用戶查詢112(參見圖1)重寫成新的查詢(又稱作重寫的查詢)。在步驟210中,查詢重寫引擎104(參見圖1)向數(shù)據(jù)庫106(參見圖1)提交重寫的查詢,以便執(zhí)行其來清洗存儲在讀表(例如,圖1的EPC讀表114)中的基于序列的數(shù)據(jù)。執(zhí)行重寫的查詢的結果是清洗后的查詢結果。在步驟212中,數(shù)據(jù)庫106(參見圖1)將清洗后的查詢結果返回給用戶。延遲清洗過程結束于步驟214。在一個實施例中,在步驟208中進行下述算法之一(參見圖4A、圖4B、圖5和圖6)。這些算法包括(1)將基于序列的數(shù)據(jù)減少成該基于序列的數(shù)據(jù)的子集,其中將在對清洗后的數(shù)據(jù)的生成中使用該子集,并且然后(2)在清洗后的數(shù)據(jù)上執(zhí)行包括在原始用戶查詢中的邏輯,其中步驟(1)和(2)確保重寫的查詢執(zhí)行的結果(參見步驟210)與在通過將清洗規(guī)則應用于所有的基于序列的數(shù)據(jù)而生成的數(shù)據(jù)集上執(zhí)行原始用戶查詢112(參見圖1)的結果一樣。4.清洗規(guī)則在這部分的例子說明了如何使用聲明性清洗規(guī)則來檢測和校正RFID數(shù)據(jù)中的異常。這些例子假設所有RFID標記的讀均存儲在關系表R中,下面將關系表R的模式描繪為模式1。表R是EPC讀表114(參見圖1)的例子。模式l表R模式(用于RFID讀)RFID標記標識符rtimc,閱讀器讀取標記的時間reader,讀取標記的閱讀器的標識符biz一loc,讀取標記的業(yè)務位置biz—step,與讀關聯(lián)的業(yè)務步驟4.1清洗規(guī)則語言考慮本發(fā)明將RFID數(shù)據(jù)看作EPC序列的集合,其每一個由具有特定的RFID標記的所有讀按照順序組成。這樣的模型使得便于為RFID應用檢測各種類型的異常。利用SQL/OLAP功能(即,SQL99標準的一部分)來處理EPC序列。例如,為了檢測和過濾重復讀,使用下面的SQL語句withvlas(selectbiz_loeasloc—current,max(biz一loc)over(partitionbyepcorderbyrtimeascrowsbetween1precedingand1preceding)asloc一beforefromR)select*fromvlwhereloc一current!=loc—beforeorloc—beforeisnull;上述SQL語句的關鍵部分是利用SQL/OLAP來計算列l(wèi)oc—before.SQL/OLAP使用partitionby和orderby子句(clause)來將輸入定義為序列集合,并且對于每一行r,允許在相對于r的窗口(即,序列內的窗口)上定義標量聚合(scalaraggregate)。在該例中,將輸入定義為EPC序列,并且在按照序列順序在每行r之前具有單行的情況下通過rows子句來指定窗口??梢允褂脴肆烤酆蟻硖崛〈翱谥邢惹暗男械腷izjoc。然后將兩個連續(xù)讀的位置進行比較以移除重復。在where子句中的第二析取項(disjunct)處理序列中在其之前沒有行的邊^(qū)5Mt。利用SQL/OLAP進行序列處理有幾個優(yōu)點(l)其比使用自連接(selfjoins)或子查詢的SQL更高效(例如,可以通it按照分類順序在表R上實現(xiàn)一次通過(singlepass)來執(zhí)行上述SQL語句);(2)其集成于數(shù)據(jù)庫引擎內部并且因此自動受益于諸如最優(yōu)化和并行性之類的DBMS特征;(3)通過引領DBMS供應商iMt其進行標準化和支持。使用SQL/OLAP的主要缺點是其在語法上的冗余。例如,為了從先前的行中檢索列值,必須指定相對復雜的標量聚合。如果需要多列,則每一個均要求其自己的標量聚合說明。這樣的冗余使得用戶難以用SQL/OLAP直接表達清皿則。一個實施例通過利用對SQL-TS(自然序列語言)的語法的擴展克服了該缺點,其中該擴展促進對清洗規(guī)則進行定義。文中所描述的技術將SQL-TS規(guī)則謂詞與用戶查詢中所指定的謂詞進行比較,以便確定需要被清洗的數(shù)據(jù)。一旦在擴展SQL-TS中定義了規(guī)則,便在查詢時間使用在SQL/OLAP中自動生成的模板來高效執(zhí)行(即,對規(guī)則的高效評估)。笫4.2部分描述了基于SQL-TS的規(guī)則語言,并且示出了可如何將以這樣的語言表達的規(guī)則映射到SQL實現(xiàn)。第4.3部分中的幾個例子示范了可如何將擴展SQL-TS用于指定清洗規(guī)則。第4.4部分討論了規(guī)則排序的問題。4.2基于SQL-TS的清洗規(guī)則表1中示出了基于SQL-TS的規(guī)則語法并且描述如下。除了斜體條目之外,表l中的所有子句均借用于SQL-TS。表l:<table>tableseeoriginaldocumentpage26</column></row><table><table>tableseeoriginaldocumentpage27</column></row><table>表1中的CLUSTERBY和SEQUENCEBY子句類似于SQL/OLAP中的"partitionby"和"orderby"子句,并且其定義了如何將輸入數(shù)據(jù)轉換成序列集合。在一個實施例中,群集鍵是印c并且序列鍵是W/we。主要的簡化來自AS子句中的模式說明。模式定義了參考的有序列表。如果沒有用*符號指定參考,則參考引用輸入中的單行。具有*符號的參考可以僅出現(xiàn)在模式的開頭或結尾,并且引用被綁定到序列內的單元素參考(singletonreference)的行之前或之后的行的集合。在模式參考的列上指定WHERE子句中的條件。例如,可以用SQL-TS將重復檢測表示為AS(A,B)WHEREA,biz_loc!=B,biz—loc參考A和B各自引用單行,并且模式暗示這兩行在序列中是相鄰的。與SQL/OLAP相比,在SQL-TS中對兩個連續(xù)讀的說明更簡單并且更直觀。在具有*符號的集合參考(setreference)上的條件具有存在語義(existentialsemantics)(即,如果集合中的任何行4吏該條件為真,則該條件為真)。應當注意,上述語義與在原始SQL-TS中所使用的語義稍有不同。在第4.3部分中包括了具有以上所描述的語義的例子。本發(fā)明的規(guī)則語言以兩種方式擴展了SQL-TS。首先,添加ACTION子句,其指定當滿足WHERE子句中的條件時如何修正(fix)異常。在定義于模式中的單元素參考上指定動作。在一個實施例中,動作是DELETE(刪除)、MODIFY(修改)和KEEP(保留)中的任何一個。由于有時候指定讀進4亍移除而不是保留(反之亦然)對于用戶來說更直觀,因此使用DELETE和KEEP這二者提供了更大的靈活性。MODIFY改變行中的任何列的值。如果要修改的列不存在,則立即創(chuàng)建新的列。注意到,動作并不直接改變存儲在輸入表中的內容,但卻控制從該表中流出的內容。在一個實施例中,本發(fā)明特意從ACTION子句中除去INSERT,因為直接插入常常是沒用的。其次,本發(fā)明將在其上定義了規(guī)則的表(即,通過ON子句)與規(guī)則從其獲得輸入的表(即,通過FROM子句)分開。在文中其余的例子中,假設總是在讀表R上定義規(guī)則。然而,應用可以選擇使用包括表R中的數(shù)據(jù)以及一些額外的數(shù)據(jù)在內的輸入來參考或補償(例如,第4.3部分中的例5中對漏讀的處理)。以這種方式,本發(fā)明支持在ACTION子句沒有顯式插入的情況下的插入。要求輸入表具有包括R中的所有列的模式,并且可以視情況包括一個或多個額外的列。規(guī)則條件可以引用輸入表中的任何列??偸强梢詫⑶逑匆?guī)則轉換成SQL/OALP中的實現(xiàn)。對本領域的技術人員來說,clusterby和sequenceby子句的轉換將是顯而易見的。下面的討論集中在WHERE和ACTION子句的轉換上。如果規(guī)則條件引用兩個單元素(singleton),則可以在大小為一的窗口上用SQL/OALP將其中一個指定為多個標量聚合(即,每個所需的列有一個標量聚合)。根據(jù)這兩個單元素的相對序列位置來定義窗口。如果規(guī)則條件引用集合和單元素,則將窗口定義成包括該集合并且將規(guī)則條件轉換成窗口上的"case(情況)"表達式。標量聚合用于確定集合中是否有任何的行測試為真。在SQL中將DELETE和KEEP動作實現(xiàn)為過濾條件。將規(guī)則條件直接用作對KEEP的過濾,并且在對空語義正確處理的情況下該規(guī)則條件對于DELETE是取反的。最后,可以通過另一"case"表達式來處理MODIFY,如第4.3部分中所示。4.3清洗規(guī)則例子在這部分中的例子說明了如何使用擴展SQL-TS來定義清洗規(guī)則。僅僅對每個規(guī)則示出了模式、條件和動作說明。除非另有說明,規(guī)則總是ontableR(在表R上)、fromtableR(來自表R)、clusterdbyepc(通過epc群集),以及sequencedbyrtime(通過rtime定序)。在這些例子中,手動指定規(guī)則并且在一些情況下,突出了規(guī)則的部分SQL/OLAP實現(xiàn)。4.3.1例1(重復規(guī)則)盡管可以在邊緣處修正大部分重復,然而它們中的少數(shù)由于諸如邊緣服務器重啟之類的原因而幸存。在下面所示出的規(guī)則l中,將重復移除限于似目隔tl分鐘的讀,其中可以為不同的應用定制tl。在一個實施例中,選擇保留重復當中最初的讀(thefirstread)。規(guī)則1:<table>tableseeoriginaldocumentpage29</column></row><table>SQL/OLAP實現(xiàn)類似于第4.1部分中所示出的實現(xiàn)。4.3.2例2(閱讀器規(guī)則)考慮這樣的場景,即在該場景中,裝備有RFID閱讀器(文中稱為閱讀器X)的叉車(forklift)將所標記的箱體(case)送到倉庫中的目的地。在到達目的地時,閱讀器X讀取該箱體上的EPC以及在目的地預先安裝的位置標記,并且生成新的讀。在傳輸期間,其它閱讀器(例如,對接門(dockingdoor)上的閱讀器)可能意外讀取了叉車上的箱體。如果發(fā)現(xiàn)這樣的傳輸花費達t2分鐘,那么如下定義規(guī)則2,以便移除閱讀器X的讀之前t2分鐘記錄的所有的讀。應當注意,4旨示B為集合參考。規(guī)則2:<table>tableseeoriginaldocumentpage29</column></row><table>可以通過定義標量聚合"has—readerX—after"以SQL/OLAP實現(xiàn)閱讀器規(guī)則。max(casewhenreader='readerX,then1else0end)over(rangebetween1macrosecfollowingandt2minfollowing)ashas一readerX一after注意到,通過利用序列鍵rtime上的約束來構造窗口,以便包括B所引用的行。然后過濾掉其has—readerXafter被設置成1的行。4.3.3例3(替換規(guī)則)假設在兩個位置"loci"和"Ioc2"處的閱讀器彼此靠近并且可以導致交叉讀。進一步地,假設由于業(yè)務流,在"locl"處正被讀取的裝運(shipment)總是在t3分鐘內接著在另一位置"locA"被讀取。規(guī)則3然后用于檢測異常并且修改其位置。規(guī)則3:模式糾動作(A,B)A.biz_loc='loc2,andB.biz_loc='locA'andB.rtime-A.rtime<t3minsMODIFYA.biz—loc='locl,MODIFY動作的SQL實現(xiàn)是這樣的"case"表達式,即其取決于對條件的測試,要么保持biz一loc原來的樣子要么將其變成"locl"。4.3.4例4(循環(huán)規(guī)則)假設應用并不想看到在位置集合之間來回的讀。因此,應當將對于EPC的諸如[XYXYXY的位置模式變成[XY,僅保留最初的X和最后的Y。該改變可以通過以下在規(guī)則4中所示出的循環(huán)規(guī)則來實現(xiàn)。可以生成另外的、更多有關的規(guī)則,其移除任意長度的循環(huán)。規(guī)貝'J4:模式糾動作(A,B,C)A.biz一loc=C.biz—locandA.biz—loc!=B.biz_locDELETEB4.3.5例5(遺漏規(guī)則)在該例中,已知托盤(pallet)及其中的箱體一起沿特定的業(yè)務路徑行進。托盤標記總是可讀的,但是由于標記的方向以及內容,并不總是在每個位置處讀取箱體。假設在位置LI處,讀取托盤P,但是并未讀取P中的箱體C。有把握確定如果一段時間之后C實際上漏讀了(而不是被偷了),則在某個位置L2處再次一起讀取C和P。在那種情況下,為了補償在Ll處對C的漏讀,將在Ll處的托盤讀(palletread)轉換成箱體讀(caseread)(例如,用C的印c替換P的epc)。下面,在兩個子規(guī)則rl和r2中指定遺漏規(guī)則。將rl和r2均定義在表R上,在該例中表R僅含有箱體讀。對rl的輸入(即,在FROM子句中)不是R,而是具有與模式1相同的模式的導出表,且具有額外的列"is一pallet"。關于如何導出該輸入的細節(jié)包括在第6部分中。對于該例來說,假設導出表是R與另一集合R'的合并。對于含有n個箱體的托盤P來說,在R'中P的每個讀存在n個副本,并且每個副本的epc被設置成每個箱體印c。雖然R具有對箱體的"實際"讀,但是R'含有"所期望"的基于更可靠的托盤讀的箱體讀。R和R'中的每一行分別將is—pallet設置成O和1。規(guī)則rl使用A來參考托盤讀,并且然后檢查A在相同的位置是否具有鄰近的箱體讀。如果有的話,則設置標志"has—case_nearby",其指示在該位置沒有漏讀。將rl的輸出管道輸送(pipeline)至規(guī)則r2。規(guī)則r2保留所有的原始箱體讀,加上沒有鄰近的箱體讀的托盤讀(只要稍后隨托盤一起讀W目同的箱體)。注意到,保存的托盤讀補償了遺漏的箱體讀。規(guī)則rl和r2:<table>tableseeoriginaldocumentpage31</column></row><table>(A,*B)A.is_pallet=0orKEEPA(A.has—case—nearby=0andB.has—case—nearby=l)為了用SQL表達rl,可以在包括行r、r之前的行和之后的行的窗口上通過單個標量聚合來計算has—case—nearby,因為X和Y上的M是相同的。利用類似于例2中所示出的方法,可以用SQL實現(xiàn)規(guī)則r2。SQL/OLAP在表達條件上比SQL-TS更豐富。例如,為了控制應當在采取動作之前觀察的閱讀器X的讀的數(shù)目,將例2中用于計算"has—readerX_after"的標量聚合從max()變成count()。4.4規(guī)則排序當應用在相同的表上定義了多個規(guī)則的時候,這多個規(guī)則的輸入表必須相同。通常,在規(guī)則之間存在依賴性并且其排序很重要??紤]由[XYX]給出的標記讀(tagreads)的序列的位置。首先應用循環(huán)規(guī)則,1^是在rtime上無約束的情況下的重復規(guī)則,清洗后的序列變成X(即,最初的X)。如果交換這兩個規(guī)則,則結果變成[XX]。在本發(fā)明中,規(guī)則通過其創(chuàng)建時間來排序并且以該順序應用規(guī)則。5.使用清洗規(guī)則重寫查詢給定用戶查詢Q以及在R上定義的清洗規(guī)則C,將相對于C對Q的正確應答表示為Q[C]。如文中所使用的,將(Dc(d)定義為在包括了R的模式(參見上述4莫式1)中的所有列的數(shù)據(jù)集d上應用規(guī)則C的結果。通過定義,可以通過用(Dc(R)替換Q中對R的所有參考來計算Q[C。這樣的計算要求清洗R中所有的數(shù)據(jù)并且因而是禁止的。這部分描述了可如何通過更有效的查詢重寫來進行延遲清洗。第5.1部分示出了為何將Q中的謂詞直接推向R并不總是產生正確的應答,并且說明了保存查詢語義的兩種高效的查詢重寫方法。在存在單個清洗規(guī)則的情況下,第5.2和5.3部分中描述了生成這兩種類型的重寫的^t術。在第5.4部分中,將重寫方法擴展成支持多個規(guī)則。在第5部分中,對C的輸入也是表R,但卻可以利用對C的其它輸入來實現(xiàn)所公開的重寫技術。5.1重寫查詢的動機為了降低將要清洗的數(shù)據(jù)量,首先試探將Q中的謂詞直接推向R,并且然后應用規(guī)則C,接著評估其余的Q。不幸的是,該方案并不總是返回對Q[CI的正確應答??紤]查詢Ql和表Rl上所定義的圖3A中的清洗規(guī)則Cl300,如圖3A所示。將清洗規(guī)則Cl定義為第4.3部分中的閱讀器規(guī)則。rid字段用于標識表中的行。在R1上應用Cl會移除行rl,因為在隨后的5分鐘內存在閱讀器X的讀。剩余的行r2并不滿足Ql中的條件并且對QC1的正確應答是{}。如果首先將Q1的條件"rtime<tl"推向Rl,則僅僅行rl符合條件。這次在{1*1}上應用Cl并不移除rl,因為r2不再存在。因而獲得了不正確的應答《rl〉。作為另一例子,考慮另一查詢Q2和表R2上所定義的圖3B中的清洗規(guī)則C2320,如圖3B所示。注意到,C2是通過省略時間約束而獲得的第4.3部分中的重復規(guī)則的修改版本。在R2上應用C2產生^3},因為r4是重復的。由于r3具有不大于t2的rtime,因此對QC2的正確應答還是{}。然而,如果在清洗之前首先在R2上應用Q2中的條件,則僅僅選擇r4。在(r4)上應用C2并不移除r4,因為其是該集合中僅有的元素。再次,獲得了不正確的應答(r4)。仍舊可以更有效地對Q1[C11和Q2[C2]這二者進行應答。例如,可以使用表達式el巧幽^((Dd(c7咖^+5(Rl)))來計算Ql[C1]。從C1的絲顯而易見的是,為了刪除Rl中的讀r,需要對r跟蹤5分鐘或少于5分鐘的閱讀器X的另一讀取。通過稍微放寬Q1中的原始條件,el獲得足夠的數(shù)據(jù)來移除與Ql相關的所有的讀。然后在這一稍大的數(shù)據(jù)集上應用清洗。最后,el再次應用原始條件來移除僅是清洗所需要的額外數(shù)據(jù)。類似的方法不能夠直接用于QC2,因為在C2中,由于已經從原始重復規(guī)則移除了時間約束,兩個重復讀可以間隔任意長的時間。但是,可選地可以通過e2^"w(Oc2(R2e^nepe(a"〉t2(R2))))來應答QC2,其中Ape表示兩個表之間的印C上的自然連接,并且ITepe將輸入投影到叩C上并且移除重復。觀察到C2僅從輸入序列移除行。因此,僅需要清洗包括了滿足Q2中的條件的至少一個讀的序列。其余的序列并不相關,因為即使清洗了它們,Q2也無論如何都不會選擇任何的讀。對僅有的相關序列的準確清洗正是e2所^故的。首先,e2標識必須清洗的序列,并且然后e2再次訪問R2以提取那些所標識的序列上的所有數(shù)據(jù)。清洗這樣的數(shù)據(jù)集保證移除所有的相關異常。類似于el,e2最后再次應用原始條件以〗更在清洗之后濾掉不再需要的數(shù)據(jù)。如將在第6部分中所示出的,因為在典型的RFID查詢中的M趨于與序列鍵相關,所以使用該方法可以有效地限制相關序列集合。如本領域的技術人員可以易于發(fā)江的,el和e2分別產生對Q1[C1和QC2的正確應答。由于多種原因,常規(guī)的查詢優(yōu)化器難以自動生成諸如el和e2的重寫。首先,SQL/OLAP雖然提供了比自連接更有效的方式來將來自相同表的不同行聚集到一起,但卻將原始行身份隱藏在標量聚合以及布爾表達式內,如以上在第4.3部分中所示出的。SQL/OLAP的這一方面4吏得優(yōu)化器難以進行有效的傳遞性分析。其次,清洗規(guī)則可能具有多個等效的SQL/OLAP實現(xiàn)。優(yōu)化器難以識別源自相同規(guī)則邏輯的這樣的不同查詢表示以及繼而應用相同的重寫。本發(fā)明包括數(shù)據(jù)庫引擎106外部的查詢重寫單元,而不是增強的常規(guī)優(yōu)化器,其中該查詢重寫單元取得清洗規(guī)則集合以及用戶查詢,并且生成重寫的查詢,該重寫的查詢提供相對于那些清洗規(guī)則的正確應答。因為查詢重寫單元處于規(guī)則級,所以其比DBMS優(yōu)化器更有效地變換查詢。接下來的兩部分描述了兩種風格的查詢重寫擴展(例如,el)以及join-back(例如,e2)。5.2擴展重寫這部分描述了擴展查詢重寫(expandedqueryrewrite)方法。在這部分中,假i殳在表R上僅定義了單個清洗規(guī)則C。在第5.4部分中描述了對多個清洗規(guī)則的支持。定義l,清洗規(guī)則C中的模式指定了兩種類型的數(shù)據(jù)參考目標參考(reference)和上下文參考(co"to^reference)。前者是在C的動作部分中使用的參考,并且清洗規(guī)則僅具有一個目標參考。該模式中其余的參考是上下文參考。例如,在圖3A中,參考A是目標參考并且B(加了下劃線)是上下文參考。作為另一例子,在圖3B中,參考F是目標參考而參考E(加了下劃線)是上下文參考。目標參考T和上下文參考X均引用表R中的行集合,但它們卻不是獨立的。鏈接T和X的條件是相關條件(cwre/W/朋(wk/加Vw)。在規(guī)則條件中明確給出了一些相關條件并且在規(guī)則模式說明中暗示了其它條件??紤]由(R)給出的用戶查詢Q。因為需要清洗的僅有的數(shù)據(jù)是與該查詢相關的數(shù)據(jù),所以Q將T綁定到行集合R,(R)。通it^目關條件cr,又將上下文參考X綁定到^皮稱為上下文集合(c朋toc"W)的另一行集合Rx。RT和Rx可以重疊。Rx是為了確定是否在RT中的一行或多行上采取任何動作所要求的行的集合。從R(不僅查詢數(shù)據(jù)RT,還有上下文集合Rx)中選擇鍵(key),以便可以進行所有必要的清洗。在前面的部分中所描述的直接下推(pushdown)方法失效,因為其忽略了僅在上下文集合中出現(xiàn)的數(shù)據(jù)。通過將查詢條件s綁定到目標參考T并且在T與X之間的相關條件和s上運行傳遞性分析,導出僅參考上下文參考X的新的條件。該新的IHt為X定義了上下文集合并且其在文中被稱為上下文條件(c柳teWcwi^/ow)。該上下文條件與s—起用于限制為了清洗而從R提取的數(shù)據(jù)量。在T與X之間的相關條件包括規(guī)則條件中引用T和X這二者的所有合取項,以及在規(guī)則模式中所暗示的合取項。存在兩種類型的隱式合取項,一種在群集鍵上并且另一種在序列鍵Aej;上。在規(guī)則定義中給出了和sA:e,二者,并且在一個實施例中,將cA:^和A矽分別綁定到列epc和rtime。如果X和T均引用由dfcey所定義的相同序列內的行,那么指示合取項X.d^p=T.cA^。如果在模式中X列于T之前,則指示另一合取項X.W^<Ty;^);。進一步地,如果在模式中X列于T之后,那么指示又一合取項X.s^y>T.^^);。添加兩種類型的隱式合取項用于傳遞性分析使得能夠導出更強的上下文*。對于在規(guī)則模式中沒有*的上下文參考(其在文中被稱為基于位置的上下文參考)來說,在序列位置(sp仍)上存在第三隱式相關合取項。例如,根據(jù)圖3B中規(guī)則C2中的模式,合取項E.s/;<w=F.s/w-l被暗示并且其強于E.sA^>Ky/^v.這樣的合取項并不存在于圖3A中的規(guī)則Cl中的目標參考A與具有A的上下文參考B之間,因為B對A的準確相對位置是不重要的。處理s/仍上的隱式合取項是難解的。主要的困難來自于這樣的事實,即通常并不在輸入數(shù)據(jù)中具體化序列位置,而是立即計算序列位置。因而,當確定上下文條件時,并不關注改變所選擇的行的相對位置。定義2.考慮目標參考T與上下文參考X之間的相關條件cr。如果對于T所引用的任何給定行r,相關條件cr均是位置保存的(/7仍故Vm-/7myerW"g),則對于r的上下文集合V(通過cr計算的)具有以下特性對于V中的每一行v,原始序列中在v與r之間的所有行也屬于V。注意到,在來自含有V和W這二者的R的任何數(shù)據(jù)集內,V中的任^f可行的序列位置相對于r均與在R中的位置相同。觀察(a)在目標參考T與上下文參考X之間的以下相關條件是位置#^的(1)X,c^""T.c^^;(2)X.s&ejKT.sA;^以及X.sA;ej^T.s/^);畫t,如果在C的模式中X在T之前;X.We>;>T.sA:£>j;以及X.sA^<T.W^+t,如果在C的模式中X在T之后,其中t是正的常數(shù)。(b)除了和sA:^之外的列上的任何相關條件均不是位置保存的。觀察(a)是從定義2得出的。觀察(b)的原因在于對于任何這樣的相關條件cr,總有可能通過使得在cr中所使用的列獨立于序列鍵來構造計數(shù)器例子。因此,對于基于位置的上下文參考來說,并不是所有的合取項都包括在相關條件中用于傳遞性分析。相反,只保留那些位置保存的。圖4A包括用于為圖2的過程中的查詢生成擴展重寫的過程400(即,算法)。關于為QC]生成擴展重寫的算法400被描述如下圖4A中從第2行到第10行是經過包括在清洗規(guī)則C的模式中的每個上下文參考X的循環(huán)迭代。取決于X是否是基于位置的(參見圖4A的第4-5行),將X與目標參考T之間的相關條件相應地準備為合取項的列表。將查詢條件s綁定到T,其中s是用戶查詢Q中在關系表R上的查詢^Hf。然后在相關Mcr與查詢條件s之間應用傳遞性分析(參見圖4A的第6行)。如果僅參考X可以導出任何合取項,則將該合取項添加到上下文條件cc(參見圖4A的第7-8行)。如果存在多個上下文參考,則將上下文條件一起取或(or-ed)來選擇組合的上下文集合。如果不能夠導出任何的上下文條件,則將其設置為空并且中斷"for"循環(huán)(參見圖4A的第9行)。圖4A中從第11行到第13行,如果上下文條件不為空,則生成擴展重寫Qe。首先,擴展條件ec被計算為s||cc(參見圖4A的第12行),并且其變成可以被直接推向R的謂詞。當在ec所選擇的數(shù)據(jù)集上進行清洗之后,再次應用s來移除上下文集合中不再需要的行。通過避免在上下文條件中已經涵蓋的s中再次應用合取項,使用最優(yōu)化將s簡化成s'(參見圖4A的第12行)。最后,通狄達式c^(0。(cTjR)))提供Qe(參見圖4A的笫12行)。定理1.由圖4A中的算法400所計算的Qe提供了對QIC]的正確應答。證明對于ec沒有選擇的每一行r來說,r并不是Q直接需要的或者為了清洗Q感興趣的任何行而間接需要的。因此,不選擇r并不改變查詢i吾義。圖3C和3D中的運行例子說明了圖4A的算法400。圖3C中所示出的第一運行例子340是基于規(guī)則Cl和查詢Ql的。因為上下文參考B不是基于位置的,所以可以使用將B與目標參考A相關的所有四個合取項(在圖3C中列為crl),包括隱式合取項在內,來導出上下文M。在圖3C中,查詢Ql中所指定的條件由sl給出,現(xiàn)在僅被綁定到A。通過計算sl和crl上的傳遞性,圖3C中的上下文條件ccl包括新近導出的合取項B,rtime〈tl+5min以及直接來自crl的另外一個。圖3C中的擴展務降由ecl給出,其可以被放寬到rtime〈tl+5min(參見第5.1部分中的el),如果第二合取項不是那么地選擇性的話。圖3D中的第二運行例子360是基于規(guī)則C2和查詢Q2的。由于C2具有基于位置的上下文參考E,因此僅可以將兩個位置保存的合取項用作相關條件(在圖3D中列為cr2)。然而,通過cr2與s2之間的傳遞性分析,在E上并不能導出任何合取項。因此,擴展重寫對Q2不可行。第5.3部分討論了如何使用join-back重寫處理Q2。連接查詢支持(JoinQuerySupport):當Q含有cjs(R)到其它表的連接時,一般而言,首先為s(R)生成Qe并且然后將Qe與其余的表格相連接。然而,對于特定類別的查詢,有可能在清洗之前進行連接。圖4B描繪了為連接查詢生成擴展重寫的算法450,其中所有的連接是ii到1。算法450的輸入包括具有ReK1Ae...oKnc^D。形式的查詢Q,其中表R連接列Ki上的每個表Di,并且所有的連接都是n到l。由于讀表通常僅與其它的參考表連接,因此該類型的查詢是常見的。每個連接條件均可以被轉換成合取項R.Kjin(selectKtfromDiwhereSj),以《更其看起來《象R上的局部條件(參見圖4B的第5行)。然后按照前面那樣應用圖4A中的算法400(參見圖4B的第6行)。在傳遞性分析之后,在上下文參考上導出那些"in"合取項中的一些,并且將其添加到上下文條件。那些合取項纟皮稱為表D'i上的Pi,i從l到iiK-n。由于每個Pi均可以被轉換回連接條件,因此這意味著可以將每個表D'i在清洗被應用之前連接到R。如果在上下文參考上導出了所有的"in"合取項,那么使用圖4A中的算法400生成新的SQL語句,并且將"in"謂詞轉換回連接(參見圖4B的第7行)。雖然在較昂貴的清洗步驟之前推進局部謂詞總是有利的,但M否在清洗之前應用連接取決于諸如其相對成本和選擇性之類的因素。存在2m種可能的方式在清洗之前推進m個D'i表,并且嘗試所有這些方式太過昂貴。相反,采用啟發(fā)式方法來支持具有更多限制性局部謂詞的表。具體地,通過S'i的選擇性來升序排列D'i(參見圖4B的第1行)。在DBMS中對其進行編譯之后,可以從原始查詢Q的執(zhí)行計劃中獲得每個S'i的選擇性。然后,如下生成m+l條SQL語句(參見圖4B的第2-4行)第一條SQL語句在清洗之后延遲所有連接。接下來的m條SQL語句中的每一條在清洗之前按照選擇性順序再多推進一個表DV然后通過DBMS優(yōu)化器來編譯所生成的達m+l條的SQL語句,并且選擇具有最低成本估計的SQL語句作為擴展重寫(參見圖4B的第8行)。如文中所使用的,語句、謂詞、查詢或算法的成本或成本估計涉及執(zhí)行該語句、謂詞、查詢或算法所需要的計算資源(例如,存儲器、循環(huán)、I/O)的數(shù)量.5.3Join-back重寫依照本發(fā)明實施例,圖5描繪了利用join-back重寫方法重寫查詢的過程(即,算法)500,可以在圖2的過程中對其加以利用。當上下文條件為空時,由于在清洗之前沒有條件可以被推進,因此擴展重寫不可行。不同于擴展重寫,圖5的join-back重寫方法總是可適用的。在join-back重寫方法中,及早移除了不相關的序列,從而使得僅在較少數(shù)目的序列上需要應用清洗。再次,考慮查詢Q-(R)。表達式nekey(c^(R))定義了在R中Q感興趣的所有序列,這是因為規(guī)則C僅是從R中刪除行或在R中修改行(但卻不插入行到H中)?;氐奖鞷并且讀取屬于那些已定義的序列的所有的行,這將提供足夠的數(shù)據(jù)來進行正確的清洗。通過Qj巧s(cDc(Re—rUyK(R))))給出對Q[C的join-back重寫。在第5.1部分中為了應答Q2[C2而對表達式e2的推導使用了join-back重寫方法。即使在擴展重寫方法是可適用的時候,join-back方法也可能是更高效的。折衷在于擴展重寫方法在開始比join-back方法從R選擇更多的行(由于ec通常比s限制性小),但之后就不需要再次連接R。此外,擴展重寫可以利用由圖4A的算法400所生成的擴展條件。給定R中的序列,擴展條件選擇其中需要用于查詢以及清洗的所有的行。因而,在join-back期間,僅要求恢復符合擴展條件的行。改進的join-back重寫由Qj巧s氛KXR)eekeyFU"(R))))給出。作為例子,在第5.1部分中的Q1[C1]還可以由join-back重寫來應答i福,(①de福(Ri)n印c(cTw則)))還可以擴展join-back重寫來支持連接查詢??紤]C^R^c,Ae…0^C^Dn形式下的連接查詢Q,其中JCi指示多個連接條件.使用rU(crsRdsiDi),通妙每個Dj與R之間進行半連接(semi-join)來限制相關序列集合。再次,關于在清洗之前應用多少半連接存在著折衷。推進更多的半連接降低了將要清洗的數(shù)據(jù)量,但卻增加了連接開銷。遵循在第5.2部分中所使用的啟發(fā)方式,按照Si的升序選擇性對Di進行排序(參見圖5中的第K亍)。然后生成n+l個SQL查詢,在清洗之前按照該順序推進從0到n個的半連接(參見圖5中的第2-5行)。挑選具有由DBMS估計的最廉價成本的查詢作為join-back重寫(參見圖5中的笫6行)。最后,將擴展重寫與join-back重寫進行比較,并且選擇具有較低成本估計的重寫來執(zhí)行。5,4支持多個規(guī)則依照本發(fā)明的實施例,圖6描繪了擴充圖4A的擴展重寫過程以便支持多個規(guī)則的算法600。算法600是相對于多個清洗規(guī)則d到Cn的列表用于重寫查詢的過程。算法600假設由應用所創(chuàng)建的所有規(guī)則均共享相同的ckey和skey。由于規(guī)則之間的依賴性,按照規(guī)則的創(chuàng)建時間的順序來評估規(guī)則(例如,從Q到CJ。首先,通過以下過程生成對(R)所給出的查詢Q的擴展重寫。對于每個規(guī)則Ci來說,使用圖4A的算法400的第1到10行來計算上下文Mcci(參見圖6的第1-2行)。如果任何cci為空(參見圖6的第3行),則不存在可行的擴展重寫,并且依賴join-back方法。否則,將總的上下文MCC計算為CC』CC2…UcCn,其為所有的規(guī)則選擇了足夠的上下文數(shù)據(jù)'通過遵循圖4A的算法400中的第11到13行,相應地確定擴展條件ec和條件s'。然后通過表達式A,(av..(Pc,(cTjR)))給出擴展重寫(參見圖6的笫4行)。可以以類似于第5.2部分中的描述來處理連接查詢。擴充join-back重寫以支持多個規(guī)則是簡單的,因為對非相關序列的消除與清洗規(guī)則無關。因此,在提取了相關序列中的所有數(shù)據(jù)之后,便按照該順序應用清洗規(guī)則d到Cn。兩種重寫均提供了對Q[d...Cn]的正確應答,因為按照正確的順序應用了所有的規(guī)則。關于是否可以在不改變查詢語義的情況下交換那些規(guī)則的評估順序,注意到,交換規(guī)則順序對獲得更好的性能而言并不十分關鍵。我們可以將每個規(guī)則Ci視為表R上的昂貴謂詞。那些謂詞具有這樣的特性,即因為異常數(shù)通常是小的,其選擇性全部都高,并且因為產生序列順序的分類成本可能是占優(yōu)勢的,其成本是可比擬的。由于用于評估一組昂貴謂詞的最優(yōu)順序主要取決于其選擇性以及相對成本,因此不同順序之間的性能差別有可能是小的。6.實驗這部分給出了對延遲清洗方法的有效性進行驗證的實驗結果。實驗的目的是測試延遲清洗方法在三個方面的可伸縮性(1)將要查詢的數(shù)據(jù)量;(2)將要應用的規(guī)則數(shù),以及(3)異常數(shù)。6.1實驗系統(tǒng)設計因為不存在用于測試RFID應用的現(xiàn)有基準,所以用Java構建RFID數(shù)據(jù)發(fā)生器(又稱作RFIDGen)用于這些實驗。RFIDGen模擬零售商W的典型供應鏈,其保存最后五年內的RFID數(shù)據(jù)以及相關的參考數(shù)據(jù)。所有信息均存儲在七個關系表中,并且在圖7中概括了七個關系表的模式和關系。圖7中每個關系表的主鍵均^口了下劃線,并且箭頭表示外鍵參考(foreignkeyreference)。圓括號內的數(shù)字指示每個表中的行數(shù)。稍后在這部分中描述標度因子(scalefactor)s。最初,模擬生成正常的(又稱作規(guī)則的)RFID數(shù)據(jù)(即,沒有異常)。為了正常的RFID數(shù)據(jù)的該生成,假設W所出售的所有貨物必須經過三級配送配送中心(distributioncenter,DC)、倉庫以及零售商店。存在1000個零售商店,其每一個均從25個倉庫之一接收貨物,并且每個倉庫又從5個DC之一接收裝運。每個地點(site)(即,DC、倉庫或商店)具有IOO個不同的位置,每個均配備有RFID閱讀器。"位置"表存儲所有的13,000個不同的位置,每個位置由13字符的全球位置碼(GlobalLocationNumber)標識。在裝運必須經過的3個地點中的每一個處,每個裝運在隨機選擇的閱讀器處被讀取10次,并且生成總共30個RFID讀。在5年窗口(5-yearwindow)內隨機選取EPC的最初的讀,并且在1到36小時之間隨機選擇裝運的兩個連續(xù)讀之間的延遲。每個裝運由50字節(jié)的varchar所表示的96比特的EPC來唯一標識。裝運可以具有兩種類型箱體和托盤。為了在變量中以貨物大小進行因子化,隨機選取20到80之間的數(shù)作為含于特定托盤中的箱體數(shù)。為了簡化起見,箱體讀和托盤讀存儲在兩個單獨的表中,分別為"caseR"和"palletR",并且箱體EPC和托盤EPC之間的關聯(lián)存儲在第三"parent(父)"表中。假設對于該實驗來說,既不重用(reuse)箱體EPC也不重用托盤EPC并且關聯(lián)條目總是有效的。盡管圖7中并未完全示出,然而palletR的模式與caseR的一樣。托盤及其關聯(lián)的箱體總是一起行進并且彼此在10分鐘之內由相同的閱讀器讀取。每個箱體EPC生成"EPC—info"表中的條目,該表中存儲了諸如批號、制造日期以及截止日期之類的項目具體信息。關于產品的細節(jié)存儲在"product(產品)"表中,該表由EPC—info表參考。生成總共1000個不同的產品并且將其隨機分派給50個制造商。還向每個RFID讀分派了從存儲在"steps(步驟)"表中的總共100個不同的步驟隨機選擇的業(yè)務步驟。將所有的步驟均勻分類成10個不同的類型。將托盤EPC的數(shù)目"s"定義為標度因子。對于給定的s,存在大約sA50個箱體EPC。因此,palletR、caseR、parent和EPC_info分別^^有s*30、s"0頭30(即,s*1.5k)、s*50和s*50行。在生成正常的RFID數(shù)據(jù)之后,然后將異常添加到規(guī)則數(shù)據(jù)之上。因為讀取托盤比讀取箱體更可靠,所以僅對箱體讀引入異常。通過顛倒清洗規(guī)則的動作,添加了第4部分中所描述的五種類型的異常。例如,如果規(guī)則的動作從序列中刪除了讀,則添加了符合規(guī)則的條件的錯讀(flaseread)。給定異常百分比D,異常均勻分布在五種不同的類型之中。在圖8中,描繪了在實驗中所使用的兩個代表性基準查詢以及SQL語句。圖8中的第一查詢ql進行典型的"dwell(駐留)"分析,其計算裝運在兩個連續(xù)位置之間花費的平均時間。查詢ql的分析利用SQL/OLAP功能來將每個EPC的兩個相鄰讀的信息帶到相同的行。圖8中的第二查詢q2類似典型的分析查詢(即,地點分析查詢)。在q2中,將表caseR視為事實表(facttable),其與多維表(multipledimensionaltable)連接以產生參考數(shù)據(jù)。具體地,地點分析報告了在特定的配送中心處的每個制造商所涉及的業(yè)務步驟和閱讀器利用。稍后在這部分解釋了對兩個時間戳Tl和T2的選取。實驗中使用在第4部分中定義的五個清洗規(guī)則,且tl、t2和t3被分別設置成5、10和20分鐘。以下給出的表2概括了相對于每個規(guī)則由圖4A的算法為ql和q2這二者計算的擴展條件。注意到,循環(huán)規(guī)則具有兩個上下文參考,一個在目標之前并且一個在目標之后。由于兩個循環(huán)規(guī)則上下文均沒有通過時間來綁定,因此對于ql和q2不存在擴展條件。進一步地,遺漏規(guī)則具有在目標之后的未綁定的上下文參考,并且僅是ql不具有擴展條件。表2<table>tableseeoriginaldocumentpage43</column></row><table>對于性能評估,在運行AIX的現(xiàn)代服務器類型機器上使用DB2V8.2。選取生成大約1千萬個正常的箱體讀(即,大約1GB)的標度因子s。然后將稱為db-lO、db-20、db-30和db-40的四個不同的凝:據(jù)庫加載到DB2中,并且這四個數(shù)據(jù)庫分別對應于異常百分比10、20、30和40。按照與時間部分相關(partiallycorrelated)的順序加載數(shù)據(jù)。對于每個數(shù)據(jù)庫來說,除了閱讀器列之外,對caseR和palletR(參見圖7)這二者中所有的列進行索引。在child-epc上索引parent表(參見圖7)以提供快速箱體到托盤(case-to-pallet)的查找。除了還在site上索引Iocs表以及還在tpye上索引steps表之外,圖7的其余的表僅在其主鍵上有索引。每個數(shù)據(jù)庫均使用160MB的緩沖池。對于每個測試,在以下情況的經過時間(elapsedtime)之間進行比較直接在臟數(shù)據(jù)(dirtydata)上運行基準查詢q(下文稱為q)、擴展重寫(下文稱為q_e)、join-back重寫(下文稱為qj),以及首先清洗所有數(shù)據(jù)并且然后評估q的初級方法(naiveapproach)(下文稱為q_n)。進行延遲清洗的初級方法是在執(zhí)行查詢之前立即清洗所有的數(shù)據(jù)。注意到,不同于其它三個,q并不總^1提供正確的結果,并且僅僅用于基線比較。實驗并未明確地將急切清洗與延遲清洗進行比較。然而,由于異常百分比通常是小的,因此急切清洗的成本與q的成本相當。在以下部分中所描述的測試中,ql和q2指的是直接在臟數(shù)據(jù)上運行基準查詢;ql—e和q2—e指的是運行擴展重寫;qlj和q2J指的是運行join-back重寫;并且ql—n和q2_n指的是運4亍初級方法。6.2變化選擇性在這部分中,通過按比例改變查詢所需要的數(shù)據(jù)大小來測試延遲清洗方法。在這些測試中,假i殳僅啟用了閱讀器規(guī)則,并且利用了具有10%的異常的數(shù)據(jù)庫(即,db-10)。通過相應地調整Tl和T2,ql和q2這二者中rtime上的謂詞的選擇性從1%變化到40%。在圖9的性能結果900中示出了ql的性能結果(即,(a)部分)。在所有的選擇性上,q^e和qlj都明顯比初級版本qlj表現(xiàn)得更好,并且ql_e比qlj更有效。圖9的(b)部分中示出了ql的執(zhí)行計劃902。計劃902首先使用rtime上的索引掃描表caseR。計劃902然后通過按照(epc,rtime)順序對輸入數(shù)據(jù)進行分類來評估由SQL/OLAP指定的兩個標量聚合。此后,ql兩次連接表Iocs并且進行最后的聚合。在比較中,圖9的(c)部分中將ql_e的計劃示為計劃904。由于rtime上的謂詞4皮擴展了5分鐘,因此ql_e需要在最初獲得來自caseR的稍多一點的數(shù)據(jù),其被示為具有雙側沿的caseR框。接下來,ql—e計劃通過首先分類(epc,rtime)上的輸入來評估閱讀器規(guī)則,并且然后通過過濾移除異常。一旦完成了清洗,qlj計劃就繼續(xù)其余的ql。應當注意,因為ql中的SQL/OLAP評估的排序要求與清洗規(guī)則中的相同,所以僅需要分類一次數(shù)據(jù)。盡管這看似偶然的,然而期望這樣的順序共享在RFID應用中是常見的,因為其通常對于按照序列順序處理RFID數(shù)據(jù)是有用的。因此,相比于ql,q^e僅導致多計算一個標量聚合的額外開銷,但卻不進行額外分類,從而解釋了為何ql—e僅添加了在ql上面的小的開銷。在該例中,由于限制caseR的僅有的謂詞是可擴展的,因此擴展方法總是好于必須訪問表caseR兩次的join-back方法。最后,初級方法必須對所有的數(shù)據(jù)進行分類,因為其并不下推任何謂詞,并且因而初級方法的性能顯著差于圖9的(a)部分中所示出的其它方法。圖9的(d)部分中示出了q2的性能結果906。類似于ql,q2—e和q2」都明顯比初級方法(即,q2一n)表現(xiàn)得更好。不同于ql,q2J比q2—e更有效。通過分析計劃來解釋這一差別。圖9的(e)部分中示出了原始查詢q2的部分計劃908。計劃q2首先連接表caseR和Iocs,因為^L有它們具有局部謂詞。由"rest(其余的)..."表示的框包括其余的連接,其并不進一步降低基數(shù)(cardinality)以及最后的聚合。圖9的(f)部分中示出了q2—e的計劃910。注意到,q2—e比q2多進4亍一個分類,因為SQL/OLAP中來自清洗的排序要求不同于對分組(gro叩ing)的要求。因為僅rtime謂詞是可擴展的,所以必須在訪問表caseR之后連接表Iocs之前立即進行清洗過程。因而,q2一e必須對包括稍后將被連接拒絕的那些數(shù)據(jù)在內的數(shù)據(jù)進行分類。圖9的(g)部分中的q2J的計劃912通過首先連接表caseR和Iocs來利用在它們兩者上的約束。q2J計劃然后通過分組來計算EPC的唯一列表e,其實質上含有q2實際關心的裝運集合。此后,q2J再次訪問表caseR以提取e中EPC的全部歷史用于清洗。注意到,由于處在特定的地點,因此site(地點)列與EPC部分相關,給定的EPC要么被多次讀取(由于其經過該地點)要么根本未被讀取(由于其沒有經過該地點)。結果,除了rtime上的謂詞之外,site上的謂詞有助于顯著降低e的大小。由于q2J必須分類較少的數(shù)據(jù)并且計算較少的標量聚合,因此對e的大小方面的這一降低明顯有益于q2J。返回對q2J計劃的討論,q2J仍然需要再次應用rtime以及site上的謂詞來移除在清洗之后不再需要的數(shù)據(jù)。因為相關數(shù)據(jù)集小,所以這樣的開銷并不明顯。其余的q2」與q2相同??傊斂蓴U展謂詞的選擇性小的時候,q2_e與q2J可比,因為join-back開銷抵消了后者中的數(shù)據(jù)減少。然而,當rtime上的謂詞變得較少限制性時,q2J明顯表現(xiàn)得更好,因為其可以有效地利用來自site上的謂詞的過濾能力。作為極端測試,通過交換q2中的l..site和s.type并且將常數(shù)從DC變成特定的業(yè)務類型來設計另一查詢q2,。特意組裝(populate)數(shù)據(jù)以便s.type與EPC完全不相關。圖10中的性能結果1000中示出了q2'的結果。在這種情況下,q2'J不再明顯好于q2,—e。盡管s.type上的謂詞降〗氐了讀數(shù),然而其并沒有明顯降低清洗所需要的EPC集合(即,具有單個讀的很多EPC)。因而,q2'」中分類和計算標量聚合的開銷與q2,—e中的可比。在實際情況中,在應用查詢中較常使用與EPC部分相關的列上的謂詞,因為可以一起分析對裝運的多個讀。例如,選擇對一些裝運來說全是共用的一組業(yè)務步驟對于q2,更合理。6.3變化規(guī)則和弄臟百分比(dirtypercentage)這部分給出了就規(guī)則數(shù)而言測試延遲清洗的可伸縮性的結果。在ql和q2這二者中,將rtime謂詞的選擇性固定在10。/。并且選擇具有10%的異常的數(shù)據(jù)庫。然后從1到5按比例變化規(guī)則數(shù)。按照表2中所列出的順序添加規(guī)則。對ql和q2這二者來說,擴展方法僅僅達到對于表2的前三個規(guī)則可行。join-back方法對表2中的所有規(guī)則有效。圖11的示圖1100和1120中給出了這些性能結果。從1個規(guī)則到3個規(guī)則,在最佳重寫策略ql_e和q2J的上的增加相當小。注意到對所有規(guī)則的排序要求都相同。因而,僅第一規(guī)則導致分類開銷。隨后的規(guī)則共享相同的分類并且僅付出計算其自己的標量聚合的開銷。從4個規(guī)則開始,僅join-back方法變得可應用。對qlj和q2J這二者來說,相比于先前的規(guī)則,循環(huán)規(guī)則添加了稍微多些的開銷,因為在join-back期間,沒有擴展條件可以被應用到表caseR上。遺漏規(guī)則在表2的所有規(guī)則當中添加最多的開銷。不同于其它的規(guī)則,遺漏規(guī)則從以下導出表中獲得輸入selectepc,rtime,biz—loc,biz_step,reader,0asis一palletfromc3ScRunionselectchild_epc,rtime,biz一loc,biz一step,reader,1asis_palletfrompalletR,parentwherepalletR.epc=parent.parent一epc將ql和q2中的條件應用到caseR和palletR這二者上以獲得將要清洗的EPC集合,并且也在這兩個表上進行join-back。由于現(xiàn)在幾乎每個箱體讀都與托盤讀成對,因此將要分類的數(shù)據(jù)量現(xiàn)在是翻倍的。檢索托盤讀所需要的額外連接也添加了一些開銷,但是這是次要的,因為讀被限制在較小的EPC集合。但是,qlj和q2J都明顯比初級方法表現(xiàn)得更好,初級方法對5個規(guī)則花費大約1000秒(圖11中未示出)。最后的實驗相對于異常數(shù)測試了延遲清洗。再次,在ql和q2這二者中,將rtime上的謂詞的選擇性固定在100/0。應用表2中所列出的前三個規(guī)則。然后在四個不同的數(shù)據(jù)庫上測試查詢,其中異常從10%到40%。圖11的示圖1140和1160中示出了結果。對ql和q2這二者來說,在越來越多的異常的情況下,擴展查詢和join-back查詢僅稍微增加,并且與原始查詢的趨勢相同。注意到,XV。的異常并不轉換成X。/o的較大的數(shù)據(jù)庫,因為諸如漏讀之類的異常實際降低了原始數(shù)據(jù)量。笫6部分的實驗結果表明延遲清洗可用于在RFID數(shù)據(jù)上的典型分析查詢。擴展和join-back方法均明顯比應用規(guī)則卻不利用(leverage)查詢信息的初級方法表現(xiàn)得更好。當擴展和join-back方法均可應用的時候,在兩者之間存在折衷。重要的是還要注意,清洗的開銷限制在讀表(thereadstable)。對于連接更多參考數(shù)據(jù)和計算更多聚合的分析查詢來說,延遲清洗的相對開銷甚至更小。7.計算系統(tǒng)圖12是依照本發(fā)明的實施例用于實現(xiàn)圖2、圖4、圖5和圖6的過程的計算系統(tǒng)。計算單元1200適于存儲和/或執(zhí)行延遲清洗系統(tǒng)1214的程序代碼,并且通常包括中央處理單元(CPU)1202、存儲器1204、輸入/輸出(I/O)接口1206、總線1208、I/O設備1210以及存儲單元1212。CPU1202實現(xiàn)計算單元1200的計算和控制功能。CPU1202可以包括單個處理單元,或者跨一個或多個位置中的一個或多個處理單元分布(例如,在客戶機和服務器上)。在延遲清洗系統(tǒng)1214的程序代碼的實際執(zhí)行期間采用存儲器1204的本地存儲元件。存儲器1204的高速緩存元件提供了對至少某些程序代碼的臨時存儲,以便降低在執(zhí)行期間必須從大容量存儲器檢索代碼的次數(shù)。進一步地,存儲器1204可以包括圖12中未示出的其它系統(tǒng),例如在CPU1202上運行并且提供對計算單元1200內和/或連接到計算單元1200的各種組件的控制的操作系統(tǒng)(例如,Linux)。存儲器1204可以包括任何已知類型的數(shù)據(jù)存儲器和/或傳輸介質,包括大容量存儲器、磁介質、光介質、隨機訪問存儲器(RAM)、只讀存儲器(ROM)、數(shù)據(jù)高速緩存、數(shù)據(jù)對象等。存儲單元1212是,例如,存儲數(shù)據(jù)(例如,工作流的XML表示)的磁盤驅動器或光盤驅動器。此夕卜,類似于CPU1202,存儲器1204可以位于單個物理位置,包括一種或多種類型的數(shù)據(jù)存儲器,或者跨各種形式下的多個物理系統(tǒng)分布。進一步地,存儲器1204可以包括跨例如LAN、WAN或存儲區(qū)域網(SAN)(未示出)分布的數(shù)據(jù)。1/0接口1206包括用于從外部源或向外部源交換信息的任何系統(tǒng)。1/0設備1210包括任何已知類型的外部設備,包括顯示器監(jiān)控器、M、鼠標、打印機、揚聲器、手持設備、打印機、傳真機等??偩€1208提供計算單元1200中每個組件之間的通信鏈路,并且可以包括任何類型的傳輸鏈路,包括電的、光的、無線等。I/O接口1206還允許計算單元1200從輔助存儲設備(例如,存儲單元1212)存儲和檢索信息(例如,程序指令或數(shù)據(jù))。輔助存儲設備可以是非易失性存儲設備(例如,接收CD-ROM磁盤的CD-ROM驅動器)。計算單元1200可以存儲和檢索來自其它的輔助存^i殳備(未示出)的信息,其它的輔助存儲設備可以包括直接訪問存儲設備(DASD)(例如,硬盤或軟盤)、磁光盤驅動器、磁帶驅動器或無線通信設備。本發(fā)明可以采取全硬件實施例、全軟件實施例或者既含有硬件元素又含有軟件元素的實施例的形式。在優(yōu)選的實施例中,以軟件實現(xiàn)本發(fā)明,其包括但不限于固件、常駐軟件、微碼等。此外,本發(fā)明可以釆取可訪問于計算機可用或計算機可讀介質的計算機程序產品的形式,該計算機可用或計算機可讀介質提供由計算單元1200或任何指令執(zhí)行系統(tǒng)使用的或者與計算單元1200或任何指令執(zhí)行系統(tǒng)結合使用以提供和促進本發(fā)明的能力的延遲清洗系統(tǒng)1214的程序代碼。對于該描述來說,計算機可用或計算機可讀介質可以是能夠容納、存儲、通信、傳播或傳送由指令執(zhí)行系統(tǒng)、裝置或設^f吏用的或者與指令執(zhí)行系統(tǒng)、裝置或設備結合使用的程序的任何裝置。介質可以是電子、磁性、光學、電磁、紅外或半導體系統(tǒng)(或裝置或設備)或者傳旨質。計算機可讀介質的例子包括半導體或固態(tài)存儲器、磁帶、可裝卸計算機磁盤、RAM1204、ROM、硬磁盤和光盤。光盤的當前的例子包括只讀光盤存儲器(CD-ROM)、讀/寫光盤(CD-R/W)和DVD。借助于例子提供了文中所描繪的流程圖。在不背離本發(fā)明的精神的情況下,可以對文中所描迷的這些示圖或步驟(或操作)進行變化。例如,在某些情況下,可以按照不同的順序實現(xiàn)步驟,或者可以添加、刪除或修改步驟。所有的這些變化都被認為是所附權利要求中所敘述的本發(fā)明的一部分。雖然已經出于說明的目的在文中描述了本發(fā)明的實施例,但是4艮多修改和改變對本領域的技術人員來說將是顯而易見的。因此,所附權利要求旨在涵蓋落入本發(fā)明的實際精神和范圍內的所有這樣的修改和改變。權利要求1.一種在查詢時間從基于序列的數(shù)據(jù)中清洗異常的計算機實現(xiàn)的方法,其包括將基于序列的數(shù)據(jù)加載到由計算系統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)所管理的數(shù)據(jù)庫中,所述加載是在先于所述基于序列的數(shù)據(jù)的查詢時間的、所述基于序列的數(shù)據(jù)的加載時間進行的;在所述計算系統(tǒng)的清洗規(guī)則引擎處接收清洗規(guī)則;通過所述清洗規(guī)則引擎,將所述清洗規(guī)則自動轉換成模板,所述模板包括對所述基于序列的數(shù)據(jù)中的一個或多個異常進行補償?shù)倪壿?;在所述查詢時間并且通過所述計算系統(tǒng)的查詢重寫引擎,接收檢索所述基于序列的數(shù)據(jù)的用戶查詢;在所述查詢時間并且通過所述查詢重寫引擎,自動重寫所述用戶查詢以提供重寫的查詢,所述自動重寫包括應用包括在所述模板中的所述邏輯來補償所述一個或多個異常;以及在所述查詢時間,通過所述數(shù)據(jù)庫管理系統(tǒng)執(zhí)行所述重寫的查詢,其中,通過所述執(zhí)行所述重寫的查詢所提供的應答與在通過將所述清洗規(guī)則應用于所有的所述基于序列的數(shù)據(jù)而生成的數(shù)據(jù)集上執(zhí)行所述用戶查詢的結果一樣。2.根據(jù)權利要求1的方法,其中所述自動轉換所述清洗規(guī)則包括在大小為一的窗口上將兩個單元素中的單元素轉換成一個或多個標量聚合,其中所述兩個單元素是所述清洗規(guī)則的條件所引用的所述基于序列的數(shù)據(jù)中的兩行,其中根據(jù)所述兩個單元素的相對序列位置來定義所述窗口,并且其中在SQL/OLAP中指定所述一個或多個標量聚合以及所述窗cr。3.根據(jù)權利要求l的方法,其中所述自動轉換所述清洗規(guī)則包括在SQL/OLAP中定義窗口以便包括所述基于序列的數(shù)據(jù)的行的集合,所述行的集合被所述清洗規(guī)則的IHHI用;以及在所述窗口上將所述條件轉換成SQL/OLAP中的case表達式,其中所述M引用單元素和所述行的集合。4.根據(jù)權利要求l的方法,其中所述自動轉換所述清洗規(guī)則包括以下之一如果所述清洗規(guī)則的動作是刪除動作或保留動作,則將所述動作實現(xiàn)為SQL/OLAP中的過濾條件,其中所述刪除動作移除所逸基于序列的數(shù)據(jù)中的一行或多行,并且所迷保留動作保留所述基于序列的數(shù)據(jù)中的一行或多^f亍;以及如果所述清洗規(guī)則的所述動作是修改動作,則將所述動作轉換成SQL/OLAP中的case表達式,其中所述修改動作修改所述基于序列的數(shù)據(jù)的一行或多行。5.根據(jù)權利要求4的方法,其中所述自動轉換所述清洗規(guī)則包括所述將所述動作實現(xiàn)為所述過濾條件,其中如果所述動作是所述保留動作,則直接利用所述清洗規(guī)則的規(guī)則條件作為所述過濾條件,并且其中,如果所述動作是所述刪除動作,則利用所述規(guī)則條件的取反作為所述過濾條件。6.根據(jù)權利要求l的方法,其中所述自動重寫進一步包括進行擴展重寫算法和join-back算法中的至少一個以^更生成所述重寫的查詢,所述ii行包括將所逸基于序列的數(shù)據(jù)減少成所逸基于序列的數(shù)據(jù)的子集,通過對清洗后的教:據(jù)的生成來〗吏用所述子集,以及在所述減少之后,在所述清洗后的數(shù)據(jù)上執(zhí)行包括在所述用戶查詢中的邏輯,其中所述將所述基于序列的數(shù)據(jù)減少成所述子集以及所述執(zhí)行包括在所述用戶查詢中的所述邏輯提供了這樣的保證,即通過所述執(zhí)行所述重的所逸基于序列的數(shù)據(jù)而生成的所述數(shù)據(jù)集上執(zhí)行所述用戶查詢的所述結果一樣。7.根據(jù)權利要求6的方法,其中所迷自動重寫包括所述進行所述擴展重寫算法,并且其中所述進行所述擴展重寫算法進一步包括對于關系表R上包括在所述清洗規(guī)則(C)的模式中的一個或多個上下文參考中的每個上下文參考X,進行包括以下步驟的循環(huán)對一個或多個合取項的列表i殳置相關條件cr,所述一個或多個合取項包括以下中的至少一個包括在所迷清洗規(guī)則C的條件中并且引用所述上下文參考X的一個或多個顯式合取項,以及一個或多個隱式合取項,每個隱式合取項處于所述關系表R的群集鍵上或所述關系表R的序列鍵上,其中所述相關條件cr是所述上下文參考X與T之間的相關條件,所述T是包括在所述模式中的目標參考,如果所述上下文參考X是基于位置的上下文參考,那么在所勤目關條件cr的所述一個或多個合取項中僅保留位置保存的合取項,將s綁定到所述目標參考T,其中所述s是所述關系表R上的查詢條件并且包括在所述用戶查詢(Q)中,在所述相關條件cr與所述查詢條件s之間運行傳遞性分析,確定d,所述d是包括了通過所述傳遞性分析所生成的條件中僅引用所述上下文參考X的任何合取項的集合,以及如果集合d不為空,則將集合d添加到上下文條件cc,否則將所述上下文條件cc設置成空集,并且中斷所述循環(huán),其中所述上下文條件cc為上下文參考X定義了上下文集合;以及如果所述上下文條件cc不是所述空集,則生成擴展重寫Qe作為所述重寫的查詢,否則將所述擴展重寫Qe設置成空值。8.根據(jù)權利要求7的方法,其中所述生成所述擴展重寫Qe包括將擴展條件ec計算為s||cc;將所述查詢條件s簡化成優(yōu)化的查詢條件s',所述簡化包括將所述優(yōu)化的查詢條件s'設置等于s-cc;以及通過表達式as(^(cjJR)》計算所述擴展重寫Qe,其中所述(De(cjJR))是在數(shù)據(jù)集(Tee(R)上應用所述清洗規(guī)則C的結果,其中所述數(shù)據(jù)集C7jR)是直接將所述擴展條件ec推向所述關系表R以及清洗由所述擴展條件ec所選擇的所述關系表R的數(shù)據(jù)的結果。9.根據(jù)權利要求7的方法,其中所述用戶查詢具有ReK1CTsAo…eKncjSnDn的形式,其中所述關系表R通過n:l的連接來連接列Ki上的每個表Di,其中通過所述傳遞性分析所生成的所述任何合取項均是在表D'i上的Pi,其中i-l,…,m,并且m〈-n,以及其中所述進行所述擴展重寫算法進一步包括對于i-l,…,m,按照S、的升序選擇性對所述D'i進行排序;利用在一系列m+l個值上增加的計數(shù)器進行循環(huán),所述利用所述計數(shù)器進行所述循環(huán)包括如果所述計數(shù)器等于初始值,則生成第一SQL語句,其在清洗了所述基于序列的數(shù)據(jù)之后延遲所有的所述連接,所述清洗包括利用所述清洗規(guī)則,否則生成另外的SQL語句,其按照所述排序所指定的順序將所述關系表R與所MD、到D'i相連接,將與所述n:l的連接相關聯(lián)的每個連接條件轉換成所述關系表R上具有R.Kjin(selectKifromD}whereSi)形式的局部合取項,進行權利要求7的所述擴展重寫算法,如果在所述上下文參考上導出了所有的"in"合取項,則生成新的SQL語句,所述生成所述新的SQL語句包括利用所述進行權利要求7的所述擴展重寫算法,以及如果在所述上下文參考上導出了所有的所述"in"合取項,則將所述"in"合取項轉換成連接;編譯達到m+l個SQL語句的集合,所述集合包括通過利用所述計數(shù)器的所述循環(huán)而生成的所述第一SQL語句和所述另外的SQL語句,所述編譯包括利用所述數(shù)據(jù)庫管理系統(tǒng)的優(yōu)化器;通過所述數(shù)據(jù)庫管理系統(tǒng)確定對執(zhí)行包括在所述達到m+l個SQL語句的集合中的所述SQL語句所需要的計算資源的成本的估計;以及在所述確定之后,從所述達到m+l個SQL語句的集合中選擇最優(yōu)的SQL語句作為所述重寫的查詢,所述最優(yōu)的SQL語句與所述確定的估計中的最小估計相關聯(lián)。10.根據(jù)權利要求6的方法,其中所述自動重寫包括所述進行所述join-back算法,并且其中所述進行所述join-back算法進一步包括按照Si的升序選擇性對"到Dn進行排序,其中所述用戶查詢(Q)具有R"jc,C^D,0…Ojc。CTsnDn的形式,其中所述用戶查詢Q是所述asR,并且關系表R使用條件JCi連接每個表Di;生成n+l個SQL查詢Qi,所述生成所述n+l個SQL查詢Qj包括按照所述排序所指定的順序從0到n推進半連接;編譯所述n+l個SQL查詢Q[i,所述編譯包括利用所述數(shù)據(jù)庫管理系統(tǒng)的優(yōu)化器;通過所述數(shù)據(jù)庫管理系統(tǒng)確定對執(zhí)行每個SQL查詢Q[i]所需要的計算資源的成本的估計;以及在所述確定之后,選擇所述n+l個SQL查詢Q[i中的SQL查詢Qj作作為所述重寫的查詢,所述SQL查詢Qj與所述確定的估計中的最小估計相關聯(lián)。11.根據(jù)權利要求10的方法,其中所述生成所迷n+l個SQL查詢Q[i包括將計數(shù)器設置成初始值;以及對于小于或等于g的所述計數(shù)器,進行包括以下步驟的循環(huán)如果所述計數(shù)器等于所述初始值,則將T設置成第一投影nckey(osR),否則將T設置成第二投影nckey(osRosA化..eracrSiDi),其中所述第一投影和所述第二投影將所述第一投影和所述第二投影的輸入數(shù)據(jù)分別投影到ckey上并且移除其中的重復,所述ckey是包括在清洗規(guī)則C的定義中的群集鍵,并且其中所述將T設置成所述第一投影以及將T設置成所述第二投影促進了所述推進;將Q[i]生成為表達式c^(^(cjJR)Oekey(T))),其中ec是擴展a并且s'是優(yōu)化的查詢條件,其中所述0。((tJR)g—(T))是在數(shù)據(jù)集C7JR)上應用所述清洗規(guī)則C的結果,其中所述數(shù)據(jù)集aJR)是直接將所迷擴展條件ec推向所述關系表R以及清洗由所述擴展條件ec所選擇的所述關系表R的數(shù)據(jù)的結果,并且其中所述生成包括將所述擴展條件ec計算為s||CC,其中所述s是所述關系表R上的查詢條件并且包括在所述用戶查詢Q中,并且其中所述cc是為上下文參考X定義上下文集合的上下文條件,所述上下文參考X包括在含于所述清洗規(guī)則C的才莫式中的一個或多個上下文參考中,以及將所述查詢條件s簡化成所述優(yōu)化的查詢條件s',所述簡化包括設置所述優(yōu)化的查詢條件s'等于s-cc;以及增加所述計數(shù)器。12.根據(jù)權利要求6的方法,其中所迷自動重寫進一步包括進行所迷擴展重寫算法以便將所述用戶查詢重寫為查詢Qe;進行所述join-back算法以^f更將所述用戶查詢重寫為Qj;以及確定與執(zhí)行所述查詢Qe所需要的一個或多個計算資源相關聯(lián)的第一成本估計;確定與執(zhí)行所述查詢Qj所需要的所述一個或多個計算資源相關聯(lián)的第二成本估計;如果所述第一成本估計小于所述第二成本估計,則選擇所述查詢Qe作為所述重寫的查詢;以及如果所述第二成本估計小于所述第一成本估計,則選擇所述查詢Qj作為所述重寫的查詢。13.—種用于在計算環(huán)境中于查詢時間從基于序列的數(shù)據(jù)中清洗異常的系統(tǒng),其包括用于將基于序列的數(shù)據(jù)加載到由計算系統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)所管理的數(shù)據(jù)庫中的裝置,所i^口栽是在先于所述基于序列的數(shù)據(jù)的查詢時間的、所述基于序列的數(shù)據(jù)的加載時間進行的;用于在所述計算系統(tǒng)的清洗規(guī)則引擎處接收清洗規(guī)則的裝置;用于通過所述清洗規(guī)則引擎,將所述清洗規(guī)則自動轉換成模板的裝置,所述模板包括對所迷基于序列的數(shù)據(jù)中的一個或多個異常進行補償?shù)倪壿嫞挥糜谠谒霾樵儠r間并且通過所述計算系統(tǒng)的查詢重寫引擎,接收檢索所述基于序列的數(shù)據(jù)的用戶查詢的裝置;用于在所述查詢時間并且通過所述查詢重寫引擎,自動重寫所述用戶查詢以提供重寫的查詢的裝置,所述用于自動重寫的裝置包括用于應用包括在所述才莫板中的所述邏輯來補償所述一個或多個異常的裝置;以及用于在所述查詢時間,通過所述數(shù)據(jù)庫管理系統(tǒng)執(zhí)行所述重寫的查詢的裝置,其中由所述用于執(zhí)行所述重寫的查詢的裝置所提供的應答與由用集上執(zhí)行所迷用戶查詢的i置所提供的結果二樣。'14.根據(jù)權利要求13的系統(tǒng),其中所述用于自動重寫的裝置進一步包括用于進行擴展重寫算法和join-back算法中的至少一個以便生成所述重寫的查詢的裝置,所述用于進行的裝置包括用于將所述基于序列的數(shù)據(jù)減少成所述基于序列的數(shù)據(jù)的子集的裝置,通過對清洗后的數(shù)據(jù)的生成來使用所述子集,以及用于在所述減少之后在所述清洗后的數(shù)據(jù)上執(zhí)行包括在所述用戶查詢中的邏輯的裝置,其中所述用于將所述基于序列的數(shù)據(jù)減少成所述子集的裝置以及所述用于執(zhí)行包括在所述用戶查詢中的所述邏輯的裝置提供了這樣的保證,即通過所述執(zhí)行所述重寫的查詢所提供的所述應答與所述在通過所述將所述清洗規(guī)則應用于所有的所述基于序列的數(shù)據(jù)而生成的所述數(shù)據(jù)集上執(zhí)行所述用戶查詢的所述結果一樣。15,根據(jù)權利要求14的系統(tǒng),其中所述用于自動重寫的裝置包括所述用于進行所述擴展重寫算法的裝置,并且其中所述用于進行所述擴展重寫算法的裝置進一步包'括用于對關系表R上包括在所述清洗規(guī)則(C)的模式中的一個或多個上下文參考中的每個上下文參考X進行循環(huán)的裝置,所述用于進行所述循環(huán)的裝置包括用于對一個或多個合取項的列表設置相關條件cr的裝置,所述一個或多個合取項包括以下中的至少一個包括在所述清洗規(guī)則C的條件中并且引用所述上下文參考X的一個或多個顯式合取項,以及一個或多個隱式合取項,每個隱式合取項處于所述關系表R的群集鍵上或所述關系表R的序列鍵上,其中所勤目關^cr是所述上下文參考X與T之間的相關條件,所述T是包括在所述厲式中的目標參考,用于在所述上下文參考X是基于位置的上下文參考的情況下,在所述相關條件cr的所述一個或多個合取項中僅保留位置保存的合取項的裝置,用于將s綁定到所述目標參考T的裝置,其中所述s是所述關系表R上的查詢條件并且包括在所述用戶查詢(Q)中,用于在所^目關條件cr與所述查詢條件s之間運行傳遞性分析的裝置,用于確定d的裝置,所述d是包括了通過所迷傳遞性分析所生成的條件中僅引用所述上下文參考X的任何合取項的集合,以及這樣的裝置,如果集合d不為空,則所述裝置用于將集合d添加到上下文務frcc,否則所述裝置用于將所述上下文條件cc設置成空集并且中斷所述循環(huán),其中所述上下文條件cc為上下文參考X定義了上下文集合;以及這樣的裝置,如果所述上下文條件cc不是所述空集,則所述裝置用于生成擴展重寫Qe作為所述重寫的查詢,否則所述裝置用于將所述擴展重寫Qe設置為空值。16.根據(jù)權利要求15的系統(tǒng),其中所述用于生成所述擴展重寫Qe的裝置包括用于將擴展條件ec計算為s||cc的裝置;用于將所述查詢條件s筒化成優(yōu)化的查詢條件s'的裝置,所述用于筒化的裝置包括用于將所迷優(yōu)化的查詢條件s'設置等于s-cc的裝置;以及用于通過表達式c^,(^(c^(R)))計算所述擴展重寫Qe的裝置,其中所述(D。(cie。(R))是在數(shù)據(jù)集c^(R)上應用所述清洗規(guī)則C的結果,其中所述數(shù)據(jù)集。(R)是直接將所述擴展條件ec推向所述關系表R以及清洗由所述擴展條件ec所選擇的所述關系表R的數(shù)據(jù)的結果。17.根據(jù)權利要求15的系統(tǒng),其中所述用戶查詢具有csReK1g…&nDn的形式,其中所述關系表R通過『1的連接來連接列Ki上的每個表Di,其中通過所述傳遞性分析所生成的所述任何合取項均是在表D'i上的Pi,其中i=l,...,m,并且加<=11,以及其中所迷用于進行所迷擴展重寫算法的裝置進一步包括用于按照S'i的升序選擇性對所述D'i進行排序的裝置,其中i=l,.."m;用于利用在一系列m+l個值上增加的計數(shù)器進行循環(huán)的裝置,所述用于利用所述計數(shù)器進行所述循環(huán)的裝置包括如果所述計數(shù)器等于初始值,則是用于生成第一SQL語句的裝置,所述第一SQL語句在清洗了所逸基于序列的數(shù)據(jù)之后延遲所有的所述連接,所述清洗包括利用所述清洗規(guī)則;否則是用于生成另外的SQL語句的裝置,所述另外的SQL語句按照所述排序所指定的順序將所述關系表R與所i^D、到D'i相連接,用于將與所迷n:l的連接相關聯(lián)的每個連接條件轉換成所述關系表R上具有R.Kjin(selectKjfromwhereS;)形式的局部合取項的裝置,用于進行權利要求7的所述擴展重寫算法的步驟的裝置,用于當在所述上下文參考上導出了所有的"in"合取項的情況下生成新的SQL語句的裝置,所述用于生成所述新的SQL語句的裝置包括用于利用所述進行權利要求7的所述擴展重寫算法的所述步驟的裝置,以及用于當在所述上下文參考上導出了所有的所述"in"合取項的情況下將所述"in"合取項轉換成連接的裝置;用于編譯達到m+1個SQL語句的集合的裝置,所述集合包括通過利用所述計數(shù)器的所述循環(huán)而生成的所述第一SQL語句和所述另外的SQL語句,所述用于編譯的裝置包括用于利用所述數(shù)據(jù)庫管理系統(tǒng)的優(yōu)化器的裝置;用于通過所述數(shù)據(jù)庫管理系統(tǒng)確定對執(zhí)行包括在所述達到m+1個SQL語句的集合中的所述SQL語句所需要的計算資源的成本的估計的裝置;以及用于在所述確定之后,從所述達到m+1個SQL語句的集合中選擇最優(yōu)的SQL語句作為所述重寫的查詢的裝置,所述最優(yōu)的SQL語句與所述確定的估計中的最小估計相關聯(lián)。18.根據(jù)權利要求14的系統(tǒng),其中所述用于自動重寫的裝置包括所述用于進行所述join-back算法的裝置,并且其中,所述用于進行所述join-back算法的裝置進一步包括用于按照Si的升序選擇性對到Dn進行排序的裝置,其中所述用戶查詢(Q)具有c^Re^cjsAo…GnasJDn的形式,其中所述用戶查詢Q是所述R,并且關系表R使用MJCi連接每個表Di;用于生成n+1個SQL查詢Qi的裝置,所述用于生成所述n+1個SQL查詢Qi的裝置包括用于按照所述排序所指定的順序從0到n推進半連接的裝置;用于編譯所述n+1個SQL查詢Q[i的裝置,所述用于編譯的裝置包括用于利用所述數(shù)據(jù)庫管理系統(tǒng)的優(yōu)化器的裝置;用于通過所述數(shù)據(jù)庫管理系統(tǒng)確定對執(zhí)行每個SQL查詢Q[i]所需要的計算資源的成本的估計的裝置;以及用于在所述確定之后,選擇所述n+l個SQL查詢Q[i]中的SQL查詢Qj作為所述重寫的查詢的裝置,所述SQL查詢Qj與所述確定的估計中的最小估計相關聯(lián)。19.根據(jù)權利要求18的系統(tǒng),其中所述用于生成所述n+l個SQL查詢Q[i]的裝置包括用于將計數(shù)器設置成初始值的裝置;以及用于對小于或等于終值的所述計數(shù)器進行循環(huán)的裝置,所述用于進行所述循環(huán)的裝置包括這樣的裝置,如果所述計數(shù)器等于所述初始值,則所述裝置用于將T設置成第一投影n一(c^R),否則所述裝置用于將Ti殳置成第二投影nckey(cisReJClOs,D,e…e,Cicts,D,),其中所述第一投影和所述第二投影將所述第一投影和所述第二投影的輸入數(shù)據(jù)分別投影到ckey上并且移除其中的重復,所述ckey是包括在清洗規(guī)則C的定義中的群集鍵,并且其中所述將T設置成所述第一投影以及將T設置成所述笫二投影促進了所述推進;用于將Q[i生成為表達式((De(c^(R)e—(T)))的裝置,其中ec是擴展條件并且s'是優(yōu)化的查詢條件,其中所述Oe(de。(R)(T))是在數(shù)據(jù)集crJR)上應用所述清洗規(guī)則C的結果,其中所述數(shù)據(jù)集crJR)是直接將所述擴展條件ec推向所述關系表R以及清洗由所述擴展條件ec所選擇的所述關系表R的數(shù)據(jù)的結果,并且其中所述用于生成的裝置包括用于將所述擴展Mec計算為s||cc的裝置,其中所述s是所述關系表R上的查詢條件并且包括在所述用戶查詢Q中,并且其中所述cc是為上下文參考X定義上下文集合的上下文條件,所述上下文參考X包括在含于所述清洗規(guī)則C的模式中的一個或多個上下文參考中,以及用于將所述查詢條件s簡化成所述優(yōu)化的查詢條件s,的裝置,所述用于簡化的裝置包括用于設置所述優(yōu)化的查詢條件S'等于s-cc的裝置;以及用于增加所述計數(shù)器的裝置。20.—種通過相對于多個清洗規(guī)則重寫查詢而在查詢時間從基于序列的數(shù)據(jù)中清洗異常的計算機實現(xiàn)的方法,其包括將基于序列的數(shù)據(jù)加栽到由計算系統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)所管理的數(shù)據(jù)庫中,所述基于序列的數(shù)據(jù)包括一個或多個異常;在所述計算系統(tǒng)的清洗規(guī)則引擎處接收多個清洗規(guī)則Cb…,Cn;通過所述計算系統(tǒng)的查詢重寫引擎,接收檢索所述基于序列的數(shù)據(jù)的用戶查詢Q;通過所述查詢重寫引擎自動重寫所迷用戶查詢以提供重寫的查詢;通過所述數(shù)據(jù)庫管理系統(tǒng)執(zhí)行所述重寫的查詢,所述執(zhí)行包括從所述基于序列的數(shù)據(jù)生成清洗后的數(shù)據(jù),所述清洗后的數(shù)據(jù)不包括所述一個或多個異常,其中,所迷自動重寫包括對于所迷多個清洗規(guī)則d,…,Cn中的每個清洗規(guī)則Ci,進行笫一循環(huán),其包括對于關系表R上包括在所述清洗規(guī)則Q的模式中的一個或多個上下文參考中的每個上下文參考X,進行第二循環(huán),其包括對一個或多個合取項的列表設置相關條件cr,所迷一個或多個合取項包括以下中的至少一個包括在所述清洗規(guī)則Q的IHt中并且引用所述上下文參考X的一個或多個顯式合取項,以及一個或多個隱式合取項,每個隱式合取項處于所迷關系表R的群集鍵上或所述關系表R的序列鍵上,其中所i^目關條件cr是所述上下文參考X與T之間的相關條件,所述T是包括在所*式中的目標參考,如果所述上下文參考X是基于位置的上下文參考,那么在所i^目關條件cr的所述一個或多個合取項中僅保留位置M的隱式合取項,將s綁定到所述目標參考T,其中所述s是所述關系表R上的查詢務fr并且包括在所述用戶查詢Q中,在所述相關條件cr與所述查詢條件s之間運行傳遞性分析,確定d,所述d是包括了所勤目關條件cr中僅引用上下文參考X的任何合取項的集合,以及如果集合d不為空,則將集合d添加到上下文條件cci,否則將所述上下文條件CCi設置成空集,并且中斷所述第二循環(huán),其中所述上下文條件cCi為上下文參考X定義了上下文集合,以及如果所述上下文條件CCi是所述空集,則中斷所述第一循環(huán),并且進行join-back算法以生成所述重寫的查詢;以及如果上下文條件cci都不是所述空集,則進行以下步驟將總的上下文條件CC計算為CdllcC2…HcCn,將擴展條件ec計算為s||CC,其中所述s是所述用戶查詢Q的查詢沐將所述查詢條件s簡化成優(yōu)化的查詢條件s',所述簡化包括將所述優(yōu)化的查詢條件s'設置等于s-cc,以及將擴展重寫查詢Qe計算為所述重寫的查詢,所述計算所述擴展重寫查詢Qe包括利用表達式cjs.((X>Cn..d>cl(c^(R》),其中所述①cn…①a(R))中的每個Oci(c(R))是在數(shù)據(jù)集(R)上應用所述清洗規(guī)則Ci的結果,其中所述數(shù)據(jù)集a。。(R)是直接將所述擴展Mec推向所述關系表R以及清洗由所述擴展條件ec所選擇的所述關系表R的數(shù)據(jù)的結果。21.—種用于在計算環(huán)境中通過相對于多個清洗規(guī)則重寫查詢而在查詢時間從基于序列的數(shù)據(jù)中清洗異常的系統(tǒng),其包括用于將基于序列的數(shù)據(jù)加栽到由計算系統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)所管理的數(shù)據(jù)庫中的裝置,所述基于序列的數(shù)據(jù)包括一個或多個異常;用于在所述計算系統(tǒng)的清洗規(guī)則引擎處接收多個清洗規(guī)則d,…,Cn的裝置;用于通過所述計算系統(tǒng)的查詢重寫引擎接收檢索所述基于序列的數(shù)據(jù)的用戶查詢Q的裝置;用于通過所述查詢重寫引擎自動重寫所述用戶查詢以拔^供重寫的查詢的裝置;用于通過所述數(shù)據(jù)庫管理系統(tǒng)執(zhí)行所述重寫的查詢的裝置,所述用于執(zhí)行的裝置包括用于從所述基于序列的數(shù)據(jù)生成清洗后的數(shù)據(jù)的裝置,所述清洗后的數(shù)據(jù)不包括所述一個或多個異常,其中,所述用于自動重寫的裝置包括用于對所述多個清洗規(guī)則d,…,Cn中的每個清洗規(guī)則Ci進行第一循環(huán)的裝置,所述用于進行所述笫一循環(huán)的裝置包括用于對關系表R上包括在所述清洗規(guī)則Ci的模式中的一個或多個上下文參考中的每個上下文參考X進行第二循環(huán)的裝置,所述用于進行所述第二循環(huán)的裝置包括以下裝置用于對一個或多個合取項的列表i殳置相關務陣cr的裝置,所述一個或多個合取項包括以下中的至少一個包括在所述清洗規(guī)則Ci的條件中并且引用所述上下文參考X的一個或多個顯式合取項,以及一個或多個隱式合取項,每個隱式合取項處于所述關系表R的群集鍵上或所述關系表R的序列鍵上,其中所i^目關^Htcr是所述上下文參考X與T之間的相關條件,所述T是包括在所述模式中的目標參考,用于在所述上下文參考X是基于位置的上下文參考的情況下,在所勤目關條件cr的所述一個或多個合取項中僅保留位置保存的隱式合取項的裝置,用于將s綁定到所述目標參考T的裝置,其中所述s是所述關系表R上的查詢條件并且包括在所述用戶查詢Q中,用于在所勤目關條件cr與所述查詢條件s之間運行傳遞性分析的裝置,用于確定d的裝置,所述d是包括了所iM目關條件cr中僅引用上下文參考X的任何合取項的集合,這樣的裝置,如果集合d不為空,則所述裝置用于將集合d添加到上下文條件CCi,否則所述裝置用于將所述上下文條件CCi設置成空集并且中斷所述第二循環(huán),其中所述上下文條件CCi為上下文參考X定義了上下文集合,以及用于在所述上下文條件CCi是所述空集的情況下中斷所述第一循環(huán)的裝置,以及用于進行join-back算法以生成所述重寫的查詢的裝置;以及用于在上下文條件cci都不是所述空集的情況下進行以下步驟的裝置將總的上下文條件cc計算為cCl||cc2||ccn,將擴展條件ec計算為s||cc,其中所述s是所述用戶查詢Q的查詢條件,將所述查詢條件s簡化成優(yōu)化的查詢條件s',所述簡化包括將所述優(yōu)化的查詢條件s'設置等于s-cc,以及將擴展重寫查詢Qe計算為所述重寫的查詢,所述計算所述擴展重寫查詢Qe包括利用表達式C7s,(Oc,..Ocl(C^(R》),其中所述。Cn…。a(R))中的每個(dJR))是在數(shù)據(jù)集CTJR)上應用所述清洗規(guī)則Ci的結果,其中所述數(shù)據(jù)集。(R)是直接將所述擴展^ec推向所述關系表R以及清洗由所述擴展條件ec所選擇的所述關系表R的數(shù)據(jù)的結果。全文摘要一種用于在查詢時間從基于序列的數(shù)據(jù)中清洗異常的方法和系統(tǒng)。將諸如射頻識別數(shù)據(jù)(RFID)的基于序列的數(shù)據(jù)加載到數(shù)據(jù)庫中。在清洗規(guī)則引擎處接收一個或多個清洗規(guī)則。所述清洗規(guī)則引擎將所述清洗規(guī)則轉換成模板,該模板包括對所述基于序列的數(shù)據(jù)中的異常進行補償?shù)倪壿?。通過查詢重寫引擎接收檢索所述基于序列的數(shù)據(jù)的查詢。所述查詢重寫引擎通過應用所述模板邏輯來重寫所述查詢。在查詢時間執(zhí)行所述重寫的查詢。所述重寫的查詢執(zhí)行的結果與在通過將所述清洗規(guī)則應用于所有的所述基于序列的數(shù)據(jù)而生成的數(shù)據(jù)集上執(zhí)行原始查詢的結果一樣。文檔編號G06F17/30GK101183378SQ20071016925公開日2008年5月21日申請日期2007年11月7日優(yōu)先權日2006年11月14日發(fā)明者H·塔卡,L·S·柯比,S·T·多雷斯瓦米,軍饒申請人:國際商業(yè)機器公司