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