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