4

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

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

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

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

也许在 Couch 中有一种方法可以导出/导入设计文档并查看定义并将它们检查到 SCM 系统中?也许我只需要对我的 RDBMS 后台洗脑进行反编程。

4

3 回答 3

4

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

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

的内容views/tags/map.js就是简单的 JavaScript map 函数,例如:

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

然后,您可以选择任何方式管理您的视图,可能使用CouchApp或类似的东西将所有内容同步到 CouchDB 实例。当然,我不知道“最佳实践”是什么,但这是我所做的,并且对我的团队很有效。

于 2009-09-28T17:40:46.393 回答
1

低技术解决方案:

导出-导入文件格式似乎是一种 JSON,这与移动 SQL 文件没有什么不同。

于 2011-12-26T09:54:22.647 回答
0

瑞安的上述建议是一个很好的建议。DB::CouchDB::Schema是一个 perl 库,其中捆绑了一个脚本,可以导出和导入您的设计文档。它可能有助于为您自动化工作。

于 2009-09-29T01:48:57.123 回答