8

私のアプリケーションには、couchbase ビュー (map-reduce) があります。現在、私はそれらをテキストファイルに書き、couchbase管理ページから新しいcouchbaseサーバーごとにロードしています(面倒でエラーが発生しやすいプロセス)。

とにかく、新しいcouchbaseサーバーをデプロイするとき、または新しいバケットを作成するときに、これらすべてのビューをテキストファイルからcouchbaseにロードできますか?

mysql では、すべての挿入クエリとプロシージャをファイルに書き込んで、新しいインスタンスごとに (コマンド プロンプト経由で) そのファイルを mysql にフィードしていたことを覚えています。カウチベースで利用できるそのような戦略はありますか?

4

2 に答える 2

6

以前のcouchbase関連の質問から、Java SDKを使用しているようですか? SDK の 1.4 行と 2.0 行の両方で、設計ドキュメントとビューをプログラムで作成できます。

Java SDK 1.4.x を使用

ビュー定義 (map 関数、reduce 関数、それらを配置する設計ドキュメント) を文字列としてロードする必要があります。http://docs.couchbase.com/couchbase-sdk-java-1.4/#design-documentsのドキュメントを参照してください。

基本的に、 を介してデータベースに挿入するViewDesignを作成します。DesignDocumentCouchbaseClient

DesignDocument designDoc = new DesignDocument("beers");
designDoc.setView(new ViewDesign("by_name", "function (doc, meta) {" +
    "  if (doc.type == \"beer\" && doc.name) {" +
    "    emit(doc.name, null);" +
    "  }" +
    "}"));
client.createDesignDoc(designDoc);

Java SDK 2.0.x を使用

同様に、ビュー定義 (map 関数、reduce 関数、それらを配置する設計ドキュメント) を文字列としてロードする必要があります。

次に、 を処理してDesignDocument追加DefaultViewし、 を介して設計ドキュメントをバケットに挿入しBucketますBucketManager

List<View> viewsForCurrentDesignDocument = new ArrayList<View>(viewCountForCurrentDesignDoc);
//... for each view definition you loaded
        View v = DefaultView.create(viewName, viewMapFunction, viewReduceFunction);
        viewsForCurrentDesignDocument.add(v);
//... then create the designDocument proper
DesignDocument designDocument = DesignDocument.create(designDocName, viewsForCurrentDesignDocument);
//optionally you can insert it as a development design doc, retrieve an existing one and update, etc...
targetBucket.bucketManager().insertDesignDocument(designDocument);
于 2014-12-06T14:46:52.517 に答える
4

Roundsでは、サーバー側アプリの一部にcouchbaseを使用し、開発環境にはdockerイメージを使用しています。既存のカウチベースをダンプし、ダンプされたデータからカウチベースのバケットとビューを再作成するための 2 つのスクリプトを作成しました。

ビューmapreduce関数は、couchbase の設計ドキュメントとバケットを表すディレクトリ階層にプレーンな JavaScript ファイルとしてダンプされます。ビューに加えられた変更を追跡できるように、ディレクトリ ツリー全体をリポジトリにコミットすると非常に役立ちます。ファイルはプレーンな JavaScript であるため、お気に入りの IDE で編集して、自動構文チェックを楽しむことができます。

次の github リポジトリのスクリプトを使用できます。

https://github.com/rounds/couchbase-dump

リポジトリにコミットできるディレクトリ階層に、すべてのcouchbaseバケットとビューをjavascriptファイルとしてダンプします。次に、以前にダンプしたデータから、couchbase バケットとビューを再作成できます。

これが役に立ち、追加するものがある場合は、問題を作成するか、github に投稿してください。

于 2016-04-03T14:11:18.157 に答える