4

今後の Web 開発プロジェクトで CouchDB を使用することを検討しています。

アプリケーションをローカルで実行しているさまざまな開発者間で 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 マップ関数です。次に例を示します。

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

ローテクソリューション:

export-import ファイル形式は一種の JSON のようで、SQL ファイルを移動するのと同じです。

于 2011-12-26T09:54:22.647 に答える
0

上記のライアンの提案は良いものです。DB::CouchDB::Schemaは、設計ドキュメントをエクスポートおよびインポートできるスクリプトがバンドルされている perl ライブラリです。ジョブの自動化に役立つ場合があります。

于 2009-09-29T01:48:57.123 に答える