云計(jì)算推波助瀾 非關(guān)系數(shù)據(jù)庫蓄勢待發(fā)
前面為大家介紹了淺談云計(jì)算的發(fā)展之路,下面為大家介紹“云計(jì)算推波助瀾 非關(guān)系數(shù)據(jù)庫蓄勢待發(fā)”的態(tài)勢。
在過去的日子,當(dāng)你有數(shù)據(jù)需要存儲(chǔ)管理的時(shí)候,辦法很簡單:安裝一個(gè)正式的數(shù)據(jù)庫,將需要存儲(chǔ)的數(shù)據(jù)錄入進(jìn)去,讓系統(tǒng)幫你進(jìn)行分類管理,而你只需要花時(shí)間去選擇哪家數(shù)據(jù)庫提供商。現(xiàn)在事情并非如此,一些新興數(shù)據(jù)庫工具開始泛濫,賦予了“數(shù)據(jù)庫”這幾個(gè)字眼更多的含義,打破了傳統(tǒng)數(shù)據(jù)庫關(guān)系模型。有經(jīng)驗(yàn)的數(shù)據(jù)庫管理員稱之為“玩具”,認(rèn)為它們有很嚴(yán)重的威脅,而這些威脅就是來自這些新興的數(shù)據(jù)庫。一些傲慢的家伙為新興數(shù)據(jù)庫很好用,速度很快,滿足他們手頭的需求,置威脅于不顧。
非關(guān)系型數(shù)據(jù)庫正在吸引人們的注意,因?yàn)樗鼈兛梢院雎栽S多的規(guī)則,而這些規(guī)則正是經(jīng)驗(yàn)豐富的數(shù)據(jù)庫管理員積累的深刻教訓(xùn)。問題是現(xiàn)在這些規(guī)則的條條款款已成為一種束縛,使得很難創(chuàng)建一個(gè)真正強(qiáng)大的、讓多臺(tái)計(jì)算機(jī)一起運(yùn)行的數(shù)據(jù)庫系統(tǒng)。因?yàn)樗械腤eb應(yīng)用程序設(shè)計(jì)者都?jí)粝霕?gòu)建一個(gè)多機(jī)運(yùn)行的應(yīng)用程序,保存所有用戶的所有數(shù)據(jù),要想做到這些,有些老的規(guī)則需要避開,甚至是打破。
首當(dāng)其沖的事情就是摒棄舊的JOIN操作。大學(xué)生曾經(jīng)嚴(yán)格的按照課后作業(yè)的要求,如何標(biāo)準(zhǔn)化數(shù)據(jù),將一個(gè)表格劃分為許多的部分。那個(gè)時(shí)候磁盤非常貴,數(shù)據(jù)標(biāo)準(zhǔn)化工作顯得額外重要。問題當(dāng)數(shù)據(jù)分散在不同機(jī)器上的時(shí)候,JOIN操作真的使得速度變得很慢。現(xiàn)在磁盤空間非常便宜,許多數(shù)據(jù)模型并沒有從數(shù)據(jù)標(biāo)準(zhǔn)化中受益,因此JOIN操作很容易就被摒棄。
立即一致性和最終一致性的差別依賴數(shù)據(jù)的重要性來定。那些聽到這些新興數(shù)據(jù)庫就要拿心臟病藥的保守者通常是銀行的程序員,它們希望確保每天結(jié)束后收支相等。畢竟銀行的領(lǐng)導(dǎo)不能忍受由于失敗的數(shù)據(jù)庫事務(wù)而導(dǎo)致帳目出錯(cuò)。
但是許多現(xiàn)代的Web站點(diǎn)不會(huì)因?yàn)槟硞€(gè)事務(wù)失效而不能運(yùn)行的。我看見Facebook經(jīng)常有小故障。不會(huì)因?yàn)槟承┰u(píng)論數(shù)據(jù)丟失了就不能運(yùn)行了。這些網(wǎng)站不會(huì)像銀行那樣苛刻關(guān)注帳目清算,它們不需要關(guān)系數(shù)據(jù)庫所有的功能。(一些人開玩笑說銀行應(yīng)該把購買Oracle許可證的錢拿出來成立一個(gè)基金,賠償那些因?yàn)槭〉氖聞?wù)操作導(dǎo)致錢丟失的人們。)
為了更好地理解這些非關(guān)系型數(shù)據(jù)庫的擴(kuò)展層,我撿了幾個(gè)進(jìn)行測試,構(gòu)建了幾個(gè)測試應(yīng)用程序。發(fā)現(xiàn)它們主要的命令操作不會(huì)超過這三個(gè):插入、更新、刪除。有一些提供群集,有一些只能提供某種服務(wù),有一些夸大其詞說接管整個(gè)服務(wù)器棧,有一些比其它的數(shù)據(jù)庫提供更好的AJAX工具。但是,他們中沒有一個(gè)合適,它們都不能供銀行來使用。
文中我沒有介紹其它幾個(gè)有趣的數(shù)據(jù)庫,一是由于本文篇幅限制,二是因?yàn)樗鼈兒臀乙韵绿岬降膸讉€(gè)沒有多大的區(qū)別。舉個(gè)例子,Sun公司正在構(gòu)建一個(gè)關(guān)系型數(shù)據(jù)庫,稱之為Derby,用Java虛擬機(jī)一起使用。Oracle也有它自己的嵌入式數(shù)據(jù)庫,叫做Berkeley DB,但是現(xiàn)在稱之為Oracle Embedded Database。有些程序員甚至創(chuàng)建了低費(fèi)用的程序庫,將對(duì)象直接寫入到磁盤中。這些產(chǎn)品也延伸了“數(shù)據(jù)庫”這幾個(gè)字眼的含義,但是我不準(zhǔn)備在這里陳述它們。
Amazon SimpleDB數(shù)據(jù)庫
SimpleDB是Amazon推進(jìn)云計(jì)算服務(wù)計(jì)劃中最為高級(jí)和最似云技術(shù)的組件之一。一旦你簽約雇傭Amazon的服務(wù),獲得通行密碼,你就能將包含鍵值的Web Service XML文件裝載到SimpleDB中去,只要你持續(xù)支付費(fèi)用,它將一直為你存儲(chǔ)這些數(shù)據(jù)。你不需要考慮安裝任何應(yīng)用程序或者備份什么。Amazon在它的Web service墻后已經(jīng)為你隱藏了所有這些工作。
SimpleDB是兩級(jí)分層結(jié)構(gòu)。最上面的一級(jí)是"domain",第二級(jí)是"item"。在你選擇domain 和item 名之后,你就寫入了鍵值。SimpleDB相對(duì)來說有豐富的API,擁有對(duì)數(shù)據(jù)排序能力,甚至具備計(jì)算出匹配查詢結(jié)果的item數(shù)目的能力。你甚至能寫查詢語句,可以查詢那些不從某個(gè)特定字符串開始的值。這或許和我們使用的SQL和Oracle數(shù)據(jù)有很大的區(qū)別,但是這些低租金的數(shù)據(jù)庫也有自身的缺點(diǎn),甚至不能對(duì)結(jié)果集進(jìn)行排序。
SimpleDB設(shè)計(jì)初衷是和Amazon的Simple Storage Service (S3)一起使用的,但是每對(duì)鍵值的大小限制在1024字節(jié)。這對(duì)于很多的字符串來說,已經(jīng)足夠了,但是對(duì)于許多的內(nèi)容引擎是不夠的。因此你在S3中存儲(chǔ)的是數(shù)據(jù)的指針。
現(xiàn)在使用類似JOIN這樣的操作還有一些限制,需要多種調(diào)用。每個(gè)查詢只能運(yùn)行5秒鐘。結(jié)果僅能保持250個(gè)item。每個(gè)item僅有250對(duì)。還有許多的常見操作有限制,有人開始思考SimpleDB是給我們的生活帶來了便捷或是麻煩。
Amazon開始重寫API,企圖得到更多更好的認(rèn)證。到2009年9月,整個(gè)SSL都會(huì)運(yùn)行call,提供安全和認(rèn)證。Amazon也增加了安全機(jī)制,使用更多的復(fù)雜的哈希算法來將更多的請求打包。這些僅僅是Amazon取得的小的改進(jìn)。
該公司也創(chuàng)建了更多的程序庫,讓服務(wù)的使用更加簡單。這里有許多的軟件包和主流以及一些少見的語言結(jié)合使用。文檔相當(dāng)廣泛,很容易找到。通常你可以很快啟動(dòng)你的工作,開始存儲(chǔ)數(shù)據(jù)所用的時(shí)間也縮短了。
現(xiàn)在價(jià)格也很合適。Amazon最近將存儲(chǔ)的價(jià)格從1.5美元降到25美分每G字節(jié)。公司將收費(fèi)透明化,目的是激勵(lì)用戶來計(jì)劃他們的消費(fèi)預(yù)算。
Amazon有一套先進(jìn)的條款來處理使用期限問題。有許多的條款來處理你可能遇到的問題,有一些吸引了我的注意力。舉個(gè)例子,Amazon申明,“我們可能刪除最近6個(gè)月存在SimpleDB中卻沒有訪問的內(nèi)容,但是不用負(fù)任何責(zé)任。”這對(duì)于只是為了給系統(tǒng)做測試的人來說很容易接受。從措辭來看,Amazon此舉的目地就是為了保持它的數(shù)據(jù)中心良好運(yùn)行。
還有其他的一些問題。舉個(gè)例子,使用期限條款包括一長列禁止數(shù)據(jù),如“助長非法活動(dòng)”,帶有“種族、性別、宗教、國籍、殘疾、性取向、年齡”歧視的數(shù)據(jù)都是禁止的。這存在一個(gè)問題。想像一下如果為某個(gè)教堂開展反男同性戀婚姻運(yùn)行了一個(gè)網(wǎng)站。這聽起來你確實(shí)有性取向歧視。但是,如果你是開展男同性戀婚姻的宣傳活動(dòng),反對(duì)這些教堂的呢,這個(gè)時(shí)候還能說你是在歧視這些基本的宗教信仰嗎?
我對(duì)那些正在分析處理這些抱怨的律師感到遺憾,但是至少他們可以高枕無憂了,因?yàn)樗麄冎肋@些數(shù)據(jù)可以以任何理由或者是沒有理由的刪除掉。如果你僅使用免費(fèi)的服務(wù),Amazon不會(huì)給你任何通知,就會(huì)刪除你的數(shù)據(jù),但是你如果是付費(fèi)用戶,就承諾有60天的提醒通知,在期限內(nèi)你就能將你的數(shù)據(jù)處理好。
Google App Engine
Google App Engine本質(zhì)上不是一個(gè)數(shù)據(jù)庫。他是一種云技術(shù),用于分布式Python應(yīng)用程序,它是和自己隱藏在內(nèi)部某個(gè)地方的數(shù)據(jù)庫一起工作的。不首先通過應(yīng)用程序?qū)觼碓L問數(shù)據(jù)庫是不可能的。但是封裝一個(gè)數(shù)據(jù)庫命令和格式化請求數(shù)據(jù)并不困難,因此我們可以認(rèn)為App Engine是一個(gè)數(shù)據(jù)庫,只不過這個(gè)數(shù)據(jù)庫附加了一個(gè)以Python語言寫的嵌入程序。
這種額外定制的層非常有用。許多關(guān)于其它“玩具”數(shù)據(jù)庫的抱怨圍繞在某個(gè)缺少的操作導(dǎo)致不能找到正確的結(jié)果。如果你想給這里的數(shù)據(jù)庫增加一些功能,你能夠用Python語言自己開發(fā)出來。如果你想要有JOIN操作,你能自己用Python語言寫,也能同時(shí)定制內(nèi)存緩存器。這對(duì)于那些讓用戶存儲(chǔ)他們自己數(shù)據(jù)的Web應(yīng)用程序特別有用。如果你需要增加安全控制權(quán)限,限制每個(gè)用戶看到自己應(yīng)該看到的內(nèi)容,你也可以用Python語言實(shí)現(xiàn)。
App Engine數(shù)據(jù)存儲(chǔ)比Amazon的SimpleDB更具結(jié)構(gòu)結(jié)構(gòu)性,它的結(jié)構(gòu)性很大一部分來自Python的對(duì)象模型。你存儲(chǔ)的不是成對(duì)的鍵值,而是Python對(duì)象,這些對(duì)象被定義成非常類似于SQL模式。你能為每列設(shè)置數(shù)據(jù)類型,在你需要的列之間進(jìn)行索引。事務(wù)機(jī)制也深深的和Python聯(lián)系在一起,因?yàn)槊總€(gè)事務(wù)實(shí)際上就是一個(gè)Python函數(shù)。這么說有一些過分簡單化,因?yàn)閷?duì)這個(gè)Python函數(shù)還是有一系列的限制的(如每個(gè)數(shù)據(jù)項(xiàng)只能更新一次)。好的消息是Google數(shù)據(jù)項(xiàng)正在創(chuàng)建特殊的事務(wù)方法,對(duì)一些普通行為(如“創(chuàng)建”或者“更新”一行)進(jìn)行抽象。
檢索有意做成類似于SQL查詢,實(shí)際上,Google提供它自己的類SQL語言,GQL。使用的時(shí)候,GQL被解析成查詢語句。App Engine還有一套基于Python的方法集,方法集合拴在一起處理數(shù)據(jù)集合和查詢。你不需要浪費(fèi)分析查詢周期。
值得一提的是Python棧包括了一些最好的數(shù)據(jù)庫也不具備的功能特性。有一個(gè)程序庫來操作圖像文件,通過剪切和Goolge特有的“I feel lucky”功能對(duì)圖片進(jìn)行修補(bǔ)。你也可以將數(shù)據(jù)存儲(chǔ)為Goolge文檔,電子表格和日程數(shù)據(jù)項(xiàng)。起初App Engine看起來僅僅像是一個(gè)數(shù)據(jù)庫,但是你也能容易的在Google棧里進(jìn)行數(shù)據(jù)抽取。
直到幾周前,App Engine還在測試階段,使用它是免費(fèi)的。只要你的使用空間大小在基本的限額之內(nèi),它仍舊是免費(fèi)的。另外,Google的收費(fèi)機(jī)制和Amazon極為相似。存儲(chǔ)的價(jià)格比Amazon的更便宜(每月每G字節(jié)12美分),帶寬的收費(fèi)是相同的(10美分沒G字節(jié))。
Google的使用期限責(zé)任制與Amazon的不同。你需要制定一個(gè)個(gè)人隱私策略,保護(hù)你用戶的數(shù)據(jù)。如果你的用戶違反了版權(quán)規(guī)定,你必須反應(yīng)給DMCA(千禧年數(shù)字版權(quán)法),你不這么做的話,Google將會(huì)為你這么做。Google保留在任何時(shí)間以任何理由刪除內(nèi)容的權(quán)利。“你同意Google刪除、丟失任何存儲(chǔ)內(nèi)容和服務(wù)試用期傳送內(nèi)容、保持的通信而不負(fù)任何責(zé)任。”
這些條款越來越受到關(guān)注。現(xiàn)在Google承諾在決定注銷賬戶前預(yù)留90天的時(shí)間讓你將數(shù)據(jù)從服務(wù)器取走。其它受關(guān)注的條款在DMCA的問題上,這使得許多人都不解。
存在這么一個(gè)問題,如果你決定離開Google或者說Google讓你離開時(shí)該怎么辦。Google發(fā)布了一個(gè)不錯(cuò)的開發(fā)工具,讓你輕松在本地機(jī)器上測試你的應(yīng)用程序。使用這些工具在你機(jī)器上測試是沒有技術(shù)問題的,除非你沒有支持類云技術(shù)的功能。包括測試在內(nèi)的數(shù)據(jù)存儲(chǔ)自身是不會(huì)自動(dòng)復(fù)制自己的,但是在自己本地機(jī)器上卻能實(shí)現(xiàn)其它的功能。像以前一樣,有一些法律問題,因?yàn)?ldquo;許可證的唯一目的就是讓你使用和享受提供服務(wù)的好處。”
Apache CouchDB數(shù)據(jù)庫
毫無疑問我們需要使用云技術(shù)來享受這些新的服務(wù)。CouchDB是眾多開源項(xiàng)目中的一個(gè),該項(xiàng)目構(gòu)建了一個(gè)用于存儲(chǔ)key-value pairs的數(shù)據(jù)庫。這個(gè)項(xiàng)目使用Erlang語言編寫的,受Apache 軟件基金支持。你可以下載源文件在任何機(jī)器上安裝,然后編譯運(yùn)行它們。使用它是沒有費(fèi)用的,除了你需要花錢購置服務(wù)器。
CouchDB與Amazon的工具是相似的,但是它有一些特別之處。你仍舊以行的形式來存儲(chǔ)key-value pairs,但是這些key-value pairs可以是任何標(biāo)準(zhǔn)的JSON(JavaScript Object Notation)數(shù)據(jù)類型,如布爾和數(shù)字類型。值的范圍不局限于1024字節(jié)長度的字符串,有辦法可以讓其存儲(chǔ)長數(shù)值,甚至是圖形。所有的請求和響應(yīng)格式化為JavaScript。沒有基于XML的Web Services,只有JSON.
最大的不同在于寫查詢語句。CouchDB可以通過JavaScript單獨(dú)寫map functions和reduce functions。一個(gè)簡單的查詢或許僅僅就是一個(gè)map function,帶有一個(gè)“If”子句來測試數(shù)據(jù)比某個(gè)數(shù)值大還是小。只有在你試圖計(jì)算統(tǒng)計(jì)由map functions查詢的數(shù)據(jù)時(shí)才會(huì)用到reduce functions。發(fā)現(xiàn)計(jì)算行的個(gè)數(shù)很容易辦到,但是也有可能丟失了一些其它很酷的特性,因?yàn)閙ap function只能由JavaScript來寫。我除了發(fā)現(xiàn)計(jì)算出匹配的數(shù)目,至于其他的非學(xué)術(shù)的用途我還沒有弄清楚。文檔包括了一個(gè)給人印象很深刻的reduction function,用來歸并統(tǒng)計(jì)的,但是我不知道CouchDB真的是否是處理這類事情的正確工具,如果你需要更復(fù)雜的統(tǒng)計(jì),妥當(dāng)?shù)木褪菆?jiān)持使用傳統(tǒng)的數(shù)據(jù)庫,獲得統(tǒng)計(jì)報(bào)表。
這個(gè)項(xiàng)目還有一些限制的。項(xiàng)目的首頁稱之為“一種分布式,容錯(cuò),自由面向文檔模式的數(shù)據(jù)庫,”沒有一些人工干預(yù)你是不會(huì)獲得分布式和容錯(cuò)功能的。CouchDB有一個(gè)好看的AJAX用戶界面,包含了一個(gè)form表單,能讓你復(fù)制數(shù)據(jù)庫。但是還不是自動(dòng)的。
CouchDB計(jì)劃會(huì)增加存取控制和安全模式,但是沒有以文檔的形式展示出來,在API中也沒顯示。他們設(shè)計(jì)的初衷就是使用純JavaScript,取代SQL,或者其他的語言,這是一個(gè)好的主意,你不會(huì)獲得或者失去權(quán)限閱讀文檔,你能寫JavaScript函數(shù)來返回true或者false結(jié)果。
使用純JavaScript也并非壞事。當(dāng)我使用這些數(shù)據(jù)庫的時(shí)候,我很快發(fā)現(xiàn)有人能夠在客戶端開發(fā)一個(gè)安全模型層,使用一些不錯(cuò)的加密技術(shù)。在客戶端加強(qiáng)安全控制,就能減少服務(wù)器端的工作,我在《半透明數(shù)據(jù)庫》一文中有一些介紹。
這個(gè)特點(diǎn)正在驅(qū)使一些極端用戶使用CouchDB作為整個(gè)服務(wù)器棧。J. Chris Anderson,項(xiàng)目的委托人之一,寫了一篇文章,證明CouchDB是一個(gè)應(yīng)用程序服務(wù)器的全部所需。用于顯示和與數(shù)據(jù)交互的業(yè)務(wù)邏輯是用JavaScript編寫的,從CouchDB下載后是一個(gè)JSON數(shù)據(jù)包。
在Anderson的眼里,當(dāng)所有的功能都能用JavaScript實(shí)現(xiàn),在服務(wù)器上使用Ruby、Python、Java、 PHP沒有什么大的意義。這種看法或許有些極端,因?yàn)榭倳?huì)遇到一些情況,客戶機(jī)器不能保證能正確的實(shí)現(xiàn)一些功能,客戶端的客戶比我們知道的東西少。像CouchDB這種輕量級(jí)的工具使得人們開始考慮完成一項(xiàng)工作真正需要多少代碼。
Persevere數(shù)據(jù)庫
初一看,Persevere數(shù)據(jù)庫像其它大多數(shù)數(shù)據(jù)庫一樣。將鍵值對(duì)錄入進(jìn)去,它就將其存儲(chǔ)起來。但是,這只是一個(gè)開頭。Persevere提供了完善的對(duì)象分級(jí)結(jié)構(gòu),使得用戶可以給數(shù)據(jù)庫增加更多的結(jié)構(gòu),提供比上一代傳統(tǒng)數(shù)據(jù)庫更多的form。Persevere更多的表現(xiàn)出是一種JavaScript對(duì)象的后端存儲(chǔ)設(shè)備,JavaScript對(duì)象由像Dojo這樣的AJAX工具包創(chuàng)建。
Persevere引以為自豪的是它的“schema-free”,這一特點(diǎn)使得它與其它數(shù)據(jù)庫有很大的區(qū)別。Persevere可以讓你隨心所欲的增加schema。Persevere并非把分級(jí)結(jié)構(gòu)的頂層稱為一個(gè)domain(SimpleDB這么稱呼),也不稱之為文檔(CouchDB這么稱呼),Persevere稱之為對(duì)象,它甚至可以讓你創(chuàng)建對(duì)象的子類。如果你想違背規(guī)則,你也能堅(jiān)持某些字段使用某一類型,但是這是不推薦的。Schema規(guī)則是可選的。
由于Persevere與Dojo連接緊密,Persevere提供了大量的連通性。你可以創(chuàng)建網(wǎng)格,樹形窗口小部件,接著將其直接鏈接到JsonRestStore,窗口小部件讓你編輯數(shù)據(jù)。 你可以通過20行的JavaScript代碼就能遠(yuǎn)程訪問一個(gè)數(shù)據(jù)庫。
我遇到過許多的小的誤操作,這些誤操作可能是由于我缺乏經(jīng)驗(yàn)導(dǎo)致,而不是潛在的Bug。當(dāng)我準(zhǔn)確的弄清楚如何做的時(shí)候,一些操作就會(huì)正確啟動(dòng)。Persevere本身并不是特別需要掌握,但是AJAX框架是你直接面對(duì)的。來自Dojo的文檔比大多數(shù)AJAX框架要好,但是你得花一些時(shí)間來學(xué)習(xí)Dojo,才能掌握隱藏在Persevere表面后的潛在復(fù)雜性問題。
云技術(shù)和群集
嘗試了這些數(shù)據(jù)庫之后,我能明白為什么有人會(huì)一直稱它們?yōu)?ldquo;玩具”。它們功能有限,即便有新的功能,但是這些新的功能會(huì)約束你的選擇。許多次我意識(shí)到SQL世界的標(biāo)準(zhǔn)功能讓生活更加簡單。許多基于標(biāo)準(zhǔn)SQL的工具,如報(bào)表引擎,不能連接這些新興的數(shù)據(jù)庫。使用MySQL或者Oracle這些數(shù)據(jù)庫能夠完成許多重大的功能。
但是,這不代表將來在我的項(xiàng)目中我不去使用這些新興的數(shù)據(jù)庫。它們是固態(tài)數(shù)據(jù)存儲(chǔ),與AJAX集成得如此緊密,使得開發(fā)更加容易。另外,多數(shù)Web站點(diǎn)不需要MySQL或者Oracle的所有功能,JOIN-free模式對(duì)許多普通數(shù)據(jù)結(jié)構(gòu)仍舊非常有用,包括一對(duì)多關(guān),一對(duì)一關(guān)系型數(shù)據(jù),甚至多對(duì)一關(guān)系。
另一個(gè)問題是是否使用云技術(shù)或者構(gòu)建你自己的群集。Google和Amzon都提供多機(jī)服務(wù)承諾,CouchDB和Persevere是不能匹敵的。Persevere團(tuán)隊(duì)聲稱在將來將會(huì)擴(kuò)展。但是很難預(yù)料Amazon和Google的承諾有多好。如果Amazon和Google丟失了一個(gè)硬盤怎么辦?如果它們丟失了一個(gè)機(jī)架怎么辦?他們還沒有做出很清晰的承諾和使用期限所負(fù)的責(zé)任。
舉個(gè)例子,Amazon的條款重復(fù)聲明了很多次:“我們對(duì)于為授權(quán)的訪問、改變、刪除、損害、丟失任何你的內(nèi)容、應(yīng)用程序,或者你提交的數(shù)據(jù)、服務(wù)帳號(hào)都不負(fù)責(zé)任。”
我不是說在責(zé)備Amazon或者是Google,因?yàn)檎l都不知道誰應(yīng)該對(duì)丟失的事務(wù)負(fù)最終的責(zé)任。有可能是任何一個(gè)程序員,實(shí)際上也很難判斷誰破壞的。但是,我們知道更多信息會(huì)更好。SimpleDB中的數(shù)據(jù)是存儲(chǔ)在RAID磁盤中嗎?當(dāng)同一地區(qū)發(fā)生地震,颶風(fēng)或者火災(zāi)時(shí)別的地區(qū)另外的備份嗎?在線備份社區(qū)正準(zhǔn)備開始提供這類服務(wù)的細(xì)節(jié)了,但是云技術(shù)還沒有計(jì)劃這樣做。
所有這些顧慮讓我們清楚的認(rèn)識(shí)到他們?nèi)耘f是玩具數(shù)據(jù)庫,打破了傳統(tǒng)數(shù)據(jù)庫的規(guī)則,對(duì)那些可以忍受數(shù)據(jù)丟失的應(yīng)用程序是合適的。它們很有趣,有快,在價(jià)格方面也很合適,你的注意力可以不用放在選擇數(shù)據(jù)庫提供商,而是放在如何解決沒有JOIN操作怎么辦的問題上。
這就是我要為大家介紹的全部內(nèi)容,希望大家從中有所收獲。
【編輯推薦】