程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> Tim Vincent:DB2的技術創新與實踐

Tim Vincent:DB2的技術創新與實踐

編輯:DB2教程

Tim Vincent:大家好。我從1991年開始就做DB2的研究了,最初是做DB2數據庫的研究,這是我今年第二次來北京,我在DB2方面有不少的經驗,今天非常高興有機會跟大家介紹一下我們這個產品的架構、種類,以及我對未來的展望。

首先介紹一下DB2的結構。

在這個裡面我們要看一下這個架構裡面的一些簡單介紹。我們為什麼開發這個產品。首先介紹一下TCO,這是很重要的問題,我們開發的一些創新技術對於DB2非常重要。第二點我要談一下分區分區越來越重要,因為我們的數據越來越多,同時對於I/O管理也是非常重要的,我們怎麼樣盡量降低I/O。然後我介紹一下XML,我們為什麼開發XML呢?我們當初開發的時候是希望達到什麼樣的好處。另外我還要介紹一下我們的客戶在XML得到了什麼好處。

現在開始我給大家介紹另外一個問題。現在人們在建立越來越的數據庫,他們把很多數據放在同一個地方,希望能夠幫助他們商務流程做出及時的決定。現在需要有更多的數據倉庫的管理。他們發現工作負載發生了爆炸,所以必須要對工作負載進行管理,因為在傳統的數據庫本來可以支持傳統的工作負載,現在發展了以後出現了很多新問題,現在系統越來越復雜、數據越來越多,工作負載爆炸性的增長,怎麼樣管理工作負載變得非常重要。

下面我要介紹一下我們的一些最佳實踐,我們的壓縮,DB2融合了很多的技術,有很多的技術當中都使用了很多不同的方式。有很多工作都是我們在最佳實踐中付出的努力,最後得到了回報。這裡我給大家舉例一個壓縮技術。還有我們產品的亮點,比如說DB2 9.5,它可以利用給Linux、Unix和window,另外還有data Studio。

首先介紹一下DB2的架構。

最初1991年開始做DB2。當時有一個發展趨勢,工作系統中工作越來越多,怎麼處理越來越多的工作負荷呢?我們采用了並行的機制,我們可以支持SQL和視頻程序,我們有分區內與分區間的並行。利用SMP通過多核的架構。同時對於SQL有查詢重寫功能。在查詢內的並行,是經常在數據倉庫中需要使用的。這個技術可以使得你的查詢可以在不同計算機上實現並行。另外一些實用程序也可以支持並行,你可以使用同樣架構在不同計算機。

利用SMP,通常是指查詢內的一種並行。所以Linux和Unix中我們通常通過操作系統的線程和進程利用所有的CPU,同時我們可以使得通過並行對於SMP進行最好的使用。我們發行了一個TPCC的基准,這個基准是衡量利用效果的一個標准。(圖)對於內存的大量使用,這也是非常重要的技術就是緩沖池技術,我們會使用頁面儲存方式,它使得我們的數據和I/O能夠有一個路線圖。它可以把我們連接到儲存的頁面,在儲存的頁面上可以使用XML,後來我們也可以用以系統操作為基礎的一個文件。現在這個文件系統是可以用PPU的文件系統,同時還有一個數據庫管理工作,可以通過文件系統對於桌面進行管理,所以我們可以支持I/O、並行的I/O,還可以支持數據的分割和自動化智能分割,我們還可以做大塊的I/0。如果回到文件系統話題,我們現在更多地使用直接的I/O,它可以使得我們可以分散和收集I/O的文件系統。為什麼我們不是使用一個文件系統的緩沖,緩沖池已經夠我們做文件的緩沖區。我們可以更快地把文件拷貝到緩沖池當中去。

(圖)如果看一下我們整個的架構,我們有一個平衡的數據倉庫,它們每一個分區都有自己的資源,它們有自己的分區,不同的分區是邏輯上的,同時也有物理的特性。你在一台機器上可以進行多個不同的邏輯分區,每個分區有自己的緩沖池,有自己的邏輯的管理,還有自己的磁盤。這種技術可以避免對可伸縮性常見的限制,我們不需要進行分步式的管理或者緩沖間的一致性的諧一。所以,我們這種分區是有很好的可擴展性、可伸縮性,無論是多大TB的容量,來分區都是沒有問題的。

