可以看到數(shù)據(jù)庫服務(wù)器事實上就是HP的中端PC服務(wù)器-HP DL360 G5,配置2顆4核主頻為2.66G Hz的Intel至強E5430 CPU,32GB內(nèi)存,1塊雙卡口的Infiniband網(wǎng)卡,4塊146G的本地SAS硬盤。而存儲事實上就是一臺插滿12塊本地硬盤的HP DL180 G5的PC服務(wù)器,配置為2顆4核主頻為2.66G Hz的Intel至強E5430 CPU,8 GB內(nèi)存,1塊雙卡口的Infiniband網(wǎng)卡,硬盤則為12塊300G 15000轉(zhuǎn)的SAS硬盤或者12塊1TB 7200轉(zhuǎn)的SATA硬盤。另外配置4個24口的Infiniband交換機,這4臺交換機是互為冗余配置,分別給Database Machine之間的RAC內(nèi)部互聯(lián)使用,以及用于主機和存儲的連接。當(dāng)存儲配置為SAS硬盤時,每臺存儲能夠達到1GB/S的IO吞吐量,1TB用戶可用空間(這個用戶可用空間按Oracle的說法是指存儲上面的盤經(jīng)過鏡像以后,并且排除日志文件、UNDO數(shù)據(jù)文件和TEMP臨時文件占用空間后的的可用空間,不過這個指標(biāo)應(yīng)該是根據(jù)不同數(shù)據(jù)庫的配置而異的,不具備通用的參考意義),整個機柜14臺存儲可以提供14GB/S的IO傳輸速度,14TB用戶可用空間;存儲配置為SATA硬盤時,能夠提供750MB/S的IO吞吐量,3.3TB用戶可用空間,整個機柜14臺存儲可以提供10.5GB/S的IO傳輸速度,46TB用戶可用空間。軟件部分,服務(wù)器和存儲的OS都采用Oracle Enterprise Linux 5.1,數(shù)據(jù)庫為了使用Exadata的一些特性,必須采用Oracle 11.1.0.7或者之后的版本。存儲的軟件則稱為Oracle Exadata Storage Server Software 11g。
Exadata提供的最強大的功能便是Oracle宣稱的Smart Scan的功能,這個功能Oracle能夠在存儲端直接進行SQL預(yù)處理。傳統(tǒng)上我們對Oracle數(shù)據(jù)庫進行查詢時,整個過程如下圖所示:
首先用戶執(zhí)行語句,Oracle確認該語句需要全表掃描并定位到哪些區(qū)間需要掃描,數(shù)據(jù)庫向存儲端發(fā)出把該表所有數(shù)據(jù)全部提取的請求,存儲把該表高水位下的所有數(shù)據(jù)塊全部返回給數(shù)據(jù)庫(例子中該表有1TB之多,那么就需要把1TB的數(shù)據(jù)從存儲返回給數(shù)據(jù)庫),然后數(shù)據(jù)庫再進行過濾,把用戶需要的1000行數(shù)據(jù)返回給用戶。事實上整個查詢過程用戶只需要1000行,2MB左右的數(shù)據(jù),但是由于Oracle數(shù)據(jù)庫的存儲特性,決定了Oracle需要將整張表的數(shù)據(jù)從存儲中提取出來返回數(shù)據(jù)庫端,再在數(shù)據(jù)庫端對數(shù)據(jù)進行過濾最終返回給用戶。
而在Exadata中整個處理過程如下圖所示:
用戶執(zhí)行完語句后,Oracle會將該語句轉(zhuǎn)換成一句iDB(the Intelligent Database protocol,Oracle和Exadata存儲通訊的協(xié)議,后續(xù)會詳細介紹)命令語句發(fā)送給Exadata存儲,Exadata中的每個單元智能地掃描該單元中表的數(shù)據(jù)塊并將符合SQL語句條件所需要的行和列數(shù)據(jù)過濾出來返回給數(shù)據(jù)庫,Oracle再把Exadata每個單元返回的數(shù)據(jù)匯合以后返回給用戶。由于符合條件的結(jié)果集只有2MB之多,這樣只需要從存儲端返回2MB數(shù)據(jù)給數(shù)據(jù)庫,再也不需要將1TB的全表數(shù)據(jù)返還,大大降低了存儲到數(shù)據(jù)庫的流量。由于存儲具備了SQL預(yù)處理功能,存儲到數(shù)據(jù)庫的數(shù)據(jù)流量會有大量的減少,這樣極大的減少了數(shù)據(jù)庫的負荷,數(shù)據(jù)庫的處理能力有了數(shù)量級的提升。這是 Oracle革命性的改進,之前從來沒有一個數(shù)據(jù)庫能夠在存儲底層就對數(shù)據(jù)進行過濾,而Oracle開創(chuàng)性地做到了這點!
Exadata的Smart Scan提供了行、列過濾的功能,可以在存儲級別直接提取出用戶所需的行數(shù)據(jù)和列數(shù)據(jù)。除此以外,Smart Scan還具備表連接處理功能,在存儲級別直接進行表連接處理,最終再把連接好的結(jié)果集返回給用戶。另外Smart Scan還能加快增量備份和創(chuàng)建表空間或者添加數(shù)據(jù)文件的速度。常規(guī)增量備份塊記錄變更是以一組塊為單位,而Exadata中則是以單獨的數(shù)據(jù)塊為塊變量記錄單位,這樣備份時對IO消耗的帶寬更小。而在我們創(chuàng)建表空間或者添加數(shù)據(jù)文件時,我們都需要把數(shù)據(jù)文件從存儲讀取到數(shù)據(jù)庫的內(nèi)存進行格式化處理后再寫進存儲,這樣有多大的數(shù)據(jù)文件我們就需要從存儲端讀取多大的數(shù)據(jù)到數(shù)據(jù)庫層面再寫入。而在Exadata中,Exadata只需要簡單地執(zhí)行一條iDB命令就可以將表空間創(chuàng)建好或者數(shù)據(jù)文件添加好,而不需要將數(shù)據(jù)文件讀取到數(shù)據(jù)庫里面進行格式化,大大加快了創(chuàng)建表空間或者添加數(shù)據(jù)文件的進程。
在Exadata中,每臺Storage Server稱為一個Exadata Cell。每個Exadata Cell配置一塊具有512MB緩存帶電池的RAID卡,一塊雙端口的Infiniband HCA卡,每個端口連接速度能夠達到16Gb/s。如下圖所示,一個標(biāo)準(zhǔn)的42U機柜最多可能容納18臺Exadata Cell,配置SAS硬盤的話存儲容量能夠達到65TB,如果配置SATA硬盤的話則容量為216TB。每個Exadata Cell上的HCA卡雙端口分別接到兩臺不同的Infiniband交換機上以實現(xiàn)冗余。如果需要擴容的話,那么可以添加新的標(biāo)準(zhǔn)機柜,機柜之間的連接通過Infiniband相連。Oracle號稱采用這種方式擴容以后,Exadata存儲的容量和吞吐量都能夠線性增長。
在Exadata中,存儲的管理全部通過ASM進行,再也沒有RAID的概念,所有數(shù)據(jù)的保護方式都基于ASM硬盤組的鏡像和hot swappable Disk(相當(dāng)于傳統(tǒng)存儲的hot spare磁盤的概念,防止單個硬盤的故障損壞)。ASM能夠自動均勻地將數(shù)據(jù)條帶分布不同的Exadata Cell中,使性能達到最佳。并且ASM的鏡像方案能夠訪問Exadata中的單盤或者一臺Exadata Cell的損壞而使數(shù)據(jù)不受丟失。每個Exadata Cell中的前兩塊硬盤都會劃分出一個13GB的LUN供系統(tǒng)使用,這塊空間稱為System Area,用于存放Exadata的操作系統(tǒng)、軟件及配置信息,這些信息會自動在這兩塊磁盤上進行鏡像存放,防止單點故障。除去System Area,這兩塊盤剩余的空間都可以供用戶使用。Exadata中的每塊磁盤都自動劃分為一個LUN。每塊物理硬盤稱為一個Cell Disk,每個Cell Disk可以劃分為一個或者多個Grid Disk,每個Grid Disk對應(yīng)一個ASM磁盤。劃分如下圖所示:
通常來說一個Grid Disk就對應(yīng)一個Cell Disk,不過Oracle的方案中也可以把物理硬盤性能好的那部分空間劃分為一個Cell Disk(具體怎么劃分沒有詳細的信息,一般來說每塊硬盤靠近外面扇面IO性能較好),性能較差的那部分空間劃分為另外一個Cell Disk,然后可以把性能好的Cell Disk組成一個ASM磁盤組,性能差的Cell Disk組成一個ASM磁盤組,ASM磁盤組的鏡像容災(zāi)方案可以再根據(jù)需求調(diào)整。整個方案如下圖所示:
多個Exadata Cell組成給數(shù)據(jù)庫使用的存儲集合稱為Realm,一個Realm可以供一個或者多個數(shù)據(jù)庫使用。每臺Exadata Cell的操作系統(tǒng)都是Oracle Enterprise Linux 5.1,可以供用戶以受限模式訪問,用戶只能在上面做一些維護性的操作。正如之前所說,Oracle數(shù)據(jù)庫和Exadata之間的通信協(xié)議通過iDB進行,iDB基于工業(yè)標(biāo)準(zhǔn)的RDSv3協(xié)議。iDB集成于Oracle數(shù)據(jù)庫內(nèi)核,能夠?qū)?shù)據(jù)庫的操作轉(zhuǎn)換為iDB命令傳遞至Exadata端執(zhí)行,傳輸?shù)膬?nèi)容是結(jié)果集而不是傳統(tǒng)意義上的數(shù)據(jù)塊。當(dāng)然像傳統(tǒng)存儲的傳輸協(xié)議一樣,iDB在Smart Scan無法使用的情況下,能夠直接讀寫磁盤上的數(shù)據(jù)。Exadata上的軟件包含CELLSRV(Cell Services)、MS(Management Server)和RS(Restart Server)這三個部分。其中CELLSRV是最核心的部分,提供和Oracle實例的數(shù)據(jù)傳輸接口,數(shù)據(jù)傳輸都通過CELLSRV來進行的;MS主要用于日常管理維護Exadata及監(jiān)控運行狀態(tài);RS的作用則是保障、監(jiān)控Exadata服務(wù)的正常運行,如果哪個服務(wù)沒有啟動,它將會去重啟這個服務(wù)。在OEM Grid Control中安裝插件,OEM也可以方便地管理監(jiān)控Exadata,在OEM中可以看到Exadata的配置信息、運行狀況及性能信息,非常簡單易用。
正如前面所說,一個Realm可以跟一臺傳統(tǒng)存儲一樣供多個數(shù)據(jù)庫使用,但是傳統(tǒng)存儲無法控制不同數(shù)據(jù)庫之間的IO消耗能力,有可能一個數(shù)據(jù)庫把一臺存儲的IO使用完了,導(dǎo)致使用這個存儲的其他數(shù)據(jù)庫的IO性能受到影響。而在Exadata上則可以定制IORM(IO Resource Management),方便地將一個Realm中的IO資源分配給不同的數(shù)據(jù)庫使用,比如一個Realm同時給A和B兩個數(shù)據(jù)庫使用,我們可以將40% 的IO資源給A使用,剩余60%的IO資源給B使用,方便地解決了同一存儲不同數(shù)據(jù)庫的IO需求沖突。
Exadata提供的這些強大的功能,革命性更改了Oracle數(shù)據(jù)庫和存儲之間傳輸數(shù)據(jù)的模式,使得Oracle在數(shù)據(jù)倉庫環(huán)境下性能有了極大的提升,讓我們共同期待Exadata的早日量產(chǎn)。