|
英文原文:CouchDB versus Couchbase: What are the differences, and what happened to Membase?
原文發(fā)布于 2012 年 5 月 17 日
2012年2月,CouchOne與Membase合并了,合并之后的公司叫做Couchbase。Membase公司有一個名為Membase的產(chǎn)品,它是個鍵/值、持久化、可伸縮的解決方案,使用了memcached wire協(xié)議。CouchDB是個文檔數(shù)據(jù)庫,提供了端到端的復(fù)制方法,這對于移動與分布在不同位置的數(shù)據(jù)中心來說是很有用的。Couchbase基于Membase與CouchDB開發(fā)了一款新產(chǎn)品,新產(chǎn)品的名字叫做Couchbase。
近日,Couchbase發(fā)表了一篇文章,比較了Couchbase與CouchDB,指出了這兩者之間的差別與相似點。這篇文章重點回答了這樣一個問題:“CouchDB與Couchbase有哪些差別”?
實際情況是Couchbase與CouchDB是緊密相關(guān)的。Couchbase產(chǎn)品包含了CouchDB的一個副本。Couchbase產(chǎn)品向CouchDB添加了緩存、集群等功能。InfoQ有幸采訪到了Couchbase創(chuàng)始人之一的James Phillips以詳細(xì)了解Membase與CouchDB這兩個產(chǎn)品之間的差別與融合。
InfoQ:Membase是個非常強(qiáng)勁的品牌,你們?yōu)楹螘a(chǎn)品名變更為Couchbase呢?
去年初,Membase公司與CouchOne公司合并了。合并之后的公司名取自每個公司名的一部分,即Couchbase。從根本上來說,名字的變化更好地反映了我們所提供的技術(shù)——Couchbase是個面向文檔的數(shù)據(jù)庫(其所用的技術(shù)來自于Apache CouchDB項目),能夠?qū)崿F(xiàn)水平伸縮,并且對于數(shù)據(jù)的讀寫來說都能提供低延遲的訪問(這要歸功于Membase技術(shù))。
InfoQ:在選擇CouchDB作為持久化與查詢引擎前,Membase使用的是什么?
SQLite是Membase使用的嵌入式存儲引擎,在Couchbase Server中已經(jīng)被Apache CouchDB技術(shù)替代了。
InfoQ:對于Membase的使用來說,memcached wire協(xié)議的重要性如何?
對于Membase和現(xiàn)在的Couchbase Server(支持同樣的wire協(xié)議)使用來說,Memcached兼容性是非常重要的。每種語言與應(yīng)用開發(fā)框架都原生支持memcached,大多數(shù)開發(fā)者都曾使用過memcached,因此很容易就可以上手Membase并開始使用。
InfoQ:Membase看起來是個很不錯的解決方案,當(dāng)然了,它也擁有一些大名鼎鼎的客戶與使用案例,如Zynga等。通過將Membase客戶所希望的CouchDB作為持久/查詢層,你們能得到什么呢?
通常,Couchbase用作交互式軟件系統(tǒng)的記錄系統(tǒng)——取代了之前由MySQL或Oracle等關(guān)系數(shù)據(jù)庫技術(shù)所扮演的角色。Membase所支持的鍵——值操作當(dāng)然可以構(gòu)建可用的系統(tǒng),但簡單的鍵——值存儲對于一些相當(dāng)簡單的問題卻是無能為力的,比如“哪些用戶的農(nóng)場中有綿羊”?為了基于純粹的鍵——值存儲來回答這個問題,應(yīng)用必須得讀取整個數(shù)據(jù)庫,一個鍵一個鍵地讀,然后“查看”鍵——值對的值部分以確定里面是否有綿羊。通過嵌入CouchDB,數(shù)據(jù)庫現(xiàn)在可以在應(yīng)用中完成這個任務(wù),無需掃描整個數(shù)據(jù)庫(因為CouchDB可以維護(hù)能夠加速這種查詢的索引)。
InfoQ:在NoSQL、分布式數(shù)據(jù)領(lǐng)域中誰是你最大的競爭對手?
MongoDB。
InfoQ:CouchBase與MongoDB都是面向文檔的且取得了相當(dāng)大的成功。相比于Cassandra(BigTable/Dynamo hybrid)之類的面向列的數(shù)據(jù)庫來說,面向文檔的數(shù)據(jù)庫有哪些優(yōu)勢呢?
對于面向文檔的數(shù)據(jù)庫來說,應(yīng)用可以在無需考慮結(jié)構(gòu)的情況下插入記錄(即“文檔”),只要他們遵循某些標(biāo)準(zhǔn)的格式化規(guī)則(如XML、JSON)即可。接下來,無論是否定義了某些列,你都可以執(zhí)行查詢,但面向列的數(shù)據(jù)庫則要求維護(hù)一個列簇、或是父列、或是其他類型的結(jié)構(gòu)。面向文檔的模型為事務(wù)性的數(shù)據(jù)管理提供了一個更加靈活、通用性的方式,同時又不會限制執(zhí)行的查詢種類。
InfoQ:Couchdb/Couchbase比較的文章中提到了couchbase向CouchDB增加了自動分片的功能。除了核心CouchDB所提供的功能外,Couchbase是否增加了對復(fù)制、高可用性之類的支持呢?
Couchbase Server實際上提供了兩種“復(fù)制”技術(shù):對于內(nèi)部數(shù)據(jù)中心部署(集群)來說,它使用了Membase風(fēng)格的復(fù)制(在網(wǎng)絡(luò)分區(qū)的情況下提供了快速的一致性),因為它提供了最自然的部署模型,從統(tǒng)計學(xué)上來說,網(wǎng)絡(luò)分區(qū)中出現(xiàn)腦裂(split-brain)的可能性要比數(shù)據(jù)中心出現(xiàn)碰撞的可能性低。對于交互數(shù)據(jù)中心部署(集群從地理位置來說是分布式的)來說,網(wǎng)絡(luò)分區(qū)中出現(xiàn)腦裂的可能性是相當(dāng)高的,因為應(yīng)用服務(wù)器與數(shù)據(jù)庫服務(wù)器位于相對脆弱的WAN連接的兩端。在跨數(shù)據(jù)中心的部署中使用了CouchDB風(fēng)格的復(fù)制,因為它支持碰撞檢測和決議,而在這種場景中此情況是很可能會出現(xiàn)的。
InfoQ:Couchbase使用Membase替換掉了Memcached,因此使用Memcached的應(yīng)用可以很輕松地使用Couchbase,但不帶自動分片功能的客戶端驅(qū)動該如何使用Couchbase的自動分片特性呢?
Couchbase Server中內(nèi)建一個代理層(叫做moxi),或是將該代理層部署到應(yīng)用服務(wù)器上,它會填平“現(xiàn)有”memcached客戶端所用的一致性哈希算法與Couchbase Server所用的兩級間接(通過哈希找到虛擬服務(wù)器,然后將虛擬服務(wù)器映射為真實服務(wù)器)之間的溝壑。
InfoQ:Couchbase是如何解決應(yīng)用需要可靠的持久化這一問題的?有日志選項么?是否有數(shù)據(jù)需要復(fù)制到多個結(jié)點的選項?你們是如何平衡寫速度與可靠的持久化的?你們是否至少需要兩臺服務(wù)器來保證持久性呢?
你可以配置Couchbase(基于每個操作),使之立刻(異步寫)、完成了數(shù)據(jù)的復(fù)制或是數(shù)據(jù)寫到了持久化媒體后才對寫操作進(jìn)行響應(yīng)。用戶可以權(quán)衡他們自己的持久化與性能問題。
關(guān)于Membase、Couchbase與Northscale的背景信息
Membase產(chǎn)品于2010年10月發(fā)布,是由Zynga、NorthScale與NHN聯(lián)合開發(fā)的。NorthScale后來變成了Membase Inc,接下來在去年與CouchOne Inc合并后又變成了Couchbase Inc。Membase被Zynga用來開發(fā)其流行的社交游戲,如Farmville、Mafia Wars與Cafe World。Membase針對Web應(yīng)用數(shù)據(jù)的存儲(如Farmville的數(shù)據(jù))進(jìn)行了優(yōu)化。這些在線社交游戲存儲了大量的數(shù)據(jù)。根據(jù)ReadWrite Cloud的Audrey Watters所述,“數(shù)據(jù)量令人難以置信。這是一種新的數(shù)據(jù)類型,需要開發(fā)一種新的數(shù)據(jù)庫管理系統(tǒng)(Membase)”。Zynga已經(jīng)在使用Memcached,因此向Membase的轉(zhuǎn)換是個自然而然的過程。InfoQ曾采訪過來自Couchbase的工程師Dustin Sallings,他介紹了為支持Membase之類的產(chǎn)品對Memcached wire協(xié)議所做的改變。
在InfoQ此前發(fā)布的一篇新聞中,CouchDB的創(chuàng)建者及Couchbase的聯(lián)合創(chuàng)始人Damien Katz表示他將專注于Couchbase,因為這是一個很好的機(jī)會,可以重新實現(xiàn)CouchDB,拋棄無法滿足需求的、強(qiáng)化可用的功能,并將Membase的可伸縮性、速度、集群與緩存特性添加到合并后的Couchbase產(chǎn)品中。Damien對根據(jù)意見來決定的Apache項目的速度與進(jìn)展表示遺憾,人們對于成功的商業(yè)產(chǎn)品需求的增長速度是飛快的。他對于合并之后的產(chǎn)品的職責(zé)是創(chuàng)造出一款能夠充分發(fā)揮兩者優(yōu)勢的產(chǎn)品。在隨后的一篇博文中,Damien說Membase產(chǎn)品的速度很快且具有可伸縮性,但卻沒有報表與跨數(shù)據(jù)中心的復(fù)制功能。CouchDB產(chǎn)品具有更多的特性,如高級的復(fù)制與報表功能,但速度上卻不盡如人意,也無法應(yīng)付高負(fù)載。這兩個產(chǎn)品的融合是成功的,Couchbase終將破繭而出。
譯者,張龍,熱衷于編程,樂于分享,對新技術(shù)有強(qiáng)烈的探索欲,對Java輕量級框架有一定研究。
【相關(guān)鏈接】
Couchbase Releases Couchbase Server 2.0 GA
Transitioning from RDBMS to NoSQL. Interview with Couchbase’s Dipti Borkar
it知識庫:Couchbase 與 Membase, CouchDB 的關(guān)系,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。