這裡還有一種分區,這種分區叫做“快速通信管理器”,我們有管理,還有信息流這種方面的價值。在優化方面,我們對不同的共同操作可以進行一些優化。另外這也使得它可以在跨節點運行任何東西,非常有效、非常快。我們來看客戶機這一塊,有四大類:T2、T4,JAVA J2BC我們是支持,它是PCL的,現在還有Pure它可以使SQL提升,使得你在Java方面可以很好地開發。當我談到data Studio我會給大家講怎麼樣使用Query能夠進行提升。我們在這塊會有通訊的協議。它和數據庫進行連接,並且它在連接性方面有很好的表現。在代理方面,我們支持整個運行的環境,可以在查詢和檢測內部進行一些處理。當處理這些數據的時候它們是到了緩沖池,代理從緩沖池獲取數據,然後進行計算。其中一個代理可以從磁盤裡讀取數據,我們有一個預提取器,可以提前提取數據,這樣可以得到非同步的I/O,可以得到很好的CPU性能,所以要確保I/O是不同步的。

另外我們還有一些頁面的清理器,它可以對相關的頁面進行清除。在日志系統裡面還有相關的日志記錄系統。這是80年代提出的一項技術。這是整個數據庫裡非常核心的一項重要技術。還有“時鎖檢測機”,某一個交易進行的時候,這個交易會自動鎖定,在某一方面,鎖定就會轉入日志裡面去,你在很多時候會碰到瓶頸的情況,在很多基准測試裡面,比如說有400-600萬的產品,你在鎖和日志相關來講,可以看到“時針檢測器”可以大大提升處理速度,特別對“時鎖”情況進行很好的探索。

下面我們談一些技術亮點。

從擁有總成本來看,我們和很多CIO進行了談判。CIO從各個方面來講,從成本模型來看,70%的CIO的預算是投入在人的方面,並不是在硬件方面。當我們說到TCO的時候,我們主要要減少人力成本,因為在DB2的操作方面和維護方面會加大很大的成本,所以我們需要這些技術能夠得到最大限度的利用。所以我們需要一種可以自我管理的數據庫,它們有自動平衡的資源、自動的存儲。而且我們的TCO的時間應該花在管理業務方面,而不是在管理數據方面,而且他要有更多、更高的管理技能,使它能夠進行自動的優化。

自適應自調優內存管理。它有自己的緩沖區,這對CPU來講是非常重要的,這是做優化最重要的一個方面。另外排序也是非常重要的,它可以把你目前的I/O進行排序,還有“鎖列表”,它使用的MB參數,然後進行數據內存的容量。在這個方面進行一些控制的邏輯,然後使得它可以快速的適應,重新分配的工作負載和變化。緩沖區進行自動的平衡。這樣使CPU整個的負荷進行重新的自動平衡,這樣就可以節省很大的成本。所以你必須注意到你的工作負荷的變化,不需要人工的進行調整。

下面用一些圖表給大家講解一下,Query是一個索引系統,有時候撤銷了,這個時候整個表空間就會有很大的提升,I/O就會提升,所以如果有一個自適應調優系統,系統可以自行調整,得到更高的內存性能。

我們開始引導了自調優技術的時候,開始把它用在一個比較小的系統裡面。我們工程師們在一個月、兩個月後加入了更多的系統,我們進行相同的配置,我們把它變成基准調優的配置,在一個小時整個STIM不僅得到了更優的性能,而且比以前數據好的成績還會更好,而且降低了整體的成本。

自動存儲管理,主要目標是把成本從管理數據、管理存儲轉變到對信息的管理。

分區的概念。對於數據分區中的問題,你可以分成多少個維,比如說一個典型的TP工作負載來講,你會有一個銷售,某一個地區的數據,如果在兩個索引裡進行檢索你會發現有一些問題。比如說西北區進行檢索,在這塊是非常有效的,因為在這塊你是線性檢索,如果你是用年份的檢索,年份的數據並沒有變成集群,這樣它是混亂的,如果在I/O裡進行線性操作,會有很大的負荷。怎樣解決這樣的問題呢?我們有一個多維集群技術。這是DB2裡區別於其他數據庫的很重要的一點,我們把它分成不同的盤區,在所有感興趣的維上有相同的值。這些值會進行相關的共同的存儲。你把它在這個維裡,放著相同性質或者邏輯上有聯系的群,每一個維上我們把數據進行集群。比如說區域檢索或者年份檢索的數據,我們放在一個單一的MDC的塊中,每一塊是線性的,所有和西北區相關的方面都放在MDC塊中,如果進行查詢不需要有很大的I/O,很快可以得到查詢結果,而且它是非同步的線性I/O。如果同樣查年份的話,會有這樣一種機制,可以把你整個數據進行多維集群,能夠提高很好的I/O,得到很好的效果。

