您的位置:軟件測試 > 開源軟件測試 > 開源軟件測試解決方案 >
探索 CouchDB 針對 Web 應(yīng)用程序的面向文檔數(shù)據(jù)庫
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2012/12/14 15:47:59 ] 推薦標(biāo)簽:

CouchDB 是如何工作的?

CouchDB 構(gòu)建在強(qiáng)大的 B-樹儲存引擎之上。這種引擎負(fù)責(zé)對 CouchDB 中的數(shù)據(jù)進(jìn)行排序,并提供一種能夠在對數(shù)均攤時間內(nèi)執(zhí)行搜索、插入和刪除操作的機(jī)制。CouchDB 將這個引擎用于所有內(nèi)部數(shù)據(jù)、文檔和視圖。

因?yàn)?CouchDB 數(shù)據(jù)庫的結(jié)構(gòu)獨(dú)立于模式,所以它依賴于使用視圖創(chuàng)建文檔之間的任意關(guān)系,以及提供聚合和報(bào)告特性。使用 Map/Reduce 計(jì)算這些視圖的結(jié)果,Map/Reduce 是一種使用分布式計(jì)算來處理和生成大型數(shù)據(jù)集的模型。Map/Reduce 模型由 Google 引入,可分為 Map 和 Reduce 兩個步驟。在 Map 步驟中,由主節(jié)點(diǎn)接收文檔并將問題劃分為多個子問題。然后將這些子問題發(fā)布給工作節(jié)點(diǎn),由它處理后再將結(jié)果返回給主節(jié)點(diǎn)。在 Reduce 步驟,主節(jié)點(diǎn)接收來自工作節(jié)點(diǎn)的結(jié)果并合并它們,以獲得能夠解決初問題的總體結(jié)果和答案。

CouchDB 中的 Map/Reduce 特性生成鍵/值對,CouchDB 將它們插入到 B-樹引擎中并根據(jù)它們的鍵進(jìn)行排序。這能通過鍵進(jìn)行高效查找,并且提高 B-樹中的操作的性能。此外,這還意味著可以在多個節(jié)點(diǎn)上對數(shù)據(jù)進(jìn)行分區(qū),而不需要單獨(dú)查詢每個節(jié)點(diǎn)。

傳統(tǒng)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)有時使用鎖來管理并發(fā)性,從而防止其他客戶機(jī)訪問某個客戶機(jī)正在更新的數(shù)據(jù)。這防止多個客戶機(jī)同時更改相同的數(shù)據(jù),但對于多個客戶機(jī)同時使用一個系統(tǒng)的情況,數(shù)據(jù)庫在確定哪個客戶機(jī)應(yīng)該接收鎖并維護(hù)鎖隊(duì)列的次序時會遇到困難,這很常見。在 CouchDB 中沒有鎖機(jī)制,它使用的是多版本并發(fā)性控制(Multiversion concurrency controlMVCC)— 它向每個客戶機(jī)提供數(shù)據(jù)庫的新版本的快照。這意味著在提交事務(wù)之前,其他用戶不能看到更改。許多現(xiàn)代數(shù)據(jù)庫開始從鎖機(jī)制前移到 MVCC,包括 Oracle(V7 之后)和 Microsoft® SQL Server 2005 及更新版本。

上一頁12下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd