要對當下的大數據解決方案進行分類評估可著實不是易事。首先,大數據工具似乎是在一夜之間就如雨后春筍般涌現出來,因此大家自然會對它們抱有一絲懷疑,畢竟像Hadoop與NoSQL這樣的大項目也才剛剛付諸實際應用。
這個嘛……各位的顧慮及審慎的態度當然值得贊賞,不過實際上大多數此類解決方案早就已經實際服務于生產生活了;另外,某些舊有方法(例如企業搜索)也是可以為大數據業務服務的。
Brian Proffitt是一位Linux及開源項目記者兼分析師,他撰寫了一篇相當精彩的文章,詳細闡述了當今IT業界中較有影響的幾種大數據技術。在這里我要向大家鄭重推薦這篇文章,甚至最好把它保存下來,用作日后參考。
首先,Proffitt介紹了NoSQL數據庫的特色,并講述了它與關系類數據庫有何不同之處。他結合實例概括了以下五種NoSQL(請注意是非關系類)數據庫類型:
分布式鍵-值存儲(簡稱DKVS)數據庫,又名最終一致性鍵-值存儲數據庫。這種數據庫在設計上主要是為了處理大量服務器上的數據存儲問題。此處的關鍵字是“Dynamo平臺”,因為大多數DKVS數據庫都采用Dynamo平臺或是以Dynamo平臺為基礎。
鍵-值存儲(簡稱KVS)數據庫,它將數據存儲在硬盤或是內存中,并將鍵與值加以映射。此類解決方案包括開源方案Redis、Berkeley DB以及Memcache DB。
列式存儲數據庫,作者將其描述為一套“單獨的、巨大的數據庫列表,內部還充滿嵌入式數據列表。”Hadoop、Cassandra以及谷歌的BigTable都是列式存儲數據庫的典型代表。
文檔式存儲數據庫,顧名思義,存儲并對整套文檔數據價值進行排序。這類數據庫并沒有使用像列表、行、列等常見的方法,而是傾向于使用“非shema類JSON型對象即文檔”方式,這與常規XML文檔截然相反,他指出。此類數據庫中的佼佼者包括MongoDB以及CouchDB。
圖形式存儲數據庫。這種類型我不太熟悉,也很難快速掌握其特性,在這里就直接援引原作者的表述:“數據操作在一套面向對象的架構中完成,利用圖形來映射鍵、值以及二者之間的關系,而不是通過常見的列表,”他寫道。Neo4j、HypergraphDB以及Bigdata(沒錯,的確有這么一種大數據解決方案就叫‘Bigdata’——大家是不是在懊惱自己沒有搶先使用這么好的名字?)都屬于這一類型。
好了,這就是能在網上搜羅到的全部信息了,解釋得也很清楚。不過我們要怎么利用它們處理業務中的數據呢?別擔心,Proffitt同樣精心給出了幾種選擇,朋友們放心,這份清單比上面的要短得多。熟悉關系類數據庫的朋友們有福了,因為這些方案都可以直接創建在原有數據庫內部。NoSQL就悲劇了,沒有什么能夠直接契合的選項。這里Proffitt給出的方案是:
MapReduce,這款產品在使用上比較復雜,而且常常需要我們進行手動編碼。不過CouchDB與Hadoop也差不多,都比較難用。
企業搜索產品,這類方案在處理大量文檔及日常業務等結構化數據方面表現極為出色。他列出的備選產品有Apache Lucene、Apache Solr以及ElasticSearch。
就這些,一共兩種選擇。信息量似乎不大,但好處還在后面:Proffitt在他的文章中列出了長達兩頁半的大數據服務供應商及解決方案選項。