我們有一些塊的技術,我們有很好的深度壓縮,同時使得你每個快的變得很小,而且每個頁面有非常快速的顯示。我們把這些技術和其他分區結合在一起,我們可以發現我們會有分布、分區、集群。首先要有一個分布,ID通過這種范圍進行分區,我們就會有一種集群,這種集群的分區使得,比如說2月份到9月份進行日期的分區,然後對它相關的、具體的地區進行分區,同時對各種不同的產品,在MDC在底部能夠進行。所以我們分成不同級別的分級,而且實現I/O很好有效率的管理。

當我們看XML的時候。最初我們開發的時候有一個決策,我們最後決定要做的是希望能夠以客戶的需求為導向,為客戶提供一整套的解決方案。XML出現的過程中,不僅是一種數據的格式,而且是一種數據的轉換格式。當時我們所做的工作是把我們所做的工作,使得客戶對於語言和編程模型知識的需求更相關。第二點,它是很容易改變的。所以我們談到商務的最優化,意思就是必須能夠非常靈活的應對商務變化,XML允許你有這樣的方式,它非常符合你的要求。所以XML使得你的成本也可以降低。我們當時在推出XML的時候,我們行業當中有其他的一些模式,我們有一個客戶當時他們想用XPML做一個數據庫,其他的數據庫要能夠利用這個數據庫,這對於XML來講是非常容易做的。所以當時我們向這個客戶推薦我們的XML,他們後來發現我們的XML非常好,所以他們開始使用我們的XML,這說明XML的性能優於其他的同類產品。

(圖)當你把一個信息輸入到XML裡面以後,我們是利用XML對它進行分級,在這之後,就可以把它變成具有等級性、具有分類的一種數據,它不再是沒有任何規律的數據。前面我們提到了緩沖池、並行機制,所以我們采用的XML是最優化的格式。其他的一些應用,比如我們把一個XML放進一個日志當中,或者把XML放在一些管理軟件的桌面上,我們這個方法不僅僅是獨特的,而且還可以提供其他同類產品所提供的所有的好處。我們這裡有XML的指數、XML的相關模型,所以你可以有一個表格,在這個表格當中,一個是常見關系表格,一個是XML的表格,你可以對它進行比較,XML可以對這個數據進行整合、核對,可以使得你在DB2當中更加方便的使用。

工作負載的管理。首先必須知道工作負載是什麼?你的工作負載是多少?然後把工作負載回饋到商務流程當中。這裡必須要對工作負載的屬性進行了解。比如業務流程當中哪些更重要、哪些不重要,首先要進行分類。然後分清楚你的工作負載是什麼。一旦定義了你的工作負載之後,你可以把工作負載分成服務類,你做一些私人的控制,服務類意思就是有一個主服務類、子分服務類,它是定位服務質量的元素,它可以對DB進行控制,同時可以使得對工作負載進行管理,這是你怎麼樣在系統當中控制資源。當你的工作負載和服務類已經確定之後就要做一個域值,這個域值是在整個數據庫資源水平上進行域值,它有三種:一是預測性、二是反應性、三是並行式。你可以對於你實際執行時間進行一個域值,可以對同時進行活動的數量進行域值,有了阈值以後你可以做兩件事情,如果超過域值可以自動停止工作,如果有錯誤查詢或者惡意查詢,可以對域值的方式對它進行限制,盡快地停止它。更加重要的是你可以對數據進行監測。然後把這個數據配給這些工作負載,使得它們之間能夠更加相配。你通常會得到一個回饋的循環,在回饋當中你可以對它們進行配置。

下面我跟大家講一下我們DB2的最佳實踐。DB2有很強大的技術能力,它是正確的技術在正確的地方使用。所以必須對正確的任務、使用正確的DB2的技術。首先DB2的開發是我們開發人員實踐者、使用者、客戶和業務伙伴的共同努力。第二是圍繞DB2端到端生命周期,我們會定義一組建議的最佳實踐,另外盡可能使最佳實踐適應業務流程。怎麼樣使用這樣一些計劃來最佳實踐呢,使得我們的業務流程得到管理和改善呢。

