DB2數(shù)據(jù)庫中聚集目標表的功能是什么?
以下的文章主要介紹的是聚集目標表在DB2數(shù)據(jù)庫中的關鍵作用分析,在DB2數(shù)據(jù)庫中一特殊的表是聚集目標表。這個聚集目標表是一個只讀表,它使用SQL列函數(shù),如sum通機函數(shù)或者avg求平均值函數(shù)來計算源表中的全部內(nèi)容或者追蹤源表數(shù)據(jù)的***更改。
在DB2數(shù)據(jù)庫中有一種比較特殊的表,叫做聚集目標表。這個聚集目標表是一個只讀表,它使用SQL列函數(shù),如sum通機函數(shù)或者avg求平均值函數(shù)來計算源表中的全部內(nèi)容或者追蹤源表數(shù)據(jù)的***更改。這個聚集目標表跟視圖類似,都是只讀的,是對基礎表的統(tǒng)計。
但是在本質(zhì)上是不同的,即隨著時間的推移,系統(tǒng)會向聚集目標表中追加行。也就是說,表中的數(shù)據(jù)是在DB2數(shù)據(jù)庫中實際存在的,而不是像視圖一樣是一種虛表??梢娋奂繕吮砟軌蚱鹬晥D類似的作用,但是又可能保證數(shù)據(jù)的穩(wěn)定性。
一、了解DB2數(shù)據(jù)庫中的CD表。
在分析具體目標表對DB2數(shù)據(jù)庫的作用之前,筆者認為首先需要了解一下CD表。這也是DB2數(shù)據(jù)庫中一種特有的標。聚集目標表就是在這個CD表的基礎上建立起來的。在DB2數(shù)據(jù)庫中,可以實現(xiàn)類似其他數(shù)據(jù)庫的數(shù)據(jù)復制功能。即可以在源DB2數(shù)據(jù)庫與預訂集成員之間進行數(shù)據(jù)的復制與同步,以生成數(shù)據(jù)庫副本。
有時候在預訂集成員中,可能需要追蹤數(shù)據(jù)源表的更改,此時就需要使用這個CD表。DB2的官方文檔對于CD表是這么定義的:對于為DB2數(shù)據(jù)庫服務器上的更改捕獲復制而注冊的每個用戶表,都有一個對應的更改數(shù)據(jù)表。簡單的說,這個CD表,又稱之為更改數(shù)據(jù)表,就是用來幫助數(shù)據(jù)庫管理員追蹤源表中更改的數(shù)據(jù)(包括更新、刪除、插入等等)。
某種應用程序會讀取在更改數(shù)據(jù)表中已經(jīng)遞交的行,并將他們復制到映射至已經(jīng)注冊的表的任何目標表中。對于剛接觸DB2數(shù)據(jù)庫的管理人員來說,只需要知道,這個CD表(數(shù)據(jù)更新表)中,就是用來分析、追蹤源表中用戶所做的更改。
二、聚集目標表的類型與差異分析。
在DB2數(shù)據(jù)庫中,聚集表主要有兩種類型,分別為基本聚集表與更改聚集表。這兩種表雖然都是聚集表,但是有很大的差異。作為DB2數(shù)據(jù)庫管理員必須了解他們之間的差異,并在實際工作中,根據(jù)用戶的需求來選擇合適的聚集目標表。簡單的說,這兩種目標表的差異主要在于統(tǒng)計的源表不同。而源表的數(shù)據(jù)不同,最終導致兩種聚集表的結(jié)果有天壤之別。
基本聚集表其統(tǒng)計的是數(shù)據(jù)庫的基本表中的內(nèi)容。數(shù)據(jù)庫之所以要采用基本聚集表,主要是用來定期追蹤特定表中數(shù)據(jù)的狀態(tài)。如現(xiàn)在有一張客戶信息表,表中記錄著企業(yè)當前的所有客戶信息,包括新增加的客戶、已經(jīng)終止交易的客戶等等。利用聚集目標表的sum函數(shù)或者avg函數(shù)就可以實現(xiàn)對這張表中數(shù)據(jù)的追蹤分析。
如現(xiàn)在用戶需要知道某個年度每個月份的實際有效的客戶數(shù)量,則就可以按月來計算源表中的平均行數(shù)(利用avg函數(shù)來是想)然后將結(jié)果存儲在基本聚集表中。由于基本聚集表中的數(shù)據(jù)雖然是來自于源表,但是是數(shù)據(jù)庫中實際存在的記錄。為此在下一次運算的時候,不會隨著源表中內(nèi)容的更改,而影響到原有的統(tǒng)計結(jié)果。這個特性就是聚集目標表與視圖的***差別。由于前幾個月的統(tǒng)計結(jié)果不會隨著源表中數(shù)據(jù)的更改而改變,如此的話,用戶就可以用來統(tǒng)計、分析每個月用戶數(shù)量的變化情況。
不過這個基本聚集表有一個很大的缺陷,就是不能夠反映出源表中數(shù)據(jù)的更改情況。如在7月份,企業(yè)增加了5個新客戶,但是同時也終止了5個新客戶。此時在基本聚集表中,反映的7月份有效客戶數(shù)量跟6月份是相同的。但是實際情況是,雖然***的結(jié)果是相同的,但是客戶明細發(fā)生了變化。由于基本聚集表只是對源表進行簡單的sun與avg等統(tǒng)計,所以不能夠追蹤到這些變化。這就是基本聚集表的特點,也是其***的缺陷之一。
為了彌補基本聚集表的這個缺陷,在DB2數(shù)據(jù)庫中又提出了更改聚集表的概念。更改聚集表與基本聚集表***的差異就是他們所統(tǒng)計的源表是不同的?;揪奂硭y(tǒng)計的源表是基本數(shù)據(jù)表,如客戶信息表等等。而更改聚集表所統(tǒng)計的源表是使用上面談到的CD(更改數(shù)據(jù)表)表中的內(nèi)容,而不是采用源表中的內(nèi)容。
而因為更改數(shù)據(jù)表記錄了某張源表的變更情況,所以這個更改聚集表就能夠反映出源表中數(shù)據(jù)的具體變化情況。如在上面這個例子中,用戶不僅僅只滿足與統(tǒng)計當前每月的有效客戶數(shù)量,還需要了解每個月得到的客戶數(shù)量與書去的客戶數(shù)量。因為對于企業(yè)來說,得到一個新客戶的成本很大。從某種角度來說,企業(yè)寧愿千方百計的留住現(xiàn)有的客戶,也不愿意再去開發(fā)新的客戶。也就是說,如果企業(yè)一邊在增加新的客戶,一邊又不斷的在失去老客戶,那么對于企業(yè)來說這是一種失敗的經(jīng)營方式。
為此,不少企業(yè)一方面在追求客戶的數(shù)量,另一方面可能更加的關注老客戶的流失。筆者已經(jīng)碰到過不少的企業(yè)用戶,他們非常的關注與當月客戶流失數(shù)量與新增加客戶的比例。如果新增加客戶的數(shù)量大于客戶的流失數(shù)量,那么銷售人員不僅得不到應有的獎勵,***還有可能受到懲罰。
所以從這種角度來講,這個需求就比統(tǒng)計客戶的有效數(shù)量還要來得重要。要實現(xiàn)這個需求,就需要用到更改聚集表。更改聚集表會根據(jù)客戶信息表對應的CD表,來追蹤客戶信息表中數(shù)據(jù)的變化情況。如會統(tǒng)計當月客戶信息表中新顧客增加的數(shù)量(表中有了insert插入操作)與老客戶失去的數(shù)量(表中有了刪除操作)。通過這個手段,就可以統(tǒng)計新老客戶的變化情況,從而為企業(yè)決策提供數(shù)據(jù)上的支持。
三、基本聚集表與更改聚集表相互依存。
從以上的分析中可以看出,雖然兩個類型的聚集目標表所依據(jù)的基礎表不同,他們產(chǎn)生的結(jié)果也有天壤之別,但是他們并不是對立的。從用戶的需求來講,這兩個類型的聚集目標表是相互依存的。如企業(yè)可能需用同時統(tǒng)計每個月有效客戶數(shù)量的變化情況與新老客戶的變化情況,此時就需要同時用到這兩個基本目標表。
其實筆者有時候更喜歡從另一個角度來考慮這兩個表的差異。對于基本聚集表來說,其與源表的關系比較親,即源表-基本聚集表,中間沒有任何的中介。而對于更改聚集表來說,其源表與更改聚集表之間的關系就比較遠,中介夾著一個CD數(shù)據(jù)更改表。他們的關系就變?yōu)榱嗽幢?CD數(shù)據(jù)更改表-更改聚集表。
正是因為有了CD數(shù)據(jù)更改表在中間起了一個過濾的作用,所以才導致更改聚集表與基本聚集表他們之間結(jié)果上的差異。由于CD數(shù)據(jù)更改表保存了源表中的數(shù)據(jù)的變化情況,才使得更改聚集表能夠統(tǒng)計分析出源表中數(shù)據(jù)的變化情況。所以,我們可以把基本聚集表當作是兩層結(jié)構,而將更改聚集表當作是三層結(jié)構。
從而可能更加容易理解這兩個類型的聚集目標中的差異。在實際工作中,也更容易選擇。在何時的情況下,選擇使用合適的聚集目標表。不過在開發(fā)一些套裝軟件中,筆者喜歡同時使用他們。最終讓用戶選擇到底使用哪個聚集目標表。以上的相關內(nèi)容就是對聚集目標表在DB2數(shù)據(jù)庫中的關鍵作用分析的介紹,望你能有所收獲。
【編輯推薦】
- DB2數(shù)據(jù)庫物化視圖之MQT物化查詢表的使用
- 實現(xiàn)DB2執(zhí)行計劃的更新并不難!
- 對DB2數(shù)據(jù)庫所支持的外部文件格式的梳理
- DB2數(shù)據(jù)庫備份是否成功的正確驗證
- db2建立database Partition很簡單!