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