專(zhuān)利名稱(chēng):具有外連接的立即實(shí)體化視圖的增量維護(hù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)庫(kù)管理系統(tǒng),以及,更具體地,涉及提供實(shí)體化視圖的數(shù)據(jù)庫(kù)管理系統(tǒng),實(shí)體化視圖的增量維護(hù)以及特別地涉及含有外連接的實(shí)體化視圖的維護(hù)的系統(tǒng)和方法。
背景技術(shù):
SYBASE SQL ANYWHERE 是一種ANSI SQL順應(yīng)式的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),其設(shè)計(jì)成在各種平臺(tái)上運(yùn)行,所述平臺(tái)為從服務(wù)器類(lèi)安裝到使用Windows移動(dòng)操作系統(tǒng)的移動(dòng)裝鉻。SQLANYWHERE 是一種自我管理RDBMS,其具有高可靠性、高性能、同步功能、小封裝、以及橫跨各種32位和64位平臺(tái)的整個(gè)范圍的SQL特性。目前可用的產(chǎn)品,比如SQL ANYWHERE ,支持手動(dòng)實(shí)體化視圖。只能通過(guò)全部重新計(jì)算被刷新的手動(dòng)實(shí)體化視圖,可由任何復(fù)雜的查詢(xún)定義。然而,一些查詢(xún)優(yōu)化器,如SQLANYWHERE 優(yōu)化器,在查詢(xún)優(yōu)化期間能夠僅使用在視圖匹配過(guò)程中的某類(lèi)別的實(shí)體化視圖。雖然SQL ANYWHERE 支持用于群-選擇-項(xiàng)目-連接(GR0UP-SELECT-PR0JECT-J0IN)視圖的某實(shí)體化視圖的增量維護(hù),需要的是更普通類(lèi)別的可被增量地維護(hù)的實(shí)體化視圖。因此,需要的是用于立即實(shí)體化視圖(iMVs)的增量維護(hù)的方法和系統(tǒng)。進(jìn)一步需要的是一個(gè)RDBMS,其支持?jǐn)U展類(lèi)別的立即實(shí)體化視圖,即具有集合或沒(méi)有集合的外連接視圖。在本發(fā)明的一個(gè)實(shí)施例中,所描述的算法可以在數(shù)據(jù)庫(kù)或數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)中實(shí)施,例如但不限于SQLANYWHERE ο外連接查詢(xún)?cè)絹?lái)越頻繁地用于新系統(tǒng)和外部工具,其中,數(shù)據(jù)庫(kù)管理員(DBAs)或經(jīng)驗(yàn)豐富的數(shù)據(jù)庫(kù)開(kāi)發(fā)人員不能直接調(diào)整生成的SQL語(yǔ)句。圖1示出了這樣生成的查詢(xún)的例子。例如,對(duì)于使用外連接視圖從語(yǔ)義轉(zhuǎn)換至視圖匹配的處理外連接查詢(xún),SQLANYWHERE 優(yōu)化器具有復(fù)雜的技術(shù)。然后,有必要擴(kuò)展對(duì)具有外連接的實(shí)體化視圖的增量維護(hù)的支持,這可以加快很多使用SQLANYWHERE RDBMS的應(yīng)用。對(duì)具有外連接的立即實(shí)體化視圖的有效支持的目標(biāo)是多方面的。用于具有外連接的實(shí)體化視圖的增量維護(hù)的一些傳統(tǒng)的技術(shù)是基于連接析取范式表達(dá)。一個(gè)連接析取范式編碼一個(gè)外連接查詢(xún)作為不同連接的最小聯(lián)合的一序列。圖3中的例子顯示了與表I中定義的查詢(xún)V1的連接析取范式對(duì)應(yīng)的親子關(guān)系圖。這樣的增量維護(hù)算法包括一系列的步驟:第一步為計(jì)算和應(yīng)用主要增量(非空-導(dǎo)入元組),然后應(yīng)用二次增量(空-導(dǎo)入元組)從而刪除或插入空-導(dǎo)入增量的一組后續(xù)步驟。主要增量被保存并在二次增量的計(jì)算中重新使用。為了正確地計(jì)算空-導(dǎo)入元組,這種計(jì)算可能需要再次訪問(wèn)基數(shù)關(guān)系。這些傳統(tǒng)技術(shù)需要一個(gè)單獨(dú)的SQL語(yǔ)句來(lái)實(shí)現(xiàn)每一個(gè)所需要的步驟,它們引發(fā)低效率并需要用于解析和執(zhí)行多個(gè)SQL語(yǔ)句的資源。例如,如圖3所示的用于視圖V1(在表I中定義)的關(guān)系X2,視圖更新算法包括五個(gè)步驟:計(jì)算和應(yīng)用主要增量,并計(jì)算和應(yīng)用對(duì)應(yīng)于連接析取范式關(guān)系R1R2T1TyR1RyX1Y1Y2以及X1的四個(gè)二次增量。因此,需要方法和系統(tǒng),其通過(guò)使用用于每一個(gè)實(shí)體化外連接視圖的單一維護(hù)更新語(yǔ)句,用于具有外連接的實(shí)體化視圖的增量維護(hù)。
發(fā)明內(nèi)容
本發(fā)明包括用于優(yōu)化包括外連接和實(shí)體化視圖的查詢(xún)的系統(tǒng)、方法以及計(jì)算機(jī)程
序廣品。根據(jù)本發(fā)明的實(shí)施例,對(duì)于具有外連接的實(shí)體化視圖的增量維護(hù),提出保存?zhèn)?導(dǎo)入空側(cè)(PSNS)算法。這些算法使得對(duì)于每個(gè)實(shí)體化外連接視圖僅產(chǎn)生單個(gè)維護(hù)更新語(yǔ)句,當(dāng)更新引用基表時(shí),其將被用于增量地更新實(shí)體化視圖。因?yàn)檫@是通過(guò)RDBMS執(zhí)行的通用SQL語(yǔ)句,為了達(dá)到較好的性能,這允許應(yīng)用強(qiáng)大的優(yōu)化同時(shí)依次處理更新語(yǔ)句。第二,由于對(duì)視圖定義施加較少的限制,因?yàn)楫a(chǎn)生的SQL語(yǔ)句同時(shí)計(jì)算非-空-導(dǎo)入元組和空-導(dǎo)入元組,所以這允許立即實(shí)體化視圖的擴(kuò)展類(lèi)別被支持。第三,既然僅使用一個(gè)更新語(yǔ)句,那么在視圖更新操作過(guò)程中,不需要保存中間臨時(shí)表。與傳統(tǒng)方案相比,這還在性能方面產(chǎn)生了實(shí)質(zhì)性的改進(jìn)。結(jié)合參考附圖,下面將詳細(xì)地描述本發(fā)明進(jìn)一步的特征和優(yōu)點(diǎn),以及本發(fā)明的各個(gè)實(shí)施例的結(jié)構(gòu)和操作。應(yīng)當(dāng)注意:本發(fā)明不限于在此描述的具體實(shí)施例。這里介紹的實(shí)施例僅為說(shuō)明發(fā)明的目的?;谶@里所包括的教導(dǎo),對(duì)于本領(lǐng)域技術(shù)人員而言其他實(shí)施例也是明顯的。
并入于此并形成說(shuō)明書(shū)一部分的附圖描述本發(fā)明,以及結(jié)合說(shuō)明書(shū),進(jìn)一步用于解釋本發(fā)明的原理并使得相關(guān)領(lǐng)域的技術(shù)人員能夠制備且使用本發(fā)明。圖1提供了由對(duì)象-關(guān)系映射系統(tǒng)產(chǎn)生的生成外連接查詢(xún)的一個(gè)例子。圖2描述了按照本發(fā)明的實(shí)施例,用于視圖V1 (在表I中定義)的注釋PSNS-的標(biāo)準(zhǔn)化連接運(yùn)算符樹(shù)。圖3說(shuō)明了與視圖V1 (表I中定義)的連接-析取范式對(duì)應(yīng)的親子關(guān)系圖。圖4-6是闡釋了根據(jù)本發(fā)明的實(shí)施例的步驟的流程圖,通過(guò)該步驟,立即實(shí)體化視圖(iMVs)被增量地更新。圖7提供了一個(gè)系統(tǒng)的模塊視圖,在該系統(tǒng)中可以實(shí)施本發(fā)明。圖8和9是闡釋了根據(jù)本發(fā)明的實(shí)施例步驟的流程圖,通過(guò)該步驟,從用于具有外連接的立即實(shí)體化視圖(iMVs)的注釋PSNS-的標(biāo)準(zhǔn)化連接運(yùn)算符樹(shù)而創(chuàng)建生成的更新語(yǔ)句。圖10描述了在其中實(shí)施本發(fā)明的計(jì)算機(jī)系統(tǒng)的一個(gè)示例。將參考附圖描述本發(fā)明。在圖中,一般來(lái)說(shuō),相同的參考標(biāo)記指示相同的或功能類(lèi)似的元件。此外,一般來(lái)說(shuō),參考標(biāo)記的最左邊的數(shù)指示參考標(biāo)記第一次出現(xiàn)的圖。
具體實(shí)施例方式介紹
本發(fā)明涉及用于增量地更新具有外連接的立即實(shí)體化視圖(iMVs)的系統(tǒng)、方法、計(jì)算機(jī)程序產(chǎn)品實(shí)施例以及其組合及子組合。本發(fā)明的下面詳細(xì)描述參考了闡釋與本發(fā)明一致的示例實(shí)施例的附圖。在本發(fā)明的精神和范圍內(nèi),其它實(shí)施例是可能的,也可以對(duì)實(shí)施例進(jìn)行改進(jìn)。因此,詳細(xì)的描述并不旨在限制本發(fā)明。相反,本發(fā)明的范圍通過(guò)隨附的權(quán)利要求限定。對(duì)本領(lǐng)域的技術(shù)人員而言,如下所述,本發(fā)明能夠以軟件、硬件、固件和/或圖中闡明的實(shí)體的多種不同實(shí)施例而實(shí)施。具有實(shí)現(xiàn)本發(fā)明的硬件專(zhuān)用控制的任何實(shí)際的軟件代碼不限制本發(fā)明。因此,理解到,給定本說(shuō)明表達(dá)的詳細(xì)級(jí)別,能夠進(jìn)行實(shí)施例的改進(jìn)和變型,進(jìn)而描述本發(fā)明的操作行為。本發(fā)明涉及用于增量地更新具有外連接的立即實(shí)體化視圖(iMVs)的實(shí)施算法的系統(tǒng)、方法以及計(jì)算機(jī)程序產(chǎn)品。根據(jù)本發(fā)明的一個(gè)實(shí)施例,該算法可與支持實(shí)體化視圖的查詢(xún)優(yōu)化器整合,例如,但不限于,SQL ANYWHERE 優(yōu)化器。iMVs的更新可以使用內(nèi)部生成的觸發(fā)器獲得,一個(gè)觸發(fā)器用于在iMV中引用的每一個(gè)關(guān)系。內(nèi)部生成的觸發(fā)器包含更新語(yǔ)句,考慮到AT更新關(guān)系代表基表T的已更新的行,更新語(yǔ)句執(zhí)行對(duì)在它們的定義中引用T的iMV的更新。在一個(gè)實(shí)施例中,更新語(yǔ)句是內(nèi)部生成的SQL語(yǔ)句,SQL語(yǔ)句通過(guò)查詢(xún)優(yōu)化器處理和優(yōu)化,查詢(xún)優(yōu)化器正如充分利用存在于任何查詢(xún)優(yōu)化器中的查詢(xún)優(yōu)化技術(shù)的任何其他查詢(xún)。因此,根據(jù)一個(gè)實(shí)施例,具有外連接的iMV的增量維護(hù)能夠以類(lèi)似的方式進(jìn)行,這可以通過(guò)MERGE/INSERT/UPDATE語(yǔ)句實(shí)現(xiàn)。相關(guān)領(lǐng)域的技術(shù)人員會(huì)理解可使用其他編程語(yǔ)言,數(shù)據(jù)庫(kù)平臺(tái)和技術(shù)來(lái)實(shí)現(xiàn)這里探討的邏輯和算法。其次,考慮到使用RDBMS服務(wù)器的應(yīng)用的當(dāng)前現(xiàn)狀,施加至可以被立即維護(hù)的外連接類(lèi)別的限制必須被保持在最低限度。傳統(tǒng)的解決方案對(duì)選擇列表的內(nèi)容和施加至謂語(yǔ)的空-不相容的性能是非常限制的。通過(guò)放松空-不相容的性能限制(即,通過(guò)空-相容),在此描述的本發(fā)明的實(shí)施例改進(jìn)了傳統(tǒng)的方法。第三,外連接更新語(yǔ)句的新一代算法所需要的額外信息有效地被加入至查詢(xún)優(yōu)化器使用的外連接查詢(xún)塊的內(nèi)部表示,所述查詢(xún)優(yōu)化器,例如但不限于,SQL ANYWHERE 優(yōu)化器。這里所描述的算法PSNS O精確地實(shí)現(xiàn)了。詞匯和術(shù)語(yǔ)為了幫助理解下面的討論,下面定義的目的是說(shuō)明,而不是限制。連接:連接子句結(jié)合來(lái)自?xún)蓚€(gè)或多個(gè)表的記錄,例如,但不限于,數(shù)據(jù)庫(kù)表。如本文所用,在一個(gè)實(shí)施例中,數(shù)據(jù)庫(kù)可能是關(guān)系數(shù)據(jù)庫(kù),內(nèi)存數(shù)據(jù)庫(kù),文件系統(tǒng),一批Web服務(wù)器文檔、文件、或資源,或任何一批電子數(shù)據(jù)中的一個(gè)或多個(gè)。外連接:外連接是一種不要求在兩個(gè)連接表中的每個(gè)記錄具有匹配記錄的連接。連接表保留每個(gè)記錄,甚至在沒(méi)有其他匹配記錄存在的情況中。外連接可能是左外連接,右外連接,或全外連接,這取決于那個(gè)表保存來(lái)自(左,右,或兩者)的行。關(guān)系:關(guān)系定義為具有相同屬性(列)的一組元組(行)。關(guān)系數(shù)據(jù)庫(kù):關(guān)系數(shù)據(jù)庫(kù)是存儲(chǔ)在關(guān)系(有時(shí)稱(chēng)為表)中的數(shù)據(jù)集合。關(guān)系數(shù)據(jù)庫(kù)由IBM的E.F.Codd在1970年發(fā)明。
結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL) = SQL代表結(jié)構(gòu)化查詢(xún)語(yǔ)言。稱(chēng)為SEQUEL (結(jié)構(gòu)化英語(yǔ)查詢(xún)語(yǔ)言)的最初版本,由IBM在1970年設(shè)計(jì)。SQL-2008是用于SQL的最新標(biāo)準(zhǔn),國(guó)際標(biāo)準(zhǔn)組織在2008年公布的一份文件中陳述了該標(biāo)準(zhǔn);參看2008年七月出版的《SQL基礎(chǔ)》。模式(T):模式(T)表不關(guān)系T的所有屬性(列),模式(T) ={A1,…,A1J。元組:針對(duì)模式⑴的元組t是對(duì)模式⑴的屬性名稱(chēng)的值分配,tMa”..,an)。t[Ai]=ai,表示用于屬性Ai的元組t的值。關(guān)系T的實(shí)例是一組對(duì)模式⑴中屬性定義的元組,T= It1,..,tk}。對(duì)于就關(guān)系T1,...,Tn的模式定義的元組t,符號(hào)t[Tj表示用于關(guān)系Ti的屬性的元組t的值。符號(hào)n(t[T])表示模式(T)中的所有屬性在元組t中具有空,同時(shí),nn(t[T])表示模式⑴中的至少一個(gè)屬性是非空。另夕卜,t=(...,n(T),...,nn(R)...)表示元組t在T也是就針對(duì)n (t[T])是空,并且在R,也就是針對(duì)nn(t[R])是非空。模式(P):如在此使用,在一個(gè)實(shí)施例中,謂語(yǔ)P對(duì)由模式(P)識(shí)別的一組屬性定義。符號(hào)P(T1, T2,...,Tn,)表示引用關(guān)系T1, T2,…,Tn的一些屬性的謂語(yǔ),也就是,模式(ρ) ε"; U,模式(Ti)以及關(guān)系(P) = IT1, T2,…,Tj O 施加至元組 e T1, t2 e T2,…,tn e Tn的謂語(yǔ)P具有三個(gè)值,即假、真或未知。當(dāng)被應(yīng)用時(shí),符號(hào)P (ti,...,tn)將表示:當(dāng)謂語(yǔ)評(píng)估為假或未知時(shí),謂語(yǔ)P評(píng)估真或U1,..,tn)〈>真。外部聯(lián)合:如在此使用,在一個(gè)實(shí)施例中,兩個(gè)關(guān)系的T1和T2的術(shù)語(yǔ)外部聯(lián)合由 ) O Fj表示,以及它通過(guò)以下計(jì)算,首先對(duì)于(Schema(T1) U Schema(T2)) \Schema(Ti)中
的屬性,用Null填補(bǔ)每個(gè)關(guān)系Ti, i=l, 2的元組,然后計(jì)算結(jié)果集合的聯(lián)合。連接,反連接,左,右,和全部外連接:對(duì)于兩個(gè)關(guān)系T1和T2,連接、反連接、左,右,和全連接分別定義如下:
T= {(/;/){r £ Rj e \ ρ(ι: ) = True)
WslHftJ)!= }r|r e Λ, (3/ e /) (ρ(ι\ /) = True}
1
Λ mpir, } T= (R Μ ρ(Λ, ) T}y(R^piRtT)T) ro1
R Μ;ηΜ,Γ)Τ= T mP(HJ)R /ο
RT=W (R^mnT) W ―禮過(guò)空-導(dǎo)入元組:對(duì)于關(guān)系T的所有屬性都是空-填充或空-擴(kuò)展的元組,通過(guò)T-空-導(dǎo)入元組表示。空-導(dǎo)入元組:對(duì)于關(guān)系T的至少一個(gè)屬性不為空的元組,通過(guò)T-空-導(dǎo)入元組表不??刂圃M:如果它們基于相同模式定義,且t[A]=r[A], MA e Schema(t),其中,r[A]不是空,那么元組t控制元組r。復(fù)制元組:t和r是基于相同模式定義的元組。如果扮 € Schema(I), t[A]沒(méi)有區(qū)別于r [A],即,它們都是空或它們相等,則t是r的副本。最佳匹配運(yùn)算符:最佳匹配運(yùn)算符β定義為β (R) = Ir I r e R,通過(guò)R中的任何元組,r不受控制或是副本,以及它至少有一個(gè)非空值}。應(yīng)用到一個(gè)關(guān)系R的最佳匹配運(yùn)算符消除了由其它元組控制或是其它元組的副本的所有元組,因此β (R)沒(méi)有兩個(gè)彼此控制或是副本的元組。復(fù)制消除運(yùn)算符:δ (R)用于復(fù)制消除運(yùn)算符:δ (R) = {r|r e R, r不是R中任何一個(gè)元組的副本}。強(qiáng)謂語(yǔ):如果屬性(ρ)中的任何屬性具有空值,如果謂語(yǔ)P不評(píng)估為真,那么謂語(yǔ)P是強(qiáng)的。NS-不相容謂語(yǔ):對(duì)于T-空-導(dǎo)入的元組,如果謂語(yǔ)不評(píng)估為真,那么謂語(yǔ)P (T1,..,Tn)基于關(guān)系T e (T1,...,Τη}是NS-不相容的。NS-不相容謂語(yǔ)和強(qiáng)謂語(yǔ)之間的區(qū)別是:要求強(qiáng)謂語(yǔ)P基于模式(P)中的任何屬性是空-不相容的。例如,T.XIS NOTDISTINCT FROM R.X1AND rowid(T)IS NOT NULL不是一個(gè)強(qiáng)謂語(yǔ),但是根據(jù)NS-不相容定義:T.X可是空(NULL),但是謂語(yǔ)仍評(píng)估為真(True),其對(duì)于關(guān)系T是NS-不相容的。在我們的經(jīng)驗(yàn)中,當(dāng)其是來(lái)自圖1的查詢(xún)的情況時(shí)(例如,來(lái)自16-17,34-35行的ON謂語(yǔ)),大類(lèi)別的客戶(hù)查詢(xún)不使用強(qiáng)謂語(yǔ),甚至在ON子句中。對(duì)于某關(guān)系Ti,當(dāng)謂語(yǔ)的性能為NS-不相容是很重要的,其通過(guò)下面的關(guān)系Ti,例如PCT1,...,Ii,…,Tn),表示。邏輯運(yùn)算符樹(shù):邏輯運(yùn)算符樹(shù)是查詢(xún)的表示,其中內(nèi)部節(jié)點(diǎn)是二進(jìn)制連接,同時(shí)葉是關(guān)系。邏輯運(yùn)算符樹(shù)中的每個(gè)節(jié)點(diǎn)可具有引用來(lái)自左子樹(shù)和右子樹(shù)的關(guān)系的謂語(yǔ)。外連接查詢(xún):如在此使用,在一個(gè)實(shí)施例中,術(shù)語(yǔ)外連接查詢(xún)是包含左和全部外連接(右外連接可以轉(zhuǎn)化為左外連接)以及內(nèi)部連接的查詢(xún)。外連接查詢(xún)可以通過(guò)連接運(yùn)算符樹(shù)表征,連接運(yùn)算符樹(shù)的內(nèi)部節(jié)點(diǎn)是二進(jìn)制連接,并且葉為關(guān)系???導(dǎo)入外連接:對(duì)于類(lèi)型左外連接的連接運(yùn)算符樹(shù)的內(nèi)部連接節(jié)點(diǎn),外連接空-導(dǎo)入來(lái)自右邊的關(guān)系。對(duì)于一個(gè)全外連接節(jié)點(diǎn),外連接在其兩側(cè)均空-導(dǎo)入。請(qǐng)注意,在外連接查詢(xún)中,相同的基礎(chǔ)關(guān)系可以由多于一個(gè)的外連接空-導(dǎo)入。
直接外連接:對(duì)于通過(guò)運(yùn)算符樹(shù)表征的外連接查詢(xún)中的關(guān)系T,T的直接外連接是空-導(dǎo)入T的類(lèi)型左外連接或全外連接的第一個(gè)祖先節(jié)點(diǎn)。任何關(guān)系T能夠具有至多一個(gè)直接外連接。間接外連接:對(duì)于由運(yùn)算符樹(shù)代表的外連接查詢(xún)中的任何關(guān)系T,間接外連接是空-導(dǎo)入T但不是T的直接外連接的外連接節(jié)點(diǎn)。------------------------1IS NOT DISTINCT FROM謂語(yǔ)在ANSI SQL: 1999 中引入,并且其等同于謂語(yǔ)T.X=R.X OR (Τ.X IS NULL AND R.X IS NULL)。具有外連接的實(shí)體化視圖:其定義是一個(gè)外連接查詢(xún)的實(shí)體化視圖是具有外連接的實(shí)體化視圖,其具有和不具有集合函數(shù)。在一個(gè)實(shí)施例中,關(guān)于在視圖定義中使用的謂語(yǔ),具有外連接的增量地維護(hù)的實(shí)體化視圖被假定為具有下面的性能。外連接J的謂語(yǔ)是僅關(guān)于關(guān)系的NS-不相容謂語(yǔ),其具有直接外連接,并且該直接外連接不同于J。施加至一些外連接謂語(yǔ)上的NS-不相容性能確???導(dǎo)入漣漪效應(yīng):如果關(guān)系T是由其直接外連接空-導(dǎo)入的,那么所有其間接外連接還必須空-導(dǎo)入它們的整體空-導(dǎo)入方面。因此,通過(guò)具有空-導(dǎo)入的T的外連接查詢(xún)生成的任何元組將具有也是空-導(dǎo)入的所有相關(guān)關(guān)系。例如,對(duì)于外連接查詢(xún)
(R 1°ΨΜΙ ) Τ) f:^ZS) 上述的條件要求:只有全外連接.的謂語(yǔ)P CL S)對(duì)于關(guān)系T是NS-不相容,關(guān)系T是通過(guò)其直接左外連接R tmJ} T空-導(dǎo)入。謂語(yǔ)ip(RJ)不必要是NS-不相容的,因?yàn)闈i漪效應(yīng)不適用其他外連接
權(quán)利要求
1.用于維護(hù)立即實(shí)體化外連接視圖的計(jì)算機(jī)實(shí)施方法,其包括: 使用計(jì)算裝鉻,創(chuàng)建數(shù)據(jù)庫(kù)的基表的前映像; 通過(guò)所述計(jì)算裝鉻,對(duì)所述基表執(zhí)行更新語(yǔ)句; 通過(guò)所述計(jì)算裝鉻,創(chuàng)建所述基表的后映像,其中所述后映像指示所述基表的已更新行; 通過(guò)所述計(jì)算裝鉻,計(jì)算所述基表的增量,其中所述計(jì)算包括將所述前映像與所述后映像比較; 通過(guò)所述計(jì)算裝鉻,基于所述基表的計(jì)算增量而計(jì)算預(yù)先定義的立即實(shí)體化視圖(iMV)的視圖增量;以及 通過(guò)所述計(jì)算裝鉻,使用所述iMV的計(jì)算增量更新所述iMV從而反映所述基表的增量變化。
2.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)施方法,其中所述iMV的性能包括用于定義所述iMV的謂語(yǔ)子集的空-相容性能。
3.如權(quán)利要求2所述的計(jì)算機(jī)實(shí)施方法,其中所述謂語(yǔ)子集引用由外連接空-導(dǎo)入的關(guān)系。
4.用于在數(shù)據(jù)庫(kù)中優(yōu)化數(shù)據(jù)更新的基于計(jì)算機(jī)的系統(tǒng),其包括: 表更新模塊,其被配鉻為更新所述數(shù)據(jù)庫(kù)的基表,其中所述基表由一個(gè)或多個(gè)立即實(shí)體化視圖(iMVs)引用; 觸發(fā)器確定模塊,其被配鉻為確定是否存在用于所述基表的立即實(shí)體化視圖(iMV)觸發(fā)器; 觸發(fā)器創(chuàng)建模塊,其被配鉻為響應(yīng)由所述觸發(fā)器確定模塊產(chǎn)生的確定而創(chuàng)建iMV觸發(fā)器,所述觸發(fā)器確定模塊產(chǎn)生的確定是不存在用于基表的iMV觸發(fā)器;以及 觸發(fā)器執(zhí)行模塊,其被配鉻為執(zhí)行所述iMV觸發(fā)器,其中所述iMV觸發(fā)器的執(zhí)行更新引用所述基表的每個(gè)iMV。
5.包括具有存儲(chǔ)在其上的指令的計(jì)算機(jī)可讀介質(zhì)的制品,如果通過(guò)計(jì)算裝鉻執(zhí)行所述指令,促使所述計(jì)算裝鉻執(zhí)行操作,所述操作包括: 識(shí)別引用基表的立即實(shí)體化視圖(iMV); 生成用于每個(gè)被識(shí)別的iMV的更新語(yǔ)句,其中基于數(shù)據(jù)庫(kù)的執(zhí)行,所述更新語(yǔ)句將iMV的增量合并入對(duì)應(yīng)的識(shí)別的iMV ; 創(chuàng)建用于基表的觸發(fā)器,其中,基于所述數(shù)據(jù)庫(kù)的執(zhí)行,所述觸發(fā)器更新所述被識(shí)別的iMV從而反映基表中的變化;以及保存用于iMV更新的觸發(fā)器。
6.如權(quán)利要求5所述的制品,其中生成更新語(yǔ)句包括生成用于維護(hù)外連接視圖的更新語(yǔ)句。
7.如權(quán)利要求6所述的制品,其中通過(guò)對(duì)引用所述基表的每個(gè)iMV生成一個(gè)更新語(yǔ)句而實(shí)施所述維護(hù)。
8.如權(quán)利要求7所述的制品,其中所述基表是數(shù)據(jù)庫(kù)的基表,以及其中所述一個(gè)更新語(yǔ)句是結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL) MERGE,INSERT,UPDATE,或DELETE語(yǔ)句。
9.用于創(chuàng)建立即實(shí)體化外連接視圖的內(nèi)部表達(dá)的方法,其包括:確定先前定義的立即實(shí)體化視圖(iMV)是否引用數(shù)據(jù)庫(kù)中的基表; 響應(yīng)iMV引用基表的確定,建立標(biāo)準(zhǔn)化連接運(yùn)算符樹(shù),其中所述樹(shù)是基于iMV的定義; 確定所述樹(shù)是否滿(mǎn)足謂語(yǔ)條件; 響應(yīng)所述樹(shù)滿(mǎn)足謂語(yǔ)條件的確定,執(zhí)行所述樹(shù)的保存?zhèn)?空-導(dǎo)入側(cè)(PSNS)注釋從而創(chuàng)建被注釋的樹(shù); 確定所述被注釋的樹(shù)是否滿(mǎn)足iMV的選擇列表?xiàng)l件; 響應(yīng)被注釋的樹(shù)滿(mǎn)足所述選擇列表?xiàng)l件的確定,在來(lái)自所述被注釋的樹(shù)的基表更新后,生成用于iMV的更新語(yǔ)句。
10.如權(quán)利要求9所述的方法,其中所述數(shù)據(jù)庫(kù)是關(guān)系數(shù)據(jù)庫(kù)。
11.如權(quán)利要求10所述的方法,進(jìn)一步包括: 使用所述被注釋的樹(shù)形成iMV的內(nèi)部表示; 使所述內(nèi)部表示與關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)的查詢(xún)優(yōu)化器整合;以及 其中所述生成進(jìn)一步包括: 精確地生成用于iMV的一個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL) UPDATE語(yǔ)句,從而響應(yīng)檢測(cè)到基表被更新而被使用,其中,所述UPDATE語(yǔ)句通過(guò)下述內(nèi)容而放松了由所述iMV定義施加的限制,所述下述內(nèi)容為: 不要求用于更新非-空-導(dǎo)入元組和空-導(dǎo)入元組的中間臨時(shí)表;以及 同時(shí)計(jì)算用于更新所述iMV的非-空-導(dǎo)入元組到空-導(dǎo)入元組。
12.如權(quán)利要求10所述的方法,其中所述更新語(yǔ)句是結(jié)構(gòu)化的查詢(xún)語(yǔ)言(SQL)語(yǔ)句。
13.如權(quán)利要求10所述的方法,其中所述更新語(yǔ)句是MERGE,INSERT, UPDATE或DELETE語(yǔ)句。
14.如權(quán)利要求9所述的方法,其中所述iMV的選擇列表?xiàng)l件不要求主關(guān)鍵字。
15.如權(quán)利要求14所述的方法,其中所述iMV的選擇列表?xiàng)l件不要求用于在所述外連接視圖中引用的每個(gè)關(guān)系的主關(guān)鍵字。
16.如權(quán)利要求15所述的方法,其中所述iMV的選擇列表?xiàng)l件包括具有主關(guān)鍵字的關(guān)系的子集。
17.如權(quán)利要求16所述的方法,其中所述iMV的選擇列表?xiàng)l件包括必須具有主關(guān)鍵字的關(guān)系的子集。
18.如權(quán)利要求17所述的方法,其中所述關(guān)系的子集包括在外連接中引用為保存?zhèn)鹊年P(guān)系。
19.如權(quán)利要求9所述的方法,其中所述基表的更新是基于基表的計(jì)算增量。
20.如權(quán)利要求19所述的方法,其中基表的增量是基于基表的如映像和基表的后映像的比較而計(jì)算。
全文摘要
本發(fā)明涉及在具有外連接的實(shí)體化視圖的增量維護(hù)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)中的使用算法的方法和系統(tǒng)。針對(duì)實(shí)體化外連接視圖的類(lèi)別以及更新操作的性能,該算法實(shí)現(xiàn)了下面的目標(biāo)將對(duì)視圖選擇列表中的主關(guān)鍵字屬性的存在的要求放松至僅關(guān)系中的一些(也就是,關(guān)系引用為外連接中的保存?zhèn)?;放松對(duì)于視圖定義中使用的一些謂語(yǔ)的空-不兼容性能需求(也就是,謂語(yǔ)引用關(guān)系可以由多于一個(gè)的外連接的空-導(dǎo)入);以及對(duì)于視圖中引用的每個(gè)關(guān)系,通過(guò)對(duì)每個(gè)視圖使用一個(gè)更新語(yǔ)句(例如,MERGE,UPDATE,INSERT或DELETE)從而實(shí)施外連接視圖的維護(hù)。該算法允許具有外連接的實(shí)體化視圖的增量維護(hù)的設(shè)計(jì)和實(shí)施被結(jié)合入RDBMS。
文檔編號(hào)G06F17/30GK103168300SQ201180038929
公開(kāi)日2013年6月19日 申請(qǐng)日期2011年8月4日 優(yōu)先權(quán)日2010年8月6日
發(fā)明者阿尼什瓦拉·尼卡 申請(qǐng)人:移動(dòng)解決方案公司