多个开发人员使CouchDB与彼此保持同步

时间:2009-09-28 13:39:15

标签: couchdb

我正在考虑将CouchDB用于即将推出的Web开发项目。

在本地运行应用程序的各个开发人员之间保持CouchDB文档仓库同步的最佳方法是什么?

示例:假设开发人员A在Couch中创建新视图或设计文档,或者只是将字段添加到现有视图中。他们还检查了一些客户端代码,这些代码期望该字段位于CouchDB视图上。开发人员B进入并更新了最新的源代码,从而降低了开发人员A的客户端更改。开发人员B如何获得伴随客户端代码的Couch更改?

在典型的RDBMS中,这可以通过检查一组SQL文件或数据库迁移到SCM系统来完成。在开发人员B更新他的代码之后,他将运行新的SQL或迁移脚本来升级他的数据库模式。

也许在Couch中有一种方法可以导出/导入设计文档和视图定义并将其检查到SCM系统中?也许我只需要对我的RDBMS背景洗脑进行去程序化。

3 个答案:

答案 0 :(得分:4)

我通常保留我的视图的.js文件映射并减少函数,并将它们存储在我的代码存储库中。常见的模式是每个视图都有一个文件夹,每个视图函数都有一个单独的.js文件(map / reduce)。一个例子:

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实例。当然,我不知道“最佳实践”是什么,但这就是我所做的,并且与我的团队合作得很好。

答案 1 :(得分:1)

低技术解决方案:

导出导入文件格式似乎是一种JSON,使其与移动SQL文件不同。

答案 2 :(得分:0)

Ryan的上述建议很好。 DB::CouchDB::Schema是一个perl库,它包含一个可以导出和导入设计文档的脚本。它可能会帮助您自动完成工作。