深度壓縮,這是我們的最佳實踐之一。說的簡單一點,比如一個表格要進行壓縮,所做的工作對這個表格進行靜態字典的控制,通常它有一個字符串,在這個字符串當中進行壓縮,我們可以把這個字符串在數據頁面進行用其他符號進行代替,從而實現壓縮。我們可以把它壓縮到緩沖區裡。壓縮過程中還要對I/O進行壓縮。壓縮技術不僅僅是在儲存方面能夠為你節省很多,在I/O方面也可以節省很多。

我們的客戶是怎麼想的。通過使用我們的IOPS,他們節省了50%。如果在I/O上能夠節省,CPU的成本也會降低。

生命周期管理。如果在數據倉庫,數據提取和輸入。怎麼樣管理新的壓縮,怎麼樣在這個環境當中進行壓縮。這都是我們所遇到的常見問題。我們現在看一下使用DB29和存儲壓縮的結果。我們通常對這個系統進行改善之後,DB2 9和行壓縮減少了40%的寫和60%的讀。所以最大的表壓縮,超過了50%。這是一個不斷波動的線條(圖),壓縮過程中有不斷的實時的最優化調整。我們在壓縮數據業務面的時候,我們把輸入到頁面的數據壓縮到20%。

倉庫壓縮結果。我們這個客戶是POC,從15.3TB壓縮到7.9TB,表壓縮率介於80%-85%之間,吞吐率提高了15%,查詢響應時間減少了23%,這是非常大的SAP客戶。

CPU的數據。系統CPU從16.5%,減至12.3%。在壓縮的時候,它的CPU的整體利用率,等待時間從23.9%減至5.7%,用戶CPU從30.7%,增至53%,響應時間大量減少了。為什麼用戶CPU增加了,因為用戶當中有更多的工作需要做,也就是說,在你同樣的工作負載下你可以做更多的工作。

總結一下最佳實踐。2008年我們提出21條實踐,現在我們已經能夠提供12條,另外還有一些最佳實踐正在被DB2的開發內化,並幫助我們確定DB2的技術方向。我們希望整個社區都能夠了解。

從產品角度來講,說到DB2 9.5的關注點是可及性、性能和TCO(降低總擁有成本),它是HA和DRK的綜合能力。其中有一個集群功能,我們還有另外一個系統可以管理這個集群管理器,這種管理是不可見的,但是可以降低管理的負擔,並且改進我們的性能。我們還有其他的備份,在故障恢復和備份的效果,可以使得你的宕機時間降到最低。你可以自動進行壓縮,自動創造字典,自動設置域值。

我們剛才談到阈值的模型,它可以防止惡意的訪問。可以節省你的內存空間。從安全角度來說,因為現在越來越需要保密,所以在這種情況下我們需要有一種身份的認證。我們有三層的安全管理設施,在這個過程中,當你建立了一個數據庫的時候,任何用戶只有一個ID、只有一個身份,只有他才有權利,不同的ID有不同范圍內的權限,如果是另外一個名字登陸,就不可能擁有他的使用范圍和權限。所以在應用和數據層之間有很好的關聯,可以使得你的身份可以從使用層到數據層,它是統一的。

另外你還可以使用一些以Lable為基礎的數據。這是非常有用的技術。從XML的角度來說我們是快速提高了XML的性能,它的事務處理性能提高了兩倍。

下面介紹一下Data Studio,這個數據工作室對於數據的生命周期進行管理和創新,可以提高整個數據生命周期所有組成部分的生產能力。在整個過程中都應當應用Data Studio,它可以使用管理和修改,同時還可以看到模式變化和控制。當我們回到前面所謂的純查詢的時候,我們的Data Studio是可以創造ID和JAVA的應用。當你使用一個查詢的時候,比如Java當中你打如一個SQL的語句,它會把不同腳本的表格和信息都調出來,這是非常重要的功能,因為它可以把數據和應用結合起來。所以在這個過程中可以把開發時間減少50%,同時促進不同功能之間的協作。

從監管角度來看你可以實時的分析,可以分析歷史數據。有了Data Studio你可以有一個圖像性的工具。在整個檢索裡面,以前沒有用,你可以把沒有用的檢索去掉,這樣可以使你的時間得到更好地使用。

未來的展望。

未來會有很好的發展,人們在進行業務的優化,很多實時的決定,我們想數據流概念可能會引起來,因為這塊在整個系統的多核的技術,SID的價格會降下來,短期來講是非常吸引人的,技術的組合對於我們整個的“數據庫的應用會有發展。業務部門會有不同的要求,他們需要管理整個產品的生命周期,所以業務的耐久性需要增加,合規性也有更高的要求,對於公司來講越來越重要。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved