逆流而上,獨(dú)辟蹊徑的Oracle Exadata數(shù)據(jù)庫(kù)
在去IOE的時(shí)代,一起聊聊Oracle Exadata貌似有些不明智。在各種“免費(fèi)”,“開源”,"Scale Out",“大數(shù)據(jù)”等喧囂中,走進(jìn)另類一種技術(shù)創(chuàng)新的世界,回溯一下過去10多年的互聯(lián)網(wǎng)經(jīng)歷,還是有些點(diǎn)滴的感悟。
Oracle是一個(gè)偉大的公司,它能把很多企業(yè)服務(wù)產(chǎn)業(yè)格局想透,并且鯊魚般的執(zhí)行起來(lái),每次巨額吞都會(huì)有整合陣痛后的歡愉,包括PeopleSoft,WebLogic, Sun等等。不管技術(shù)發(fā)展成這樣,有3個(gè)方面是企業(yè)軟件永遠(yuǎn)需要的: 更快,更好用,性價(jià)比更高;Oracle Exadata就是這么一個(gè)戰(zhàn)略性的產(chǎn)品。
剛剛得知HPE把非核心的獨(dú)立軟件部門和Micro Focus合并成新公司,估值88億美元,HPE占股50%,其中就包括大數(shù)據(jù)分析軟件Vertica。職業(yè)經(jīng)理人真的會(huì)讓公司缺少信仰和執(zhí)行力,總是學(xué)著跳舞的大象,“靈巧”躲避市場(chǎng)的風(fēng)險(xiǎn)。
為什么今天聊這個(gè)話題,這也是我自己對(duì)于"Scale out everything"(谷歌的魔咒)和“開源”一些反思。多年以來(lái),我也一直相信使用大量便宜的硬件,搭建一套牛逼的高性能分布式軟件系統(tǒng)是一種美德和必然。Software defined everyting。現(xiàn)在,回顧這個(gè)問題,自己才真正想清楚:解決業(yè)務(wù)的問題是王道,不管是Scale out 還是Scale Up,不管是Software 還是 Hardware。
舉一個(gè)Scale up例子,Stackoverflow.com的流量世界排名第56(Alexa排名),相當(dāng)于搜狐(76名)和京東(64名),但這家公司只使用了24臺(tái)機(jī)器,包括4臺(tái)內(nèi)存768G的數(shù)據(jù)庫(kù)服務(wù)器,技術(shù)有部分使用老舊的.NET,“夠用就好”是他們CTO給出的答案。
過去多年,我從事互聯(lián)網(wǎng)搜索引擎的研發(fā)項(xiàng)目,其中Index Serve需要將全部網(wǎng)頁(yè)的索引都裝進(jìn)去,需要大量機(jī)器資源,特別是內(nèi)存資源。那時(shí)候,經(jīng)過各種成本權(quán)衡之后,購(gòu)買高配置的硬件往往能夠節(jié)省整體費(fèi)用: 高配置硬件內(nèi)存更大,性能更好,需要更少的機(jī)器,更少的電費(fèi)(電費(fèi)是數(shù)據(jù)中心重要成本)。而且,每隔幾年,就要更新一遍這些高端的機(jī)器,因?yàn)樾聶C(jī)器的配置更高,效率更高,更加省電。長(zhǎng)期使用高端配置和利用***硬件創(chuàng)新,卻成為一個(gè)重要成本節(jié)省的方法,說起來(lái)這很有趣,確實(shí)一個(gè)可計(jì)算推演的事實(shí)。搜索引擎的系統(tǒng)開發(fā)難度,就是需要對(duì)***軟硬件的融合開發(fā)。
更新的硬件(網(wǎng)絡(luò),CPU,存儲(chǔ),顯卡,虛擬化等)=》適配的系統(tǒng)和軟件
另外一個(gè)隨想,是關(guān)于Hadoop的MapReduce效率;經(jīng)常使用Hadoop MR/Hive的同學(xué),應(yīng)該都有過經(jīng)歷:一個(gè)簡(jiǎn)單查詢,有時(shí)候M/R執(zhí)行起來(lái),執(zhí)行慢的要命,這是一種“不必要的痛苦和可笑的低效成本”。有時(shí)候恨不得把所有數(shù)據(jù)拷貝出來(lái),自己寫一個(gè)Java程序搞定的。這有時(shí)候,往往會(huì)想起數(shù)據(jù)庫(kù)的高效率,每個(gè)SQL都能是可期待的執(zhí)行時(shí)間。與其在海量低熵值的數(shù)據(jù)中找豆子,不如把關(guān)心的數(shù)據(jù)整理好放到一個(gè)數(shù)據(jù)庫(kù)里,進(jìn)行高效簡(jiǎn)單查詢。
好了,啰嗦這么多,回到正題,今天學(xué)習(xí)一下“軟硬件一體”的Oracle Exadata。它是一個(gè)軟硬件一體的解決方案,把數(shù)據(jù)庫(kù),存儲(chǔ)的軟硬件都一起打包解決了,支持OLTP和數(shù)據(jù)倉(cāng)庫(kù)(Data Warehousing)的應(yīng)用,它有一個(gè)優(yōu)勢(shì)就是可以自主的使用各種高性能硬件解決各個(gè)模塊間的瓶頸,也可以使用軟件解決效率問題。這個(gè)產(chǎn)品線從2008年開始,以每12-18個(gè)月升級(jí)一次,今年發(fā)布的叫做X6。
這個(gè)數(shù)據(jù)庫(kù)的定位,實(shí)際上是處理TB級(jí)別的高可靠交易數(shù)據(jù),同時(shí)支持?jǐn)?shù)據(jù)倉(cāng)庫(kù)和分析功能。
(估計(jì)大部分?jǐn)?shù)據(jù)庫(kù),你都熟悉。故意放了一個(gè)“ClickHouse",你未必知道,這是俄羅斯互聯(lián)網(wǎng)巨擘Yandex剛剛開源的分析數(shù)據(jù),兇猛無(wú)比,有興趣可以看看相關(guān)介紹文章,大部分是俄文的 :) )
1.硬件外觀
既然是硬件,先看看顏值,Oracle Exadata的外觀一看就是Sun的作品,工程師范十足,沒全沒有藝術(shù)元素,標(biāo)標(biāo)準(zhǔn)準(zhǔn)老老實(shí)實(shí)的Rack,兼容行業(yè)標(biāo)準(zhǔn)的。對(duì)比IBM的Mainframe Z13,IBM的工業(yè)設(shè)計(jì)還是完勝Oracle啊,當(dāng)然價(jià)格要比Exadata要高一些。
2.整體架構(gòu)
Oracle Exadata 整體架構(gòu)如下,數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)處理,分別有數(shù)據(jù)存儲(chǔ)服務(wù)(軟件+硬件),數(shù)據(jù)庫(kù)服務(wù)(軟件+硬件),之間由高速網(wǎng)絡(luò)(InfiniBand連接。
下圖是一些組件詳圖,藍(lán)色為硬件部分,紅色為軟件部分;
DBRM(Database Resource Mgn): 數(shù)據(jù)庫(kù)資源管理
ASM(Automatic Storage Mgn):自動(dòng)存儲(chǔ)管理,用于管理CellSrv;
OEL(Oracle Enterprise Linux):Oracle定制的Linux
CellSRV:用于管理存儲(chǔ)的專用軟件服務(wù)
IORM(I/O Resource Manager):I/O資源管理
3.硬件創(chuàng)新
a)InfiniBand網(wǎng)絡(luò)
InfiniBand并非通用的網(wǎng)絡(luò)協(xié)議,而是專門用于服務(wù)器之間通信的底層數(shù)據(jù)通信協(xié)議,它有兩個(gè)特點(diǎn):貴且快(菊與刀)。***的Oracle Exadata采用***的InfiniBand,速度可以達(dá)到40Gb/s。雖然,現(xiàn)在有很多千兆以太網(wǎng)協(xié)議,有些網(wǎng)卡甚至支持10Gb/s或更高,但是在服務(wù)器之間的數(shù)據(jù)傳輸場(chǎng)景下,InfiniBand有絕對(duì)的優(yōu)勢(shì)。有些公司也在嘗試使用InfiniBand在Hadoop集群中,但是貌似兩種東西的氣質(zhì)不符,很難融合在一起。另外一個(gè)特點(diǎn)是稀貴,這個(gè)很好理解,一個(gè)網(wǎng)線200元(是美金),一個(gè)交換機(jī)也要上萬(wàn)元(也是美金)。
InfiniBand用于Exadata中,數(shù)據(jù)庫(kù)服務(wù)器和存儲(chǔ)服務(wù)器(也包括CPU處理能力)之間的通信,是非常成功的一個(gè)應(yīng)用 。
b) 高性能閃存卡
Oracle Exadata 使用了Oracle Flash Accelerator F320 PCIe Card(Oracle越來(lái)越硬了),這個(gè)閃存加速卡使用PCIe接口,采用3D V-Nand技術(shù),這是三星公司SSD的獨(dú)門絕技,閃存單元更加高密度,容量更大。這個(gè)加速卡單卡容量為3.2T,一個(gè)Rack最多8個(gè)閃存加速卡,容量能到25.6T。
4.軟件創(chuàng)新
a) Smart Scan(智能掃描)
這是一個(gè)Common Sense的創(chuàng)新,在Exadata的架構(gòu)下,數(shù)據(jù)獲取主要在存儲(chǔ)服務(wù)上,復(fù)雜計(jì)算(例如Join)主要在數(shù)據(jù)庫(kù)服務(wù)器,因此每次查詢,存儲(chǔ)服務(wù)器需要準(zhǔn)備好相關(guān)的數(shù)據(jù),通過InfiniBand高速網(wǎng)絡(luò)傳給數(shù)據(jù)庫(kù)服務(wù)器。所謂Smart Scan,就是在掃描數(shù)據(jù)的時(shí)候,只返回相關(guān)的數(shù)據(jù),滿足Where條件的數(shù)據(jù)。這樣可以減少數(shù)據(jù)傳輸量,并且加快速度。
b)Hybrid Columnar Compression(混合列式壓縮)
這個(gè)一個(gè)非常有意思的技術(shù),數(shù)據(jù)庫(kù)既提供經(jīng)典的行式數(shù)據(jù)存儲(chǔ),支持OLTP,也支持高壓縮比的列式存儲(chǔ),支持?jǐn)?shù)據(jù)倉(cāng)庫(kù)的各種分析場(chǎng)景。它還提供一些靈活的功能,把舊的行式數(shù)據(jù)轉(zhuǎn)換成壓縮比高的列式數(shù)據(jù)。壓縮算法支持LZO,ZLIB,BZIP2等。列式數(shù)據(jù)庫(kù)之所以可以高效壓縮,由于每個(gè)所有類似的數(shù)據(jù)都放在一起,很容易做一些字典編碼,行程編碼等。
為了提高數(shù)據(jù)查詢的效率,Exadata Columnar Flash Cache提供將查詢獲得的行數(shù)據(jù),動(dòng)態(tài)轉(zhuǎn)換成列數(shù)據(jù),放在Flash中,方便后面的數(shù)據(jù)分析工作。前面提到的Smart Scan也可以根據(jù)Flash列式數(shù)據(jù)獲得相關(guān)最小數(shù)據(jù)集合。
c)存儲(chǔ)索引
這個(gè)技術(shù)看起來(lái)像一個(gè)小trick,系統(tǒng)會(huì)對(duì)一些列的每個(gè)區(qū)記錄***和最小值,如果查詢語(yǔ)句在Where中有制定范圍時(shí),可以快速獲取數(shù)據(jù)或者skip數(shù)據(jù)。這個(gè)內(nèi)部索引對(duì)于用戶是完全透明的,無(wú)需任何操作,就可以利用這個(gè)技術(shù)提高范圍查詢的性能。這個(gè)技術(shù)就是為一些列做一些粗粒度的簡(jiǎn)單索引。
d)Oracle Exadata云服務(wù)
可以讓Oracle處理所有的部署問題,動(dòng)態(tài)的增減資源,按照預(yù)定的資源付費(fèi),起步配置為,2個(gè)數(shù)據(jù)庫(kù)服務(wù),3個(gè)存儲(chǔ)單元。有興趣可以看看Cloud.oracle.com.
結(jié)束語(yǔ):
***,看了這么多,一直沒有涉及到一個(gè)關(guān)鍵問題,它的答案直接會(huì)影響閱讀的心情,這個(gè)玩意多少錢? 我沒有花太多時(shí)間了解Exadata的詳細(xì)定價(jià),大概的價(jià)格范圍是1百萬(wàn)之間/Rack,(對(duì),價(jià)格也美元)。其實(shí),對(duì)于一些銀行/電信業(yè)務(wù),Exadata的客戶還是蠻多,也是數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù)不錯(cuò)的選擇。
Exadata雖然已經(jīng)6X版本了,銷量還是比寶馬6X少很多,美國(guó)的國(guó)際化客戶不少,中國(guó)的一號(hào)店,工商銀行,招商證券等也都開始使用這種軟硬件一體的創(chuàng)新,也有更多的客戶開始使用Oracle Exadata Cloud了。
【本文為51CTO專欄作者“歐陽(yáng)辰”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系作者本人獲取授權(quán)】