2009-09-28 86 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文件无异。

相关问题