我正在考虑将CouchDB用于即将推出的Web开发项目。
在本地运行应用程序的各个开发人员之间保持CouchDB文档仓库同步的最佳方法是什么?
示例:假设开发人员A在Couch中创建新视图或设计文档,或者只是将字段添加到现有视图中。他们还检查了一些客户端代码,这些代码期望该字段位于CouchDB视图上。开发人员B进入并更新了最新的源代码,从而降低了开发人员A的客户端更改。开发人员B如何获得伴随客户端代码的Couch更改?
在典型的RDBMS中,这可以通过检查一组SQL文件或数据库迁移到SCM系统来完成。在开发人员B更新他的代码之后,他将运行新的SQL或迁移脚本来升级他的数据库模式。
也许在Couch中有一种方法可以导出/导入设计文档和视图定义并将其检查到SCM系统中?也许我只需要对我的RDBMS背景洗脑进行去程序化。
答案 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)
答案 2 :(得分:0)
Ryan的上述建议很好。 DB::CouchDB::Schema是一个perl库,它包含一个可以导出和导入设计文档的脚本。它可能会帮助您自动完成工作。