日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

couchbase_Couchbase 101:从Java应用程序创建视图(MapReduce)

發(fā)布時(shí)間:2023/12/3 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 couchbase_Couchbase 101:从Java应用程序创建视图(MapReduce) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

couchbase

使用Couchbase 2.0開發(fā)新應(yīng)用程序時(shí),有時(shí)需要從代碼中動(dòng)態(tài)創(chuàng)建視圖。 例如,在安裝應(yīng)用程序,編寫一些測試時(shí),可能會(huì)需要此方法;或者,在構(gòu)建框架時(shí),您也可以使用此方法,并希望動(dòng)態(tài)創(chuàng)建視圖以查詢數(shù)據(jù)。 這篇文章展示了如何做到這一點(diǎn)。

先決條件

  • Couchbase服務(wù)器2.0
  • Couchbase Jave客戶端庫1.1.x
  • 啤酒樣品數(shù)據(jù)集

如果使用的是Maven,則可以在pom.xml中使用以下信息來添加Java客戶端庫:

<repositories><repository><id>couchbase</id><name>Couchbase Maven Repository</name><layout>default</layout><url>http://files.couchbase.com/maven2/</url><snapshots><enabled>false</enabled></snapshots></repository> </repositories><dependencies><dependency><groupid>couchbase</groupid><artifactid>couchbase-client</artifactid><version>1.1.0</version><type>jar</type></dependency> </dependencies>

在線查看https://gist.github.com/4337172

從Java創(chuàng)建和管理視圖

完整的Maven項(xiàng)目在Github上可用。

連接到Couchbase群集

要從Java創(chuàng)建視圖時(shí),要做的第一件事顯然是連接到集群。

