作為近期資訊管理領域最為熱門的兩項技術,資料庫一體機與大資料技術的硬體架構基本相同,但軟體體系有著本質的區別,這也導致了兩者擁有不同的特徵表現。
隨著企業資料量的快速增長,以及使用者對服務水準要求的不斷提高,相當長的一段時間以來,傳統關係資料庫 技術在生產實踐中表現出明顯的能力不足。 如何以合理的成本獲得海量資料的高可用性已經成為現代IT領域的重大挑戰。 為了應對這一挑戰,近年來,IT市場中 相繼出現了許多新的技術手段,其中最為引人注目的便是由主流資料庫廠商主導的資料庫一體機(例如Oracle ExaData以及IBM Netezza等),以及以開源力量為主的大資料技術。
不過,雖然資料庫一體機與大資料技術都是當今的熱門話題,並都已經被廣泛應用,但卻有相當一部分使用者仍 然無法深入瞭解兩者之間的本質區別與關係。 同時,很多使用者也在為如何在企業內部對這兩者進行正確定位而感到困惑。 為此,本文特別對資料庫一體機(也可稱新 一代主流關聯式資料庫)和大資料技術(例如Hadoop,主要指MapReduce與NoSQL)的相關技術特點進行對比。
硬體與軟體
從本質上來講,資料庫一體機與大資料技術的硬體架構基本相同,同樣是採用x86伺服器集群的分散式並行 模式,以應對大規模的資料與計算。 但是,資料庫一體機的賣家們通常會對其產品的硬體體系進行面向產品化的、系統性的整體調優,同時也會有各自的特色手段。 比方說Oracle ExaData的Infiniband、Flash Cache,IBM Nettezza的FPGA(現場可程式設計邏輯門陣)等。
資料庫一體機與大資料技術最為核心的區別是在軟體體系上。 資料庫一體機的核心是SQL體系,這不只是指SQL解析,更重要的是指包括SQL優化引擎、索引、鎖、事務、日誌、安全以及管理等在內的完整而龐大的技術體系。 這一體系是成熟的、面向產品的。
大資料技術軟體體系中的MapReduce則提供了一個面向海量資料處理的分散式程式設計框架,消費者需要 自行編制所需要的計算邏輯。 MapReduce對資料的讀寫是批量連續的,而不是隨機的。 而大資料技術的另一體系NoSQL則大都只是提供了海量資料的分 布式存儲,以及基於索引的快速讀取機制,為消費者提供的大多是程式設計API(雖然也有類SQL的語言,但其本質並不是完整的SQL體系)。
由於SQL體系的複雜性與處理邏輯的整體關聯性,導致資料庫一體機在擴充性上遠不及大資料技術體系,雖 然前者已經在很大程度上改善了傳統關係資料庫垂直擴展的瓶頸。 MapReduce與NoSQL的單個集群往往可以擴展到數千個節點,而資料庫一體機如果在 硬體上擴展到這個規模,從軟體上來講,已經是沒有意義的了。
特徵與本質
基於軟體體系的不同,導致了資料庫一體機和大資料技術有著不同的特徵表現。 資料庫一體機往往適合於存儲關係複雜的資料模型(例如企業核心業務資料),並且需要限制為基於二維表的關係模型。 同時,資料庫一體機適合進行一致性與事務性要求高的計算,以及複雜的BI計算。
大資料技術則更適合於存儲較簡單的資料模型,並且可以不受模式的約束。 因而其可存儲管理的資料類型更加 豐富。 大資料技術還適合進行一致性與事務性要求不高的計算(主要是指NoSQL的查詢操作),以及對超大規模海量資料的、批量的分散式平行計算(基於 MapReduce)。
需要注意的是,NoSQL資料庫由於擺脫了繁瑣的SQL體系約束,其查詢與插入的效率比資料庫一體機更高。 大資料技術比資料庫一體機所能處理的資料量也相對大些,這主要是因為其集群可以擴展得更大。
從本質上講,MapReduce是對海量資料分散式運算領域的一個重要創新,但也只是在適合於並行處理 的大規模批量處理問題上更佔優勢,而對一些複雜操作,則不一定具有優勢。 NoSQL則可以看作是對傳統關係資料庫進行簡化的結果。 由於NoSQL資料庫的 設計思想只是提取出關聯式資料庫的索引機制,並加了上分散式存儲,把SQL體系中那些對「某些特殊問題」而言並不需要的東西統統刪去,由此實現了更優秀的 效率、擴充性與靈活性。
因此,我們可以明顯地看到,在實踐中,有很多問題(特別是流行的大資料問題),關係資料庫中的許多設計並不需要,這才是NoSQL發展壯大的根本立足點。
關係與協作
通過前面的分析,我們不難得出這樣的結論:大資料技術與資料庫一體機應該是相輔相成,並非互相替代的。 它們針對不同的應用場景設計,並相互補充與合作。 具體來說,大資料技術可以實現:
■處理企業內海量的、模型簡單、類型多樣的非結構化與半結構化資料(例如社會化資料、各種日誌甚至圖片、視頻等),其處理結果可以被直接使用;
■以上處理結果也同時可以被當成是新的輸入存儲到企業級資料倉儲中,這時大資料機相當於是面向大資料來源的、新的ETL(提取-轉換-載入)手段;
■面向海量資料的、不太適合SQL的存儲或計算。
而資料庫一體機則應該還是作為企業資料倉儲的主流技術,至少在很長一段時間內應該是這樣。 它負責存儲與計算最主要的、有重大價值的企業關鍵業務資料。
現存的誤區
有些人認為,雖然大資料技術的原始開源狀態還不適合充當企業級資料倉儲主平臺的要求,但經過開發、補充,應該是可以的。 其實這個觀點沒有錯。 但實際上,對開源的大資料技術進行補充開發,所要補充的正是大資料技術在原始設計上就去除了的、那些本屬於關聯式資料庫體系的東西。
如果進行這樣的補充開發,企業不僅會面臨龐大的、難於估計的開發工作量,同時也難以像專業資料庫廠商那 樣實現這些工作的理論化、產品化與體系化。 雖然從純技術的角度上講,開發什麼都有可能。 但是如果企業真的準備這樣做,是要開發另一個商業化的關係資料庫 嗎? 很明顯,這違背了大資料技術的設計初衷。
(責任編輯:蒙遺善)