使用謂詞映射器優(yōu)化查詢的制作方法【專利摘要】提供一種用于重寫查詢的計算機實現(xiàn)的方法、計算機程序產(chǎn)品和系統(tǒng)。接收包括查詢謂詞的查詢。確定所述查詢謂詞包括具有關(guān)聯(lián)的謂詞映射器的一個列。使用提供從所述一個列到另一個列的映射的所述謂詞映射器,針對所述查詢謂詞生成等效謂詞。評估具有所述等效謂詞的所述查詢的成本。響應(yīng)于確定所述查詢的所述成本是最優(yōu)的,重寫所述查詢以便使用所述等效謂詞替換所述查詢謂詞。【專利說明】使用謂詞映射器優(yōu)化查詢【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明的各實施例涉及使用謂詞映射器優(yōu)化查詢。各實施例通過獲得從生成列(generatedcolumn)到基列的逆映射而優(yōu)化某些查詢?!?br>背景技術(shù):
】[0002]關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)軟件可以使用結(jié)構(gòu)化查詢語言(SQL)接口。RDBMS使用關(guān)系技術(shù)在關(guān)系數(shù)據(jù)庫中存儲和檢索數(shù)據(jù)。關(guān)系數(shù)據(jù)庫被組織成表,這些表包括數(shù)據(jù)行和列。行可以稱為元組或記錄或行。數(shù)據(jù)庫通常具有多個表,并且每個表通常具有多個記錄和多個列。[0003]可以使用索引訪問數(shù)據(jù)庫中的表。索引是到表中的記錄的引用(例如,指針)的有序集合。索引用于使用鍵(即,記錄的一個字段或?qū)傩?,其對?yīng)于列)訪問表中的每個記錄。術(shù)語“鍵”還可以稱為“索引鍵”。如果沒有索引,則查找記錄需要掃描(例如,線性地)整個表。索引提供一種訪問表中的數(shù)據(jù)的備用技術(shù)。在構(gòu)建表之后,用戶可以創(chuàng)建針對表的索引。索引基于表的一個或多個列。[0004]查詢可以被描述為基于特定條件的對數(shù)據(jù)庫中的信息的請求。查詢通常包括一個或多個謂詞。謂詞可以被描述為表達或暗示比較運算(例如,A=3)的搜索條件的元素。[0005]關(guān)系數(shù)據(jù)庫表中的生成列用于存儲預(yù)計算值。查詢優(yōu)化器使用生成列替換查詢中與生成列的表達式等效的表達式。但是,具有數(shù)種情況,其中生成列用于存儲用戶友好格式的底層數(shù)據(jù),并且直接在應(yīng)用查詢中使用。例如,生成列可以是整數(shù)基列的O填充字符串表示。盡管整數(shù)比較快于字符串比較,但將針對O填充字符串表示執(zhí)行字符串比較?!?br/>發(fā)明內(nèi)容】[0006]提供一種用于重寫查詢的計算機實現(xiàn)的方法、計算機程序產(chǎn)品和系統(tǒng)。接收包括查詢謂詞的查詢。確定所述查詢謂詞包括具有關(guān)聯(lián)的謂詞映射器的一個列。使用提供從所述一個列到另一個列的映射的所述謂詞映射器,針對所述查詢謂詞生成等效謂詞。評估具有所述等效謂詞的所述查詢的成本。響應(yīng)于確定所述查詢的所述成本是最優(yōu)的,重寫所述查詢以便使用所述等效謂詞替換所述查詢謂詞?!緦@綀D】【附圖說明】[0007]現(xiàn)在將僅通過實例的方式參考附圖描述本發(fā)明的優(yōu)選實施例,這些附圖是:[0008]圖1以框圖示出根據(jù)某些實施例的計算環(huán)境;[0009]圖2以流程圖示出根據(jù)某些實施例的用于經(jīng)由自動檢測創(chuàng)建謂詞映射器的操作,圖2包括圖2A和2B;[0010]圖3以流程圖示出根據(jù)某些實施例的用于查詢轉(zhuǎn)換的操作,圖3包括圖3A和3B;[0011]圖4示出根據(jù)某些實施例的謂詞映射器的使用;[0012]圖5不出根據(jù)某些實施例的實例用戶標識(UID);[0013]圖6示出根據(jù)某些實施例的針對主UID表發(fā)出的實例選擇語句;[0014]圖7示出根據(jù)某些實施例的輸入查詢和優(yōu)化后的查詢;[0015]圖8示出根據(jù)某些實施例的訪問計劃比較;[0016]圖9以框圖示出根據(jù)某些實施例的可以使用的計算機體系架構(gòu)?!揪唧w實施方式】[0017]出于示例目的給出了對本發(fā)明的不同實施例的描述,但所述描述并非旨在是窮舉的或是限于所公開的實施例。在不偏離所述實施例的范圍的情況下,對于所屬【
技術(shù)領(lǐng)域:
】的普通技術(shù)人員來說許多修改和變化都將是顯而易見的。在此使用的術(shù)語的選擇,旨在最好地解釋實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的技術(shù)改進,或者使所屬【
技術(shù)領(lǐng)域:
】的其它普通技術(shù)人員能理解在此所公開的實施例。[0018]從第一方面看,本發(fā)明提供一種用于重寫查詢的方法,包括:通過計算機的處理器接收包括查詢謂詞的查詢;確定所述查詢謂詞包括具有關(guān)聯(lián)的謂詞映射器的一個列;使用提供從所述一個列到另一個列的映射的所述謂詞映射器,針對所述查詢謂詞生成等效謂詞;評估具有所述等效謂詞的所述查詢的成本;以及響應(yīng)于確定所述查詢的所述成本是最優(yōu)的,重寫所述查詢以便使用所述等效謂詞替換所述查詢謂詞。[0019]優(yōu)選地,本發(fā)明提供一種方法,其中所述列包括生成列。[0020]優(yōu)選地,本發(fā)明提供一種方法,還包括:在規(guī)則庫中查找定義所述生成列的函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。[0021]優(yōu)選地,本發(fā)明提供一種方法,還包括:確定定義所述生成列的函數(shù)可逆;使用數(shù)學(xué)方程式查找所述函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。[0022]優(yōu)選地,本發(fā)明提供一種方法,其中確定所述函數(shù)可逆進一步包括:確定所述函數(shù)是一對一的。[0023]優(yōu)選地,本發(fā)明提供一種方法,其中所述謂詞映射器包括模式對象(schemaobject),并且定義兩個或更多列之間的關(guān)系。[0024]優(yōu)選地,本發(fā)明提供一種方法,其中由用戶創(chuàng)建所述謂詞映射器。[0025]優(yōu)選地,本發(fā)明提供一種方法,其中由數(shù)據(jù)庫引擎創(chuàng)建所述謂詞映射器。[0026]從另一方面看,本發(fā)明提供一種用于重寫查詢的計算機程序產(chǎn)品,計算機程序產(chǎn)品包括:計算機可讀存儲介質(zhì),其中包含計算機可讀程序代碼,其中當由計算機的處理器執(zhí)行時,所述計算機可讀程序代碼被配置為執(zhí)行以下操作:接收包括查詢謂詞的查詢;確定所述查詢謂詞包括具有關(guān)聯(lián)的謂詞映射器的一個列;使用提供從所述一個列到另一個列的映射的所述謂詞映射器,針對所述查詢謂詞生成等效謂詞;評估具有所述等效謂詞的所述查詢的成本;以及響應(yīng)于確定所述查詢的所述成本是最優(yōu)的,重寫所述查詢以便使用所述等效謂詞替換所述查詢謂詞。[0027]優(yōu)選地,本發(fā)明提供一種計算機程序產(chǎn)品,其中所述一個列包括生成列。[0028]優(yōu)選地,本發(fā)明提供一種計算機程序產(chǎn)品,其中當由所述計算機的所述處理器執(zhí)行時,所述計算機可讀程序代碼被配置為執(zhí)行以下操作:在規(guī)則庫中查找定義所述生成列的函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。[0029]優(yōu)選地,本發(fā)明提供一種計算機程序產(chǎn)品,其中當由所述計算機的所述處理器執(zhí)行時,所述計算機可讀程序代碼被配置為執(zhí)行以下操作:確定定義所述生成列的函數(shù)可逆;使用數(shù)學(xué)方程式查找所述函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。[0030]優(yōu)選地,本發(fā)明提供一種計算機程序產(chǎn)品,其中當由所述計算機的所述處理器執(zhí)行時,用于確定所述函數(shù)可逆的計算機可讀程序代碼被配置為執(zhí)行以下操作:確定所述函數(shù)是一對一的。[0031]優(yōu)選地,本發(fā)明提供一種計算機程序產(chǎn)品,其中所述謂詞映射器包括模式對象,并且定義兩個或更多列之間的關(guān)系。[0032]優(yōu)選地,本發(fā)明提供一種計算機程序產(chǎn)品,其中由用戶創(chuàng)建所述謂詞映射器。[0033]優(yōu)選地,本發(fā)明提供一種計算機程序產(chǎn)品,其中由數(shù)據(jù)庫引擎創(chuàng)建所述謂詞映射器。[0034]從另一方面看,本發(fā)明提供一種用于重寫查詢的計算機系統(tǒng),包括:處理器;以及耦合到所述處理器的存儲設(shè)備,其中所述存儲設(shè)備具有存儲在其上的程序,并且其中所述處理器被配置為執(zhí)行程序的指令以便執(zhí)行操作,其中操作包括:接收包括查詢謂詞的查詢;確定所述查詢謂詞包括具有關(guān)聯(lián)的謂詞映射器的一個列;使用提供從所述一個列到另一個列的映射的所述謂詞映射器,針對所述查詢謂詞生成等效謂詞;評估具有所述等效謂詞的所述查詢的成本;以及響應(yīng)于確定所述查詢的所述成本是最優(yōu)的,重寫所述查詢以便使用所述等效謂詞替換所述查詢謂詞。[0035]優(yōu)選地,本發(fā)明提供一種計算機系統(tǒng),其中所述一個列包括生成列。[0036]優(yōu)選地,本發(fā)明提供一種計算機系統(tǒng),其中所述操作還包括:在規(guī)則庫中查找定義所述生成列的函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。[0037]優(yōu)選地,本發(fā)明提供一種計算機系統(tǒng),其中所述操作還包括:確定定義所述生成列的函數(shù)可逆;使用數(shù)學(xué)方程式查找所述函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。[0038]優(yōu)選地,本發(fā)明提供一種計算機系統(tǒng),其中用于確定所述函數(shù)可逆的操作進一步包括:確定所述函數(shù)是一對一的。[0039]優(yōu)選地,本發(fā)明提供一種計算機系統(tǒng),其中所述謂詞映射器包括模式對象,并且定義兩個或更多列之間的關(guān)系。[0040]優(yōu)選地,本發(fā)明提供一種計算機系統(tǒng),其中由用戶創(chuàng)建所述謂詞映射器。[0041]優(yōu)選地,本發(fā)明提供一種計算機系統(tǒng),其中由數(shù)據(jù)庫引擎創(chuàng)建所述謂詞映射器。[0042]圖1以框圖示出根據(jù)某些實施例的計算環(huán)境。服務(wù)器計算機100耦合到數(shù)據(jù)庫150和規(guī)則庫180。服務(wù)器計算機100包括數(shù)據(jù)庫管理系統(tǒng)(DBMS)110。DBMS包括數(shù)據(jù)庫引擎120、查詢優(yōu)化器130和一個或多個謂詞映射器140。所述數(shù)據(jù)庫存儲一個或多個表160和一個或多個索引170。規(guī)則庫180將函數(shù)映射到其反函數(shù)以便生成反函數(shù)。[0043]在某些實施例中,謂詞映射器140創(chuàng)建從一個列到一個或多個其它列的映射。在某些實施例中,一個列和另一個列來自同一個表。在某些其它實施例中,另一個列是生成列。在某些實施例中,一個列與另一個列之間具有關(guān)系,該關(guān)系復(fù)雜并且不能表示為生成列表達式;在這些情況下,使用諸如數(shù)據(jù)庫觸發(fā)器之類的技術(shù)封裝操作以便生成另一個列。在某些實施例中,謂詞映射器140創(chuàng)建從生成列到一個或多個其它基列的映射。查詢優(yōu)化器130利用謂詞映射器140重寫查詢。[0044]在某些實施例中,用戶創(chuàng)建謂詞映射器140以便定義從一個列到另一個列的映射。此類用戶創(chuàng)建的謂詞映射器140可用于數(shù)據(jù)庫引擎120。在某些備選實施例中,例如當查詢謂詞包括生成列時,數(shù)據(jù)庫引擎120創(chuàng)建謂詞映射器140。[0045]圖2以流程圖示出根據(jù)某些實施例的用于經(jīng)由自動檢測創(chuàng)建謂詞映射器的操作。圖2包括圖2A和2B。在創(chuàng)建表時,數(shù)據(jù)庫引擎120檢測存在生成列并且提取定義生成列的函數(shù)。規(guī)則庫180描述常用函數(shù)及其反向映射。針對每個生成列執(zhí)行圖2的處理。[0046]將智能內(nèi)置于DBMS110中,以便當用戶提供CREATETABLE語句并且CREATETABLE語句具有生成列時,數(shù)據(jù)庫引擎120嘗試生成定義該生成列的函數(shù)的反函數(shù)。這將適用于數(shù)值列,其中數(shù)學(xué)函數(shù)定義生成列。因此,數(shù)據(jù)庫引擎創(chuàng)建系統(tǒng)生成的謂詞映射器140。[0047]在圖2中,控制在方框200開始,數(shù)據(jù)庫引擎120接收具有生成列的“CREATETABLE”數(shù)據(jù)描述語言(DDL)語句。各實施例將邏輯內(nèi)置于數(shù)據(jù)庫引擎120中,以便每當用戶發(fā)出具有生成列定義的CREATETABLEDDL語句時,數(shù)據(jù)庫引擎120都嘗試查找反函數(shù)并且使用該反函數(shù)生成謂詞映射器140。[0048]作為一個實例,以下CREATETABLE語句具有生成列col2。作為自動檢測的一部分,DBMS110嘗試判定Col2和Coll之間的關(guān)系是否為一對一,并且如果是,則嘗試生成Col2的反函數(shù)并且創(chuàng)建謂詞映射器140。[0049]CREATETABLETl[0050]([0051]ColIinteger,[0052]Col2integergeneratedalwaysas(coll+10)/2)[0053])[0054]在方框202,數(shù)據(jù)庫引擎120在規(guī)則庫180中搜索定義生成列的函數(shù)fI的反函數(shù)。在某些實施例中,規(guī)則庫180存儲公知/已證明的數(shù)學(xué)函數(shù)及其反函數(shù)。如果生成列與規(guī)則庫180中的現(xiàn)有函數(shù)匹配,則可以使用來自規(guī)則庫本身的反函數(shù),而不必經(jīng)歷生成反函數(shù)的過程。完善的函數(shù)和反函數(shù)的一些實例是:[0055]函數(shù)f(X)反函數(shù)[0056]X+ay-a[0057]a-χa-y[0058]在方框204,數(shù)據(jù)庫引擎120判定是否找到函數(shù)fI的反函數(shù)。如果是,則處理從方框204(圖2A)繼續(xù)到方框210(圖2B),否則,處理繼續(xù)到方框206。[0059]在方框206,數(shù)據(jù)庫引擎120判定定義生成列的函數(shù)fl是否可逆。在某些實施例中,通過使用對判定函數(shù)fl是否為一對一的歸納做出該判定。如果函數(shù)fl可逆,則處理從方框206(圖2A)繼續(xù)到方框208(圖2B),否則,處理完成。一對一可以描述為數(shù)學(xué)術(shù)語。并非所有的函數(shù)都具有反函數(shù)。當且僅當生成列集中的每個元素對應(yīng)于基列中的唯一值時,函數(shù)才可逆。因此,在生成反函數(shù)之前,數(shù)據(jù)庫引擎120檢查定義生成列的函數(shù)是否滿足該條件。這可以使用數(shù)學(xué)歸納法確定。[0060]在方框208,數(shù)據(jù)庫引擎120使用數(shù)學(xué)方程式查找函數(shù)Π的反函數(shù)。在方框210,數(shù)據(jù)庫引擎120使用函數(shù)fl的反函數(shù)生成謂詞映射器。在方框212,數(shù)據(jù)庫引擎120存儲謂詞映射器(例如,在系統(tǒng)目錄中)。[0061]以下是可以如何針對定義生成列的函數(shù)gen_Col獲得反函數(shù)的一個實例,如下所示:[0062]gen_col=(base_col+10)/2[0063]數(shù)據(jù)庫引擎120確定函數(shù)gen_Col可逆,因為該函數(shù)是一對一的。以下偽代碼表示數(shù)據(jù)庫引擎120以數(shù)學(xué)方式查找函數(shù)gen_Col的反函數(shù)而執(zhí)行的處理:[0064]Rewritethefunct1nas:y=(x+10)/2[0065]Multiplybothsidesbythedenominator:2y=x+10[0066]BringalltermsinvolvingxtotheLeftHandSide(LHS)andother[0067]termstotheRightHandSide(RHS):x=2y-10[0068]Solvingforx:x=2y-10[0069]然后,數(shù)據(jù)庫引擎120確定函數(shù)gen_Col的反函數(shù)為:[0070](2*gen_col_10)[0071]在其中從生成列到一個或多個基列的映射包括復(fù)雜邏輯的情況下,用戶可以顯式地創(chuàng)建謂詞映射器140。在查詢轉(zhuǎn)換期間,數(shù)據(jù)庫引擎120使用該謂詞映射器進行謂詞替換。[0072]圖3以流程圖示出根據(jù)某些實施例的用于查詢轉(zhuǎn)換的操作。圖3包括圖3A和3B。在某些實施例中,圖3的操作表示要在查詢優(yōu)化的查詢重寫階段期間應(yīng)用的查詢轉(zhuǎn)換邏輯。在某些實施例中,將查詢提交到數(shù)據(jù)庫引擎120時,查詢優(yōu)化器130標識查詢中包括生成列的任何謂詞,并且嘗試通過查詢重寫優(yōu)化該查詢。[0073]在圖3中,控制在方框300開始,查詢優(yōu)化器130接收包括查詢謂詞的查詢。在方框302,查詢優(yōu)化器130判定查詢謂詞是否包括與謂詞映射器關(guān)聯(lián)的一個列。如果是,則處理繼續(xù)到方框304,否則,處理結(jié)束。所述查詢謂詞可以描述為原始查詢謂詞,并且所述一個列是原始查詢謂詞中的列。在某些實施例中,所述列是生成列,并且查詢優(yōu)化器130判定對于生成列是否存在謂詞映射器(即,查詢優(yōu)化器130檢查生成列是否具有與其關(guān)聯(lián)的謂詞映射器)。[0074]在方框304,查詢優(yōu)化器130使用提供從原始查詢謂詞中的一個列到另一個列的映射的謂詞映射器,針對查詢謂詞生成等效謂詞。在某些實施例中,查詢優(yōu)化器130生成等效謂詞,其中左手側(cè)(LHS)是基列,并且右手側(cè)(RHS)是謂詞映射器返回的值。具體地說,基于謂詞映射器中提供的細節(jié),生成使用一個或多個基列的等效謂詞。在方框306,查詢優(yōu)化器130評估使用等效謂詞的查詢的成本。從方框306(圖3A),處理繼續(xù)到方框308(圖3B)。在方框308,查詢優(yōu)化器130判定成本是否是最優(yōu)的。如果是,則處理繼續(xù)到方框310,否則,處理結(jié)束。查詢優(yōu)化器130是基于成本的(其中成本映射到運行查詢所需的時間),并且成本包括處理成本和輸入/輸出(1/0)成本。在某些實施例中,使用等效謂詞的查詢的最優(yōu)成本指以下成本:小于不使用等效謂詞的查詢(即,原始查詢)的成本。如果查詢優(yōu)化器130使用函數(shù)映射器以等效謂詞替換原始謂詞,并且具有等效謂詞的成本更小,則使用等效謂詞。[0075]在方框310,查詢優(yōu)化器130重寫查詢以便使用等效謂詞替換查詢謂詞。在方框312,數(shù)據(jù)庫引擎120執(zhí)行重寫后的查詢。[0076]查詢優(yōu)化器130和謂詞映射器140應(yīng)用于廣泛的優(yōu)化情況,包括使用更有效數(shù)據(jù)類型的比較(數(shù)值與字符串)、分解謂詞以便限制掃描范圍,以及索引使用。查詢優(yōu)化器130執(zhí)行從生成列到一個或多個基列的反向映射。因為映射反向,所以數(shù)據(jù)庫引擎120中存在嘗試將生成列隱式地映射到一個或多個基列的處理邏輯。[0077]僅為了增強理解,在此提供各種實例。[0078]在客戶情況I中,唯一ID是整數(shù)數(shù)據(jù),但唯一ID表示為使用O填充的字符串以便具有統(tǒng)一、固定長度的表示。字符串表示是基于整數(shù)值的生成列。字符串表示對于應(yīng)用/用戶而言已知并且在查詢中使用。但是,在該實例中,客戶想要在查詢處理期間使用整數(shù)列以實現(xiàn)性能優(yōu)勢。以下是具有實例查詢和重寫后的查詢的實例表“TAB1”:[0079]實例表:[0080]TAB1,其具有列uid整數(shù),并且Unique_id是varchar列,其生成為[0081]Unique_Id=Ipad(uid,6,,O,)[0082]實例查詢:[0083]select*fromtabIwhereUnique_Id=,000012011’[0084]重寫后的查詢:[0085]select*fromtabIwhereuid=12011[0086]在客戶情況2中,整數(shù)值以十六進制(“hex”)值格式使用,存儲為字符串。應(yīng)用在查詢中使用hex格式,但是整數(shù)比較產(chǎn)生更好的性能結(jié)果。以下是具有實例查詢和重寫后的查詢的實例表“TAB2”:[0087]實例表:[0088]TAB2,其具有列cid整數(shù),并且CUST_ID是varchar列,其生成為[0089]CUST_ID=hex(cid)[0090]實例查詢:[0091]select*fromtab2whereCUST_ID=Ox’94A’[0092]重寫后的查詢:[0093]select*fromtab2wherecid=2378[0094]客戶情況3是銀行實例,其中客戶的唯一賬戶標識符(ID)包括數(shù)個組成部分(例如區(qū)域代碼、分行代碼和序列號)的組合并且表示為生成列。當客戶數(shù)量非常大,并且不同區(qū)域和分行數(shù)量相比之下非常小時,將用于aCCount_id上的謂詞分解成用于各組成部分上的謂詞涉及掃描更少的頁并且提高查詢性能。以下是具有實例查詢和重寫后的查詢的實例表“TAB3”:[0095]實例表:[0096]TAB3,其具有列rcchar(2)>bcchar(3)、sIno整數(shù),并且ACC0UNT_ID是varchar列,其生成為ACC0UNT_ID=concat(rc,be,slno)[0097]實例查詢:[0098]select*fromtab3whereACC0UNT_ID=’112221234,[0099]重寫后的查詢:[0100]select*fromtab3whererc=’11,andbe=’222,andslno=1234[0101]在客戶情況4中,將基列上的復(fù)合函數(shù)的結(jié)果存儲為生成列,并且在基列上定義索引。在此,如果用戶提供具有生成列的謂詞,則各實施例使用基列并且利用在基列上定義的索引來重寫謂詞。以下是具有實例查詢和重寫后的查詢的實例表“TAB4”:[0102]實例表:[0103]TAB4,具有在其上包含索引的sales列以及生成為0.2*sales+10000的BONUS列[0104]實例查詢:[0105]select*fromtab4whereB0NUS>20000[0106]重寫后的查詢:[0107]select*fromtab4wheresales>50000[0108]謂詞映射器140可以被描述為將表中的生成列映射到一個或多個基列的新模式對象。謂詞映射器可以由數(shù)據(jù)庫引擎120生成,或者可以由用戶使用數(shù)據(jù)描述語言(DDL)語句顯式定義。謂詞映射器140可以用于定義任何列之間的關(guān)系(例如,基于生成列的關(guān)系)。[0109]某些實施例使用以下語法創(chuàng)建謂詞映射器:[0110]CREATEPREDICATEMAPPERUIDPMap[0111]FORuidTOflag,nuidONuid_master[0112]RETURNNEffRHS=[0113](substr(OLDRHS,I,I),INT(substr(0LDRHS,2,11))[0114]圖4示出根據(jù)某些實施例的謂詞映射器的使用。使用通過創(chuàng)建語句410創(chuàng)建的謂詞映射器,將原始查詢400重寫為查詢420。[0115]某些實施例使用以下語法創(chuàng)建用戶定義的謂詞映射器:[0116]CREATEPREDICATEMAPPER[0117]〈name〉[0118]F0R<src_gen_coI>[0119][T0<base_coll>,<base_col2>,<base_col3>,...][0120]0N〈table_name>[0121]RETURNNEffRHS=(funct1nl(OLDRHS),[0122][funct1n2(OLDRHS),funct1n3(OLDRHS),...]);[0123]其中:[0124]〈name〉標識謂詞映射器對象[0125]<src_gen_col>是生成列的名稱[0126]<base_coll>、〈base_col2>、〈base_col3>、...是在其上定義生成列的一個或多個基列的列表。這是可選的。如果未提供,則數(shù)據(jù)庫引擎120按照一個或多個基列的列表在生成列定義中出現(xiàn)的順序隱式地獲得該列表。[0127]<table_name>是具有生成列的表[0128]NEffRHS是將包含新謂詞的RHS值的關(guān)鍵字[0129]OLDRHS是將包含舊謂詞的RHS值的關(guān)鍵字[0130]funct1nl、funct1n2、funct1n3...是內(nèi)置或用戶定義的函數(shù)[0131]以下是創(chuàng)建客戶情況I的謂詞映射器的一個實例,其中使用內(nèi)置函數(shù)INT查找新謂詞的RHS:[0132]CREATEPREDICATEMAPPERpmaplFORunique_idONtabI[0133]RETURNNEffRHS=INT(OLDRHS)[0134]使用該謂詞映射器定義,數(shù)據(jù)庫引擎120使用謂詞uid=12210替換謂詞UniqUe_id=’000012210,。[0135]以下是創(chuàng)建客戶情況2的謂詞映射器的一個實例,其中使用用戶定義的函數(shù)hex_to_dec查找新謂詞的RHS:[0136]CREATEPREDICATEMAPPERpmap2F0Rcust_idONtab2[0137]RETURNNEffRHS=hex_to_dec(OLDRHS)[0138]使用該謂詞映射器,數(shù)據(jù)庫引擎120使用謂詞cid=9802替換謂詞Cust_id=X’264A’。[0139]以下是創(chuàng)建客戶情況3的謂詞映射器的一個實例,其中使用內(nèi)置函數(shù)substr返回值列表,每個基列一個值:[0140]CREATEPREDICATEMAPPERpmap3F0Raccount_idTOrc,[0141]be,slnoONtab3[0142]RETURNNEffRHS=(substr(OLDRHS,I,2),[0143]substr(OLDRHS,3,3),substr(OLDRHS,6,4))[0144]使用該謂詞映射器,數(shù)據(jù)庫引擎120使用謂詞rc=’11’,be=’222’以及slno=’1234’替換謂詞account_id="112221234’。[0145]某些實施例適用于用戶標識(UID),其中WD是不包括字母字符的數(shù)字(因為特定字母依賴于特定腳本/語言和文化)。在某些實施例中,針對UID使用12個十進制數(shù)字。版本號:al=O表示個體,而al=I表示實體等。如果使用2_9數(shù)字(al=2、3…9)指定UID,則具有800億個數(shù)字。UID可以是使用O填充的數(shù)字,以使a2...all具有固定長度。在某些實施例中,UID認證是具有嚴格響應(yīng)時間要求的操作。圖6示出根據(jù)某些實施例的針對主UID表610發(fā)出的實例選擇語句600。在主UID表610中,UID是varchar。圖7示出根據(jù)某些實施例的輸入查詢600和優(yōu)化后的查詢700。圖8示出根據(jù)某些實施例的訪問計劃比較。具體地說,將輸入查詢600的訪問計劃800與優(yōu)化后的查詢700的訪問計劃810相比較,以便顯示成本改善了25%。較低的成本意味著較快的查詢執(zhí)行時間。[0146]各實施例擴展SQL以便支持稱為謂詞映射器的提供從生成列到基列的映射的新模式對象。此外,使用各實施例,查詢優(yōu)化器130重寫查詢以便實現(xiàn)更好的性能。[0147]各實施例通過在數(shù)據(jù)庫中獲得逆映射來優(yōu)化查詢,方法是:擴展SQL以便創(chuàng)建稱為謂詞映射器的新模式對象,從而提供從生成列到基列的映射。各實施例接收對數(shù)據(jù)庫引擎120的查詢并判定查詢中的謂詞是否包括生成列,并且如果是,則使用基列(多個)和與該列關(guān)聯(lián)的謂詞映射器中提供的細節(jié)生成等效謂詞。各實施例評估使用等效謂詞的查詢的成本,并且在查詢重寫階段期間利用謂詞映射器以便生成備選謂詞,評估備選謂詞的成本,以及基于該成本確定性能最好的查詢執(zhí)行計劃。各實施例經(jīng)由自動檢測并基于與列關(guān)聯(lián)的反函數(shù)來生成謂詞映射器。[0148]各實施例重寫查詢以便利用生成列。各實施例使用DDL從用戶處獲得列之間的關(guān)系,并且讓查詢優(yōu)化器130使用該信息產(chǎn)生更好的查詢計劃。各實施例使得查詢處理器能夠知道在基列上使用備選但等效謂詞可以被證明更有效。[0149]所屬【
技術(shù)領(lǐng)域:
】的技術(shù)人員知道,本發(fā)明的各個方面可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,本發(fā)明的各個方面還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可讀的程序代碼。[0150]可以采用一個或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于一電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者上述的任意合適的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、固態(tài)存儲器、磁帶或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。[0151]計算機可讀的信號介質(zhì)可以包括例如在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括一但不限于一電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。[0152]計算機可讀介質(zhì)上包含的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、有線、光纜、RF等等,或者上述的任意合適的組合。[0153]可以以一種或多種程序設(shè)計語言的任意組合來編寫用于執(zhí)行本發(fā)明的各個方面的操作的計算機程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言一諸如Java、Smalltalk、C++等,還包括常規(guī)的過程式程序設(shè)計語言一諸如“C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務(wù)器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。[0154]下面將參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明實施例的各個方面。應(yīng)當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。[0155]也可以把這些計算機程序指令存儲在計算機可讀介質(zhì)中,這些指令使得計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備以特定方式工作,從而,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令的制造品(articleofmanufacture)。[0156]也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程裝置或其它設(shè)備上執(zhí)行一系列操作處理(例如,操作或步驟),以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令提供實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的過程。[0157]實現(xiàn)所述操作的代碼還可以以硬件邏輯或電路(例如,集成電路芯片、可編程門陣列(PGA)、專用集成電路(ASIC)等)實現(xiàn)。硬件邏輯可以耦合到處理器以便執(zhí)行操作。[0158]相互通信的設(shè)備不必持續(xù)地相互通信,除非另外明確指出。此外,相互通信的設(shè)備可以直接或通過一個或多個媒介間接地通信。[0159]具有若干相互通信的組件的實施例的描述并非暗示所有此類組件都是必需的。相反,描述了多種可選的組件以例示本發(fā)明的更多可能實施例。[0160]此外,盡管可以按照連續(xù)的順序來描述過程步驟、方法步驟、算法等,但是此類過程、方法和算法可以被配置為以替代順序工作。換句話說,可以描述的步驟的任何序列或順序并不一定指示要求按此順序執(zhí)行步驟??梢园纯蓪崿F(xiàn)的任何順序執(zhí)行在此描述的過程的步驟。此外,可以同時執(zhí)行某些步驟。[0161]當在此描述單個設(shè)備或物品時,將顯而易見的是,可以使用多個設(shè)備/物品(無論它們是否協(xié)作)來代替單個設(shè)備/物品。同樣,當在此描述多個設(shè)備或物品(無論它們是否協(xié)作)的情況下,將顯而易見的是,可以使用單個設(shè)備/物品來代替多個設(shè)備或物品,或者可以使用不同數(shù)量的設(shè)備/物品來代替所示數(shù)量的設(shè)備或程序。設(shè)備的功能和/或特性可以備選地由一個或多個其它未明確描述為具有此類功能/特性的設(shè)備來體現(xiàn)。因此,本發(fā)明的其它實施例不必包括設(shè)備本身。[0162]流程圖的示出的操作顯示某些事件以特定的順序發(fā)生。在各備選實施例中,某些操作可以以不同的順序被執(zhí)行、修改或刪除。此外,可以向上述邏輯添加操作并仍然符合所描述的實施例。此外,此處所述的操作可以順序地發(fā)生或者某些操作可以被并行地處理。更進一步,操作可以由單個處理單元或由分布式處理單元來執(zhí)行。[0163]在此使用的術(shù)語只是為了描述特定的實施例并且并非旨在作為本發(fā)明的限制。如在此使用的,單數(shù)形式“一”、“一個”和“該”旨在同樣包括復(fù)數(shù)形式,除非上下文明確地另有所指。還將理解,當在此說明書中使用時,術(shù)語“包括”和/或“包含”指定了聲明的特性、整數(shù)、步驟、操作、元素和/或組件的存在,但是并不排除一個或多個其它特性、整數(shù)、步驟、操作、元素、組件和/或其組合的存在或增加。[0164]術(shù)語“一個實施例”、“實施例”、“多個實施例”、“所述實施例”、“所述多個實施例”、“一個或多個實施例”、“某些實施例”和“某一實施例”指“本發(fā)明(多個)的一個或多個(但不是所有)實施例”,除非另外明確指出。[0165]術(shù)語“包含”、“包括”、“具有”及其變型指“包括但不限于”,除非另外明確指出。[0166]列舉的項目的列表并非暗示任何或所有的項目互相排斥,除非另外明確指出。[0167]下面權(quán)利要求中的對應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置或步驟的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它元件相組合地執(zhí)行該功能的結(jié)構(gòu)、材料或操作。出于示例和說明目的給出了對本發(fā)明實施例的描述,但所述描述并非旨在是窮舉的或是將本發(fā)明限于所公開的形式。在不偏離本發(fā)明的范圍和精神的情況下,對于所屬【
技術(shù)領(lǐng)域:
】的普通技術(shù)人員來說許多修改和變化都將是顯而易見的。實施例的選擇和描述是為了最優(yōu)地解釋本發(fā)明的原理和實際應(yīng)用,并且當適合于所構(gòu)想的特定使用時,使得所屬【
技術(shù)領(lǐng)域:
】的其它普通技術(shù)人員能夠理解本發(fā)明的具有各種修改的各種實施例。[0168]圖9示出根據(jù)某些實施例的可以使用的計算機體系架構(gòu)900。服務(wù)器計算機100可以實現(xiàn)計算機體系架構(gòu)900。計算機體系架構(gòu)900適合于存儲和/或執(zhí)行程序代碼,并且包括至少一個通過系統(tǒng)總線920直接或間接連接到存儲元件904的處理器902。存儲元件904可以包括在程序代碼的實際執(zhí)行期間采用的本地存儲器、大容量存儲裝置以及提供至少某些程序代碼的臨時存儲以減少必須在執(zhí)行期間從大容量存儲裝置檢索代碼的次數(shù)的高速緩沖存儲器。存儲元件904包括操作系統(tǒng)905和一個或多個計算機程序906。[0169]輸入/輸出(I/O)設(shè)備912、914(包括但不限于鍵盤、顯示器、指點設(shè)備等)可以直接或通過中間I/o控制器910與系統(tǒng)相連。[0170]網(wǎng)絡(luò)適配器908也可以被連接到系統(tǒng)以使數(shù)據(jù)處理系統(tǒng)能夠通過中間專用或公共網(wǎng)絡(luò)變得與其它數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設(shè)備相連。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡只是當前可用類型的網(wǎng)絡(luò)適配器908中的少數(shù)幾種。[0171]計算機體系架構(gòu)900可以連接到存儲裝置916(例如,任何類型的存儲設(shè)備;非易失性存儲區(qū)域,例如磁盤驅(qū)動器、光盤驅(qū)動器、磁帶驅(qū)動器等)。存儲裝置916可以包括內(nèi)部存儲設(shè)備或附加的或網(wǎng)絡(luò)可訪問存儲裝置。存儲裝置916中的計算機程序906可以加載到存儲元件904中,并且由處理器902以所屬【
技術(shù)領(lǐng)域:
】已知的方式執(zhí)行。[0172]計算機體系架構(gòu)900可以包括少于所示的組件、未在此示出的其它組件,或者所示組件和其它組件的某種組合。計算機體系架構(gòu)900可以包括所屬【
技術(shù)領(lǐng)域:
】已知的任何計算設(shè)備,例如大型機、服務(wù)器、個人計算機、工作站、膝上型計算機、手持式計算機、電話設(shè)備、網(wǎng)絡(luò)設(shè)備、虛擬化設(shè)備、存儲控制器等。[0173]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的不同實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。[0174]出于示例和說明目的給出了本發(fā)明實施例的上述描述。其并非旨在是窮舉的或?qū)嵤├抻谒_的精確形式。根據(jù)上述教導(dǎo),許多修改和變化都是可能的。其旨在實施例的范圍并非由此詳細描述來限制,而是由此后所附的權(quán)利要求來限制。以上說明、實例和數(shù)據(jù)提供了對實施例的組成部分的制造和使用的完整描述。由于可以在不偏離本發(fā)明的精神和范圍的情況下做出許多實施例,所以實施例存在于此后所附的權(quán)利要求或隨后提交的任何權(quán)利要求或其等效物之內(nèi)?!緳?quán)利要求】1.一種用于重寫查詢的方法,包括:通過計算機的處理器接收包括查詢謂詞的查詢;確定所述查詢謂詞包括具有關(guān)聯(lián)的謂詞映射器的一個列;使用提供從所述一個列到另一個列的映射的所述謂詞映射器,針對所述查詢謂詞生成等效謂詞;評估具有所述等效謂詞的所述查詢的成本;以及響應(yīng)于確定所述查詢的所述成本是最優(yōu)的,重寫所述查詢以便使用所述等效謂詞替換所述查詢謂詞。2.根據(jù)權(quán)利要求1的方法,其中所述列包括生成列。3.根據(jù)權(quán)利要求2的方法,還包括:在規(guī)則庫中查找定義所述生成列的函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。4.根據(jù)權(quán)利要求2的方法,還包括:確定定義所述生成列的函數(shù)可逆;使用數(shù)學(xué)方程式查找所述函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。5.根據(jù)權(quán)利要求4的方法,其中確定所述函數(shù)可逆進一步包括:確定所述函數(shù)是一對一的。6.根據(jù)權(quán)利要求1的方法,其中所述謂詞映射器包括模式對象,并且定義兩個或更多列之間的關(guān)系。7.根據(jù)權(quán)利要求1的方法,其中由用戶創(chuàng)建所述謂詞映射器。8.根據(jù)權(quán)利要求1的方法,其中由數(shù)據(jù)庫引擎創(chuàng)建所述謂詞映射器。9.一種用于重寫查詢的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括:計算機可讀存儲介質(zhì),其中包含計算機可讀程序代碼,其中當由計算機的處理器執(zhí)行時,所述計算機可讀程序代碼被配置為執(zhí)行以下操作:接收包括查詢謂詞的查詢;確定所述查詢謂詞包括具有關(guān)聯(lián)的謂詞映射器的一個列;使用提供從所述一個列到另一個列的映射的所述謂詞映射器,針對所述查詢謂詞生成等效謂詞;評估具有所述等效謂詞的所述查詢的成本;以及響應(yīng)于確定所述查詢的所述成本是最優(yōu)的,重寫所述查詢以便使用所述等效謂詞替換所述查詢謂詞。10.根據(jù)權(quán)利要求9的計算機程序產(chǎn)品,其中所述一個列包括生成列。11.根據(jù)權(quán)利要求10的計算機程序產(chǎn)品,其中當由所述計算機的所述處理器執(zhí)行時,所述計算機可讀程序代碼被配置為執(zhí)行以下操作:在規(guī)則庫中查找定義所述生成列的函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。12.根據(jù)權(quán)利要求10的計算機程序產(chǎn)品,其中當由所述計算機的所述處理器執(zhí)行時,所述計算機可讀程序代碼被配置為執(zhí)行以下操作:確定定義所述生成列的函數(shù)可逆;使用數(shù)學(xué)方程式查找所述函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。13.根據(jù)權(quán)利要求12的計算機程序產(chǎn)品,其中當由所述計算機的所述處理器執(zhí)行時,用于確定所述函數(shù)可逆的所述計算機可讀程序代碼被配置為執(zhí)行以下操作:確定所述函數(shù)是一對一的。14.根據(jù)權(quán)利要求9的計算機程序產(chǎn)品,其中所述謂詞映射器包括模式對象,并且定義兩個或更多列之間的關(guān)系。15.根據(jù)權(quán)利要求9的計算機程序產(chǎn)品,其中由用戶創(chuàng)建所述謂詞映射器。16.根據(jù)權(quán)利要求9的計算機程序產(chǎn)品,其中由數(shù)據(jù)庫引擎創(chuàng)建所述謂詞映射器。17.一種用于重寫查詢的計算機系統(tǒng),包括:處理器;以及耦合到所述處理器的存儲設(shè)備,其中所述存儲設(shè)備具有存儲在其上的程序,并且其中所述處理器被配置為執(zhí)行所述程序的指令以便執(zhí)行操作,其中所述操作包括:接收包括查詢謂詞的查詢;確定所述查詢謂詞包括具有關(guān)聯(lián)的謂詞映射器的一個列;使用提供從所述一個列到另一個列的映射的所述謂詞映射器,針對所述查詢謂詞生成等效謂詞;評估具有所述等效謂詞的所述查詢的成本;以及響應(yīng)于確定所述查詢的所述成本是最優(yōu)的,重寫所述查詢以便使用所述等效謂詞替換所述查詢謂詞。18.根據(jù)權(quán)利要求17的計算機系統(tǒng),其中所述一個列包括生成列。19.根據(jù)權(quán)利要求18的計算機系統(tǒng),其中所述操作還包括:在規(guī)則庫中查找定義所述生成列的函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。20.根據(jù)權(quán)利要求18的計算機系統(tǒng),其中所述操作還包括:確定定義所述生成列的函數(shù)可逆;使用數(shù)學(xué)方程式查找所述函數(shù)的反函數(shù);以及使用所述反函數(shù)創(chuàng)建所述謂詞映射器。21.根據(jù)權(quán)利要求20的計算機系統(tǒng),其中用于確定所述函數(shù)可逆的操作進一步包括:確定所述函數(shù)是一對一的。22.根據(jù)權(quán)利要求17的計算機系統(tǒng),其中所述謂詞映射器包括模式對象,并且定義兩個或更多列之間的關(guān)系。23.根據(jù)權(quán)利要求17的計算機系統(tǒng),其中由用戶創(chuàng)建所述謂詞映射器。24.根據(jù)權(quán)利要求17的計算機系統(tǒng),其中由數(shù)據(jù)庫引擎創(chuàng)建所述謂詞映射器。【文檔編號】G06F17/30GK104285222SQ201380023462【公開日】2015年1月14日申請日期:2013年5月2日優(yōu)先權(quán)日:2012年5月7日【發(fā)明者】S·辛格,R·蘇瑪申請人:國際商業(yè)機器公司