云計算利器:Oracle NoSQL Database初體驗 |
發布時間: 2012/7/22 16:25:58 |
在過去幾年里,NoSQL數據庫的世界里不斷涌現出各種新項目,我們時常聽到雄心壯志的吹鼓手們拍著胸脯保證他們的新的NoSQL應用是怎樣怎樣打破了所有的舊框架,能夠帶來難以想象的性能。事實上呢,有些言過其實了,NoSQL依然無法進入華爾街,即使是新潮的開發者們也只敢把它用在那些人們生活中的無關緊要的瑣碎數據上。但是,老式的表式結構確實局限性太大了,如果能夠拋棄掉這些,數據庫的速度能夠得到飛速的提高。 正在這時,Oracle這個一貫開發頂級的防彈SQL數據庫的專家帶來了它的NoSQL數據庫服務器,堅固、實用,標準的Oracle風格。瘋狂的夢想家們會繼續編寫NoSQL的新項目,但嚴肅的人會仔細的關注一下Oracle的產品,因為它不僅帶來了NoSQL中那些令人興奮的功能,同時也符合嚴格的大型工程的大手筆,不禁讓人肅然起敬。 Oracle NoSQL Database產品發布的消息可能會讓NoSQL的粉絲們有些吃驚,但實際上Oracle已經悄悄的在這條路上走了一段時間了。五年前,Oracle買了SleepyCat Software,這家企業就是當初的開源Berkeley DB的初創者,Berkeley DB在當時就以靈活的Key-Value存儲模式而出名,而Berkeley DB的技術據說就是Oracle NoSQL Database的核心,雖然看上去是完全重寫了一遍。 Oracle NoSQL:完全的ACID Oracle NoSQL中最有趣的地方就是Key-Value結構。不用再去定義大綱或者把自己鎖在表格架構里,只需要創建關鍵字,然后把數據關聯給它們就可以了。你可以給關鍵字連上一個字符串,也可以連上一個圖像文件,什么都可以,數據庫接受字節碼,不理會內容是什么。 Oracle把關鍵字分為主次兩個部分,你可以認為主部分是對象的指針,次部分是記錄的各種字段。比如你可以把姓名和社會保障卡號放在主部分里,把住址和郵編等等其他的字符串放在次部分里,這和一些NoSQL工具使用一個對象多個字段的做法不同。 Oracle NoSQL中重要的地方是針對ACID遵從而做的近似工程,這讓Oracle NoSQL達到了SQL數據庫所能夠提供的嚴格標準。ACID的意思是“Atomic,Consistent,Isolated,Durable transactions”,指的是嚴密、持續、隔離并且耐用的交易處理。而大多數的NoSQL系統走的是另一條路:BASE,“Basically Available, Soft State, and Eventually Consistent”,也就是保證基本可用性,柔性事務處理,保證最終結果的一致性。換句話說,強調結果不強調過程。 關于Oracle NoSQL是否真正提供ACID遵從還有不少爭論,但Oracle NoSQL確實可以做出這樣的承諾。 最終結果一致性:爭論 這里有個問題可以提一下,耶魯大學的計算機科學教授Daniel Abadi在博客上質疑說在某些情況下,Oracle的NoSQL向主服務器寫入的關鍵字匹配會丟失,比如如果主服務器宕機同時復制服務器又沒有準備好。很快哈佛大學的計算機科學教授Margo Seltzer(我們知道她現在是Oracle的員工,她參與創建了Sleepycat)發表了回應,她認為這并不是Oracle NoSQL的問題,如果要達到真正意義上的“最終結果一致性”,數據中心需要在準備好復制服務器的前提下才開始寫入數據。顯然想要這個爭論得出結果可能會比一年一度的這兩所大學之間的足球賽更難些。 當然這些爭論并非我感興趣的,為了測試Oracel NoSQL的速度,我特意找了臺低端的Mac配置。我開啟了單點NoSQL服務器,然后往里面塞入358400條關鍵字,都是長度大約30的字符串。在這臺老掉牙的Mac上,Oracel NoSQL一共用了119秒。 為了對比一下,我把相同的記錄插入最新版的Voldermort數據庫,在這個LinkedIn癥狀使用的開源Java NoSQL數據庫上,用掉的時間是180秒。 我對這個簡單的測試結果感到很高興,Oracel NoSQL似乎領先了不少。創建關鍵字需要建立字符串數組,而對象的實例化經常成為Java的瓶頸,在這個測試中Oracel NoSQL似乎沒有碰到這方面的問題。 總的來說,Oracle NoSQL非常值得你去試一試。因為它提供了這么多嚴謹的功能,又是來自這樣一個嚴謹的數據管理廠商。億恩科技石頭 負責服務器租用和托管業務 本文出自:億恩科技【www.laynepeng.cn】 |