專利名稱::用于優化數據庫查詢的方法和系統的制作方法
技術領域:
:本發明涉及查詢優化,更特別地,涉及使用查詢優化從數據倉庫檢索數據的子集。
背景技術:
:數據倉庫,特別是數據庫,是計算化的信息存儲和檢索系統。數據庫查詢指的是用于檢索存儲于數據庫中的數據的一組命令或語句。查詢可來自用戶、應用程序或遠程系統。查詢可規定從中檢索數據的數據庫中的諸如表或欄的特定位置、如何結合來自多個表的欄和特定的數據記錄包含于查詢結果組中必須滿足的條件。一般為關系數據庫的當前的結構化數據處理以由查詢語言規定的精確格式構成的查詢。例如,許多關系數據庫支持廣泛使用的結構化查詢語言(StructuredQueryLanguage(SQL))。許多諸如生命科學的依賴于數據庫的學科需要越來越復雜的數據庫和數據庫查詢。運行大的或復雜的查詢一般使用多個資源并且已成為研究和關注的主題。
發明內容本發明的實施例是針對用于優化數據庫事務的方法、系統和計算機程序產品。因此,本發明的實施例接收查詢。所述查詢規定一組謂詞,在該組謂詞中,該查詢為真(tobetrue)必須滿足的最少數量。使用對存儲于計算機可讀存儲介質中的倉庫的查詢來執行操作。呈現滿足所述最少數量的謂詞的一組結果。針對包含計算機可讀存儲介質的計算機程序產品的實施例包含用于優化數據庫事務的計算機可用代碼。實施例包含用于接收查詢的計算機可用代碼。該查詢規定提供給該查詢的一組謂詞和查詢為真要滿足的該組謂詞中的謂詞的最少數量。實施例還包括用于使用所述查詢對存儲于計算機可讀存儲介質中的倉庫執行操作的計算機可用代碼。實施例還包括用于呈現滿足所述最少數量的謂詞的一組結果的計算機可用代碼。針對用于優化數據庫事務的數據處理系統的實施例包括包含存儲介質的存儲裝置,其中,存儲裝置存儲計算機可用程序代碼、處理器,其中,處理器執行所述計算機可用程序代碼。實施例的計算機可用程序代碼包含用于接收查詢的計算機可用代碼,其中,該查詢規定提供給該查詢的一組謂詞和查詢為真要滿足的該組謂詞中的謂詞的最少數量;用于使用該查詢對存儲于計算機可讀存儲介質中的倉庫執行操作的計算機可用代碼;和用于呈現滿足所述最少數量的謂詞的一組結果的計算機可用代碼。以下,參照下面的示意圖僅以例子的方式來描述本發明的實施例,其中圖1示出從數據倉庫檢索數據的子集的方法的流程圖的示例性實施例;圖2示出用于從關系數據庫檢索數據的子集的流程圖的示例性實施例;和圖3表示用于從數據倉庫檢索數據的子集的計算機系統的示意圖的示例性實施例。具體實施例方式以下,參照根據本發明的實施例的方法、設備(系統)和計算機程序產品的流程圖和/或框圖描述本發明的各方面。可以理解,可通過計算機程序指令實現流程圖和/或框圖的每一個框以及流程圖和/或框圖的框的組合。這些計算機程序指令可被提供給通用計算機、專用計算機或其它的可編程數據處理設備的處理器,以制造機器,使得通過計算機的處理器或其它的可編程數據處理設備執行的指令產生用于實現在流程圖和/或框圖(一個或多個框)中規定的功能/動作的裝置。本發明的實施例是針對用于優化用于從數據倉庫檢索數據的子集的數據庫查詢的方法、系統和計算機程序產品。圖1表示用于從數據倉庫檢索數據的子集的流程圖100的示例性實施例。步驟Iio表示接收查詢。一旦接收到查詢,接著,在步驟120中,分析查詢以從查詢確定查詢中的謂詞的總數和執行操作所需要的謂詞的最少數量。當這些被確定完時,在步驟130中,識別使該查詢運行所針對的數據源。在步驟140中,對數據源執行查詢。在步驟150中,基于對數據源運行的查詢,檢索滿足查詢的數據子集并將其呈現給用戶。接收查詢包含接收一組謂詞和表示該組謂詞中需要為真的謂詞的最少數量的預定的閾值。在一個實施例中,有利地,該組謂詞中的各謂詞優選表示為逐位謂詞模式以生成一組逐位謂詞模式。如果需要,通過以在這里作為參考并入的相關申請中描述的實施例的方式使用該組逐位謂詞模式和多個邏輯運算符生成第二查詢。所述多個邏輯運算符包含布爾運算符。根據實施例的生成第二查詢的步驟使用謂詞的預定的閾值。使用查詢從數據倉庫檢索數據的子集。生成第二查詢還包含使用第一查詢從該組逐位謂詞模式識別一組有效的逐位模式并且使用所述多個邏輯運算符分析該組有效的逐位模式以生成邏輯逐位表達式;并且接著將邏輯逐位表達式因式分解。分析和因式分解優選使用布爾特性。然后,產生因式分解后的邏輯逐位表達式到該組謂詞中的相應的謂詞的映射,以生成邏輯謂詞表達式。通過使用邏輯謂詞表達式修改第一查詢來生成第二查詢。在一個實施例中,諸如在關系數據庫或面向對象的數據庫中,數據倉庫是結構化數據,并且,第一查詢和第二查詢均是結構化查詢語言(SQL)查詢。優選地,根據實施例的查詢包含“ATLEAST”語句和表示在該組謂詞中的那些需要為真的謂詞的最少數量的謂詞的預定的閾值。在示例性模式中,以下給出從數據倉庫檢索數據的子集的示例。數據庫查詢優化器嘗試減少謂詞的數量以優化查詢性能。但是,有時SQL查詢具有通過OR條件結合的大量的謂詞,這使得減少謂詞的數量變得困難。以下描述業務決定基于滿足一組最少的先決條件的示例性實施例對于年度獎金分配,設定準則使得滿足5個條件(即謂詞)中的至少3個的雇員有資格領取獎金。示例性謂詞如下1.1或2+的表現等級(felting)2.管理者推薦(Manager_Recom)3.業務單位利潤>3%(BU_profit)4.工資低于其級別的平均工資5.在組織中被雇用多于兩年(Current_dt_Join_dt)假定雇員數據被存儲于數據庫中,則需要寫入查詢以得到滿足先決條件的雇員記錄。這是存儲于數據庫中的數據的子集。一般地,使用SQL中的“AND”和“OR”語句的典型的組合書寫從匹配于5個條件中的至少3個的表選擇行的查詢。假定所有的數據在雇員表中是可得到的,那么典型的查詢可以如下select*fromemployeewhere((Ratingin(1,2+))and(Manager_Recom二’V)and(BU—profit>3))OR((Ratingin(1,2+))and(Manager_Recom=‘X丨)and(Salary<(selectAvg(Salary)fromemployee)))OR((Ratingin(1,2+))and(Manager_Recom='V)and(Current_dt-Join_Dt>2years))OR((Ratingin(1,2+))and(BU_profit>3)and(Salary<(selectAvg(Salary)fromemployee)))OR((Ratingin(1,2+))and(BU_profit>3)and(Current_dt-Join_Dt>2years))OR((Ratingin(1,2+))and(Salary<(selectAvg(Salary)fromemployee))and(Current—dt-Join—Dt>2years))OR((Manager_Recom='Y')and(BU—profit>3)and(Salary<(selectAvg(Salary)fromemployee)))OR((Manager_Recom='Y')and(BU_profit>3)and(Current_dt-Join_Dt>2years))OR((Manager_Recom=fYf)and(Salary<(selectAvg(Sslary)fromemployee))and(Current_dt-Join_Dt>2years))OR((BU_profit>3)and(Salary<(selectAvg(Salary)fromemployee))and(Current_dt-Join_Dt>2years))從以上的查詢可以注意到,查詢包含大量的OR語句和許多的謂詞,并且,在常規的SQL中,沒有簡易的方式來書寫這種查詢和減少這種查詢中的謂詞的數量。這種查詢書寫和處理是耗時的,并且使用大量的計算資源來執行。本發明的實施例在優化器的內部使用針對謂詞的位表示,并且有助于減少SQL中的謂詞的數量。壓縮謂詞有助于減少執行查詢的處理循環,由此提高查詢性能。示例性實施例使用很好研究的布爾特性聯合特性(a|b)C=aI(b|c)(a&b)&c=a&(b&c)分布特性:aI(b&c)=(a|b)&(a|c)a&(b|c)=(a&b)|(a&c)應當注意,邏輯“AND”被表達為“&”或“*”,并且,邏輯“OR”表達為“|”或“+”。2個表達式之間沒有任何運算符被假定為“AND”,例如,01(0+1)等同于0&說(0|1),即,0*1女(0+1)。在實施例中,關于以上的例子并且關于如何形成逐位謂詞模式,應理解以下的方面各邏輯謂詞由一組位表示。這里,這樣的一組位被稱為“逐位謂詞模式”。各組可具有相同數量的位。各逐位謂詞模式僅具有一個位0Ν。各逐位謂詞模式唯一地表示邏輯謂詞中的單個相應的邏輯謂詞。對于各逐位謂詞模式,為ON的一個位表明特定的逐位謂詞模式表示邏輯謂詞中的哪一個。作為使用很好研究的布爾代數的例子,使A、B、C、D和E表示5個邏輯表達式/謂詞。一次取3的排列將導致5P3=10種可能的排列。A,B,C;A,B,D;Α,B,E;A,C,D;A,C,E;A,D,E;B,C,D;B,C,E;B,D,E;C,D,E使用邏輯“AND”和“OR”運算符在表達式中表示所有的排列(C&D&E)I(B&D&E)|(B&C&E)|(B&C&D)(A&D&E)I(A&C&E)|(A&C&D)(A&B&C)I(A&B&D)|(A&B&E)這里,“&”表示邏輯“AND”運算符,并且,“I”表示邏輯“OR”運算符。使用布爾代數的分布特性,表達式可被表示為(C&D&E)I(B&(D&E|C&E|C&D))(A&(D&E|C&E|C&D))(A&B&(C|D|E))可進一步應用分布特性將表達式表示為(C&D&E)I(BIA)&(D&E|C&E|C&D))|(A&B&(C|D|E))該表達式是可使用在這里作為參考并入的相關公開中描述的位表示獲得的期望的結果。本發明的示例性實施例擴展當前的SQL以對于這種查詢支持新的語句"ATLEAST"oATLEAST語句的句式可以如下ATLEAST(N,predicate1,predicate2,predicate3,.....predicateK)這里,K是謂詞的總數,并且,N是要滿足的謂詞的最少數量。與具有大量OR語句的查詢相比,以上表示的這種查詢還使得書寫查詢更加簡單并且更加可讀。在示例性模式中,可以修改數據庫優化器,以支持SQL句式中的‘‘ATLEAST”語句。以上的一組謂詞的第一查詢可被書寫如下select*fromemployeewhereATLEAST(3,Ratingin(l,2+),Manager_Recom='Y',BU—profit>3,Salary<(selectAvg(Salary)fromemployee),Current—dt-Join—Dt>2years)重要的是,這里注意到,具有多個‘‘OR”語句的查詢與具有“ATLEAST”語句的第一查詢具有相同的效果;但是,“0R”語句已在數據庫技術中得到支持,而“ATLEAST”是本發明的一個實施例。根據本發明的一個實施例,數據庫優化器將改寫第一查詢并且優化查詢以生成第二查詢如下select*fromemployeewhere(BU_profit>3andSalary<(selectAvg(Salary)fromemployee)andCurrent—dt-Join—Dt>2years)OR((Ratingin(1,2+)orManager—Recom=’X')AND((Salary<(selectAvg(Salary)fromemployee)andCurrent—dt_Join—Dt>2years)Or(BU_profit>3andCurrent_dt-Join_Dt>2years)Or(BU—profit>3andSalary<(selectAvg(Salary)fromemployee))))OR(Ratingin(1,2+)andManager—Recom='Yfand(BU_profit>3orSalary<(selectAvg(Salary)fromemployee)orCurrent_dt-Join_Dt>2years))以下的例子給出以位格式表示多個謂詞的實施例的更詳細的解釋。查詢被接收,并且,示例性第一查詢如下select*fromtablewhereATLEAST(3,a=10,b=20,c=30,d=30,e=50)在另一示例性實施例中,如果僅在SQL查詢中存在2個謂詞A和B,其中的一個對于SQL檢索有效的子集需要為真,那么常規的SQL查詢將為select*fromTablelwhereAORB。根據示例性“ATLEAST”表示的該常規的SQL查詢可被改寫為select*fromTablelwhereATLEAST(1,A,B)當謂詞的數量大時,本發明的實施例將產生更好的表現。圖2表示用于從關系數據庫檢索數據的子集的總體方法的流程圖200的示例性實施例。應當注意,除了圖2屬于作為關系數據庫的數據倉庫以外,流程圖200與圖1的流程圖100類似。在步驟210中,查詢被明確地示為ATLEAST(N、Pl、P2...HO,這里,K是謂詞的總數,并且,N是要滿足的謂詞的最少數量。在步驟220中,檢查是否查詢符合已設計的新格式并且如果格式為0K,那么對相關的倉庫230運行查詢并且在步驟MO中輸出結果。圖3是可用于實現本發明的各種實施例的示例性計算機系統300的框圖。在一些實施例中,計算機系統300可被用于執行在圖1或圖2或兩個圖中描述的步驟。計算機系統300包含處理器303。應當理解,雖然圖3示出單個處理器,但是本領域技術人員將會理解,可以根據需要包含多于一個的處理器。處理器303與通信基礎結構302(例如,通信總線、跨接桿(cross-overbar)或網絡)連接,這里通信基礎結構303被配置為便于示例性計算機系統300的各種元件之間的通信。關于本示例性計算機系統描述各種軟件實施例。在讀完本說明書之后,本領域普通技術人員顯然會理解如何使用其它的計算機系統和/或計算機結構實現本發明。示例性計算機系統300可包含被配置為從通信基礎結構302(或從未示出的幀緩沖器)轉發用于在顯示單元310上顯示的圖形、文本和其它數據的顯示接口308。計算機系統300還包含可以為隨機存取存儲器(RAM)的主存儲器306,并且還可包含次存儲器312。次存儲器312可包含例如硬盤驅動器314和/或表示軟盤驅動器、磁帶驅動器、光盤驅動器等的可移動存儲驅動器316。可移動存儲驅動器316以本領域普通技術人員公知的方式從可移動存儲單元318讀取和/或向可移動存儲單元318寫入。可移動存儲單元318表示例如由可移動存儲驅動器316讀取和寫入的軟盤、磁帶、光盤等。可以理解,可移動存儲單元318包含在其中存儲計算機軟件和/或數據的計算機可用存儲介質。在示例性實施例中,次存儲器312可包含用于允許將計算機程序或其它的指令加載到計算機系統中的其它類似的裝置。這種裝置可包含例如可移動存儲單元322和接口320。它們的例子可包含程序盒子和盒子接口(諸如在視頻游戲裝置中所找到的)、可移動的存儲芯片(諸如EPROM或PR0M)及其相關的插口,以及其它可移動存儲單元322和允許從可移動存儲單元322向計算機系統300傳送軟件和數據的接口320。計算機系統300還可包含通信接口324。通信接口3M允許在計算機系統和外部裝置之間傳送軟件和數據。通信接口3M的例子可包含調制解調器、網絡接口(諸如以太網卡)、通信端口、PCMCIA插槽和卡等。并且,本發明的各方面可采取在其上體現(實施)有計算機可讀程序代碼的一個或更多個計算機可讀介質中體現的計算機程序產品的形式。圖中的流程圖和框圖示出根據本發明的各種實施例的系統、方法和計算機程序產品的可能的實現的基礎結構、功能和操作。在這一點上,流程圖或框圖中的各塊(框)可表示包含用于實現規定的邏輯功能的一個或更多個可執行指令的模塊、段或代碼的一部分。還應注意,在一些替代性實現方式中,在塊中注明的功能可以以圖示中標明的次序以外的次序發生。例如,根據所包含的功能,依次表示的兩個塊可能實際基本上被同時實現,或者,塊有時可以以相反的次序執行。還應注意,可通過執行特定的功能或動作的專用的基于硬件的系統或專用硬件和計算機指令的組合來實現框圖和/或流程圖的各塊以及框圖和/或流程圖中的塊的組合。如本領域技術人員可以理解的,本發明的多個方面可體現為系統、方法或計算機程序產品。因此,本發明的多個方面可采取完全硬件實施例、完全軟件實施例(包含固件、常駐軟件、微代碼等)或組合軟件和這里均可統稱為“電路”、“模塊”或“系統”的硬件的實施例的形式。并且,本發明的多個方面可采取在其上體現有計算機可讀程序代碼的一個或更多個計算機可讀介質中體現的計算機程序產品的形式。這些計算機程序指令還可存儲在計算機可讀介質中,這些計算機程序指令可引導計算機、其它可編程數據處理設備或其它的裝置以特定的方式起作用,使得存儲于計算機可讀介質中的指令產生包含實現在流程圖和/或框圖(一個或多個框)中規定的功能/動作的指令的制造物品。計算機程序指令還可被加載到計算機、其它可編程數據處理設備或其它裝置上,以導致在計算機、其它可編程設備或其它裝置上執行一系列的操作步驟,以產生計算機實現的過程,使得在計算機或其它的可編程設備上執行的指令提供用于實現在流程圖和/或框圖(一個或多個框)中規定的功能/動作的過程。可以利用一個或更多個計算機可讀介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或計算機可讀存儲介質。計算機可讀存儲介質可以為例如但不限于電子、磁、光、電磁、紅外或半導體系統、設備或裝置或以上的任意適當的組合。計算機可讀存儲介質的更特定的例子(非詳盡的列表)包含以下的方面具有一個或更多個導線的電氣連接部、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPR0M或閃存存儲器)、光纖、便攜式光盤只讀存儲器(CD-ROM)、光存儲裝置、磁存儲裝置或以上的任意適當的組合。在本文件的上下文中,計算機可讀存儲介質可以為可包含或存儲由指令執行系統、設備或裝置使用或與其結合使用的程序的任何可觸知介質。計算機可讀信號介質可包含具有在其中例如以基帶或載波的一部分體現的計算機可讀程序代碼的傳播的數據信號。這種傳播的信號可采取各種形式中的任意一種,包括但不限于電磁、光或它們的任意的組合。這些傳播的信號通過通信路徑(即,信道)3提供給通信接口323。計算機可讀信號介質可以是任何計算機可讀介質,其不是計算機可讀存儲介質但可通信、傳播或傳送由指令執行系統、設備或裝置使用或與其結合使用的程序。可使用包含但不限于無線、有線、光纖電纜、RF等或以上的任意適當的組合的任何適當的介質傳送在計算機可讀介質上體現的程序代碼。可以一個或更多個編程語言的任意組合書寫用于實施本發明的各方面的操作的計算機程序代碼,該語言包括諸如JaviSmalltalk或C++等的面向對象的編程語言和諸如“C”編程語言或類似的編程語言的常規的程序編輯語言。程序代碼可如下執行作為獨立的軟件封裝,完全地在用戶的計算機上、部分地在用戶的計算機上、部分地在用戶的計算機上并且部分地在遠程計算機上或者完全在遠程計算機或服務器上執行。在后一種情形中,遠程計算機可通過包含局域網絡(LAN)或廣域網絡(WAN)的任意類型的網絡與用戶的計算機連接,或者,可與外部計算機進行連接(例如,通過使用因特網服務提供商的因特網)。本發明的各種實施例的優點包含開發檢索數據倉庫的查詢的簡化。其它的實施例中的一些的其它的優點包含開發不易出錯的查詢。本發明的一些實施例的一些其它的優點包含諸如但不限于中央處理單元(CPU)的計算資源的最佳使用。雖然本發明解釋了本發明的一些特定實施例的各種優點,但是本領域技術人員根據本發明的教導可以理解,本發明的優點不限于以上提到的優點。這里使用的術語僅出于描述特定實施例的目的并不意于限制本發明。如這里所使用的,除非本文另外明確規定,否則單數形式“一個”、“一種”和“該”意于包含復數形式。還應理解,在本說明書中使用的術語“包含”和/或“包括”規定陳述的特征、整數、步驟、操作、元件和/或部件的存在,但不排除一個或更多個其它的特征、整數、步驟、操作、元件、部件和/或它們的組的存在或添加。雖然已詳細地描述了本發明的示例性實施例,但應理解,在不背離由所附的權利要求限定的本發明的精神和范圍的情況下,可以對其進行各種變化、替代和改變。可以以各特定應用期望的任何組合實現對于本發明的示例性實施例描述的變化。因此,這里描述的對于特定的應用具有特定的優點的特定的限制和/或實施例改進不需要被用于所有的應用。并且,不需要在包含關于本發明的示例性實施例描述的一個或更多個概念的方法、系統和/或設備中實現所有的限制。這里使用的術語僅出于描述特定實施例的目的,并不意于限制本發明。如這里所使用的,除非本文另外明確規定,單數形式“一個”、“一種”和“該”意于包含復數形式。還應理解,在本說明書中使用的術語“包含”和/或“包括”規定陳述的特征、整數、步驟、操作、元件和/或部件的存在,但不排除一個或更多個其它的特征、整數、步驟、操作、元件、部件和/或它們的組的存在或添加。權利要求1.一種用于優化數據庫事務的計算機實現的方法,包括接收查詢,該查詢規定(i)提供給該查詢的一組謂詞和(ii)該查詢為真要滿足的該組謂詞中的謂詞的最少數量;使用所述查詢對存儲于計算機可讀存儲介質中的倉庫來執行操作;以及呈現滿足最少數量的謂詞的一組結果。2.如利要求1所述的計算機實現的方法,其中,該查詢被構造為ATLEAST(N、PUP2、P3、...H(),其中,Pl1是被提供給該查詢的該組謂詞,并且,N是該查詢為真要滿足的謂詞的所述最少數量。3.如利要求2所述的計算機實現的方法,其中,所述一組謂詞中的謂詞PlHi各自表示為逐位謂詞模式,以形成一組逐位謂詞模式,并且,通過使用該組逐位謂詞模式生成邏輯表達式來優化該查詢。4.如利要求1所述的計算機實現的方法,其中,所述謂詞的最少數量是使該查詢運行的預定的閾值。5.如利要求1所述的計算機實現的方法,其中,該倉庫包含結構化數據。6.如利要求1所述的計算機實現的方法,其中,該查詢采取結構化查詢語言(SQL)的形式。7.一種用于優化數據庫事務的數據處理系統,所述數據處理系統包括包含存儲介質的存儲裝置,其中,所述存儲裝置存儲計算機可用程序代碼;和處理器,其中所述處理器執行所述計算機可用程序代碼,并且,所述計算機可用程序代碼包括用于接收查詢的計算機可用代碼,該查詢規定(i)提供給該查詢的一組謂詞和(ii)該查詢為真要滿足的該組謂詞中的謂詞的最少數量;用于使用所述查詢對存儲于計算機可讀存儲介質中的倉庫執行操作的計算機可用代碼;以及用于呈現滿足所述最少數量的謂詞的一組結果的計算機可用代碼。8.如權利要求7所述的數據處理系統,其中,該查詢被構造為ATLEAST(N、PI、P2、P3、...1),其中,Pl1是被提供給該查詢的一組謂詞,并且,N是查詢為真要滿足的所述謂詞的所述最少數量。9.如權利要求7所述的數據處理系統,其中,所述一組謂詞中的謂詞PlHi各自表示為逐位謂詞模式,以形成一組逐位謂詞模式,并且,通過使用該組逐位謂詞模式生成邏輯表達式來優化該查詢。10.如權利要求7所述的數據處理系統,其中,所述謂詞的最少數量是使該查詢運行的預定的閾值。11.如權利要求7所述的數據處理系統,其中,該倉庫包含結構化數據。12.如權利要求7所述的數據處理系統,其中,該查詢采取結構化查詢語言(SQL)的形式。全文摘要本發明涉及用于優化數據庫查詢的方法和系統。本發明的實施例涉及用于優化被配置為用于接收查詢的數據庫事務的方法、計算機程序產品和系統。查詢規定提供給查詢的一組謂詞和查詢為真要滿足的謂詞的最少數量。使用查詢對存儲于計算機可讀存儲介質中的倉庫執行操作。呈現滿足最少數量的謂詞的一組結果。文檔編號G06F17/30GK102479255SQ201110361039公開日2012年5月30日申請日期2011年11月15日優先權日2010年11月19日發明者S·辛格,V·M·庫爾卡尼申請人:國際商業機器公司