ane*_*eez 7 couchbase couchbase-view
我的应用程序有couchbase视图(map-reduce).目前,我正在将它们写在一个文本文件中,并从couchbase管理页面为每个新的couchbase服务器加载它们(繁琐且容易出错的过程).
无论如何,当我部署一个新的couchbase服务器或者当我创建一个新的存储桶时,我可以将所有这些视图从文本文件加载到couchbase中吗?
我记得在mysql中,我们曾经将所有插入查询和过程写入文件,并将文件提供给mysql(通过命令提示符)为每个新实例.是否有任何此类策略可用于couchbase?
从您先前与沙发床相关的问题来看,您似乎正在使用Java SDK?SDK的1.4和2.0行均允许以编程方式创建设计文档和视图。
您必须以某种方式将您的视图定义(映射函数,reduce函数以及将它们放入其中的设计文档)加载为字符串。请参阅位于http://docs.couchbase.com/couchbase-sdk-java-1.4/#design-documents的文档。
基本上,您通过创建一个ViewDesign
,DesignDocument
然后通过插入数据库CouchbaseClient
:
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);
Run Code Online (Sandbox Code Playgroud)
以同样的方式,您必须以某种方式将您的视图定义(地图函数,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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
569 次 |
最近记录: |