import com.couchbase.client.CouchbaseClient; ... ...List<uri> uris = new LinkedList<uri>();uris.add(URI.create("http://127.0.0.1:8091/pools"));CouchbaseClient client = null;try {client = new CouchbaseClient(uris, "beer-sample", "");// put your code hereclient.shutdown(); } catch (Exception e) {System.err.println("Error connecting to Couchbase: " + e.getMessage());System.exit(0);}... ... </uri></uri>
  • 創(chuàng)建到群集不同節(jié)點(diǎn)的URI列表-第5-6行。 (在此示例中,我正在單個(gè)節(jié)點(diǎn)上工作)
  • 連接到存儲(chǔ)桶,在本例中為Beer-sample -line9。如果存儲(chǔ)桶受保護(hù),則可以包括密碼(此處不是這種情況,因此我將發(fā)送一個(gè)空字符串)
  • 如果您正在尋找有關(guān)Couchbase和Java的更多信息,可以從DZone閱讀這篇文章: Hello World with Couchbase和Java 。

    現(xiàn)在讓我們談?wù)凜ouchbase視圖。 您可以使用views / map-reduce函數(shù)基于存儲(chǔ)在Couchbase中的JSON文檔的內(nèi)容來索引和查詢Couchbase Server中的數(shù)據(jù)。 有關(guān)視圖的更多信息,請(qǐng)參見《 Couchbase服務(wù)器手冊(cè)》的“視圖基礎(chǔ)”一章 。

    從Java創(chuàng)建視圖

    從Java創(chuàng)建視圖確實(shí)非常容易:Java客戶端庫包含完成該操作的所有類和方法。 作為一個(gè)具體的用例,我們將使用Couchbase Java教程中描述的應(yīng)用程序。

    遵循本教程時(shí),您需要手動(dòng)創(chuàng)建一些視圖,如此處所示 。 在此示例中,我們將直接在Java代碼中創(chuàng)建映射函數(shù),然后將其存儲(chǔ)到Couchbase Server。 本教程要求您創(chuàng)建以下工件:

    • 一個(gè)名為“ by_name”的視圖
    • 在名為“ dev_beer”的設(shè)計(jì)文檔中(開發(fā)模式)
    • 和map函數(shù),如下所示:
    function (doc, meta) {if(doc.type && doc.type == 'beer') {emit(doc.name, null);}}

    以下代碼允許您從Java進(jìn)行操作:

    import com.couchbase.client.protocol.views.DesignDocument; import com.couchbase.client.protocol.views.ViewDesign; ...DesignDocument designDoc = new DesignDocument('dev_beer');String viewName = 'by_name';String mapFunction ='function (doc, meta) {\n' +' if(doc.type && doc.type == \'beer\') {\n' +' emit(doc.name);\n' +' }\n' +'}';ViewDesign viewDesign = new ViewDesign(viewName,mapFunction);designDoc.getViews().add(viewDesign);client.createDesignDoc( designDoc ); ...
    • 使用com.couchbase.client.protocol.views.DesignDocument類-第4行創(chuàng)建設(shè)計(jì)文檔。
    • 使用com.couchbase.client.protocol.views.ViewDesign類創(chuàng)建一個(gè)具有名稱和地圖功能的視圖-第14行。
    • 您可以將此視圖添加到設(shè)計(jì)文檔中-第15行
    • 最后,使用CouchbaseClient.createDesignDoc方法將文檔保存到群集中。

    如果需要使用reduce函數(shù)(內(nèi)置或自定義),則只需將其作為第三個(gè)參數(shù)傳遞給ViewDesign構(gòu)造函數(shù)。

    從Java或任何其他工具/語言開發(fā)視圖時(shí),請(qǐng)確保您了解什么是最佳實(shí)踐以及索引的生命周期。 這就是為什么我邀請(qǐng)您閱讀Couchbase文檔中的以下章節(jié):

    • View Writing Best Practice :例如在map函數(shù)中,我沒有發(fā)出任何值。 我只發(fā)出一個(gè)密鑰(啤酒名稱)。
    • 視圖和存儲(chǔ)的數(shù)據(jù)
    • 開發(fā)和生產(chǎn)視圖 :在上面的視圖中,我已經(jīng)在開發(fā)環(huán)境中創(chuàng)建了該視圖(dev_前綴),使我可以在數(shù)據(jù)的子集(集群/索引)上對(duì)其進(jìn)行測試和使用

    使用視圖

    首先,您剛剛創(chuàng)建的視圖處于“開發(fā)模式”,默認(rèn)情況下,Java客戶端SDK僅在處于“生產(chǎn)模式”時(shí)訪問該視圖。 這意味著從應(yīng)用程序調(diào)用視圖時(shí),它將在生產(chǎn)環(huán)境中搜索它。 因此,在連接到Couchbase集群之前,您需要設(shè)置視圖模式以進(jìn)行開發(fā)。

    這是使用Java SDK中的viewmode環(huán)境變量完成的,可以使用以下方法進(jìn)行設(shè)置:

    • 在您的代碼中,在客戶端連接到集群之前添加以下行:System.setProperty('viewmode','development');
    • 在命令行-Dviewmode = development
    • 在屬性文件中viewmode = development

    完成后,您可以使用以下代碼調(diào)用視圖:

    import import com.couchbase.client.protocol.views.*;...System.setProperty('viewmode', 'development'); // before the connection to Couchbase ...View view = client.getView('beer', 'by_name');Query query = new Query();query.setIncludeDocs(true).setLimit(20);query.setStale( Stale.FALSE );ViewResponse result = client.query(view, query);for(ViewRow row : result) {row.getDocument(); // deal with the document/data} ...

    此代碼查詢您剛剛創(chuàng)建的視圖。 這意味著Couchbase Server將基于您的map函數(shù)生成索引,并向服務(wù)器查詢結(jié)果。 在這種情況下,我們特別希望設(shè)置限制為20個(gè)結(jié)果,并且還可以通過設(shè)置Stale.FALSE獲得最新的結(jié)果。

    • 將viewmode設(shè)置為development –第4行
    • 使用CouchbaseClient.getView()方法第6行獲取視圖。 如您所見,我只是在設(shè)計(jì)文檔中使用啤酒名稱(而不是dev_beer,因?yàn)槲姨幱陂_發(fā)模式,所以Couchbase會(huì)知道在哪里搜索)
    • 創(chuàng)建一個(gè)查詢并設(shè)置一個(gè)限制(20),并要求SDK返回文檔本身
      setIncludeDocs(true)-行8-將以最有效的方式從Couchbase服務(wù)器返回文檔
    • 在使用query.setStale(Stale.FALSE)返回結(jié)果之前,要求系統(tǒng)更新索引。 線9-。 再次使用setStale方法時(shí)要小心。 只是為了確保這里是有關(guān)它的文檔: 索引更新和過時(shí)的參數(shù)
    • 執(zhí)行查詢–第10行
    • 并使用結(jié)果–第11-13行

    結(jié)論

    在本文中,您了解了:

    • 如何從Java創(chuàng)建Couchbase視圖
    • 從Java調(diào)用此視圖
    • 從Couchbase Java客戶端庫配置開發(fā)/生產(chǎn)模式視圖

    本示例僅限于視圖的創(chuàng)建,如果要管理設(shè)計(jì)文檔,可以查看與設(shè)計(jì)文檔和視圖相關(guān)的其他方法:getDesignDocument(),deleteDesignDocument()等。

    參考: Couchbase 101:在Tug的Blog博客上,從我們的JCG合作伙伴 Tugdual Grall在Java應(yīng)用程序中創(chuàng)建視圖(MapReduce) 。

    翻譯自: https://www.javacodegeeks.com/2013/01/couchbase-101-create-views-mapreduce-from-your-java-application.html

    couchbase

    總結(jié)

    以上是生活随笔為你收集整理的couchbase_Couchbase 101:从Java应用程序创建视图(MapReduce)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。