2009-09-28 37 views
4

我正在考慮將CouchDB用於即將到來的Web開發項目。多位開發人員將CouchDB與彼此保持同步

什麼是保持CouchDB文檔回購在各個開發人員之間同步的最佳方式,這些開發人員都是在本地運行應用程序的?

示例:假設開發人員A在Couch中創建新的視圖或設計文檔,或者只是簡單地將字段添加到現有視圖。他們還檢查一些客戶端代碼,希望該字段位於CouchDB視圖上。開發者B進入並更新最新的源代碼,拉低開發者A的客戶端變化。開發人員B如何獲得伴隨客戶端代碼的沙發更改?

在典型的RDBMS中,這可以通過檢查一組SQL文件或將數據庫遷移到SCM系統來完成。在開發人員B更新他的代碼後,他將運行新的SQL或遷移腳本來升級他的數據庫模式。

也許在沙發上有導出/導入設計文檔和視圖定義的方法,並將其檢查到SCM系統中?也許我只需要將我的RDBMS背景洗腦程序解編。

回答

4

我通常保存我的視圖的地圖和減少功能的.js文件,並將它們存儲在我的代碼庫中。一種常見模式是爲每個視圖提供一個文件夾,併爲每個視圖函數(map/reduce)提供一個單獨的.js文件。舉個例子:

views/ 
    tags/ 
     map.js 
     reduce.js 
    users/ 
     map.js 
     reduce.js 

views/tags/map.js的內容僅僅是JavaScript的地圖功能,例如:

function(doc) { 
    if(doc.tags && doc.tags.length) { 
     for(var index in doc.tags) { 
      emit(doc.tags[index], null); 
     } 
    } 
} 

然後,您可以管理你的意見,你選擇的任何方式,可能使用CouchApp或類似的東西來將所有內容同步到CouchDB實例。當然,我不知道「最佳實踐」是什麼,但這是我所做的,並且與我的團隊合作得很好。

0

瑞恩以上的建議是一個很好的建議。 DB::CouchDB::Schema是一個perl庫,它包含一個可以導出和導入設計文檔的腳本。它可能有助於爲您自動完成工作。

1

低技術的解決方案:

出口與進口的文件格式似乎是一種JSON,使其與移動SQL文件無異。

相關問題