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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

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

couchbase

使用Couchbase 2.0開發新應用程序時,有時需要從代碼中動態創建視圖。 例如,在安裝應用程序,編寫一些測試時,可能會需要此方法;或者,在構建框架時,您也可以使用此方法,并希望動態創建視圖以查詢數據。 這篇文章展示了如何做到這一點。

先決條件

  • Couchbase服務器2.0
  • Couchbase Jave客戶端庫1.1.x
  • 啤酒樣品數據集

如果使用的是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創建和管理視圖

完整的Maven項目在Github上可用。

連接到Couchbase群集

要從Java創建視圖時,要做的第一件事顯然是連接到集群。

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>
  • 創建到群集不同節點的URI列表-第5-6行。 (在此示例中,我正在單個節點上工作)
  • 連接到存儲桶,在本例中為Beer-sample -line9。如果存儲桶受保護,則可以包括密碼(此處不是這種情況,因此我將發送一個空字符串)
  • 如果您正在尋找有關Couchbase和Java的更多信息,可以從DZone閱讀這篇文章: Hello World with Couchbase和Java 。

    現在讓我們談談Couchbase視圖。 您可以使用views / map-reduce函數基于存儲在Couchbase中的JSON文檔的內容來索引和查詢Couchbase Server中的數據。 有關視圖的更多信息,請參見《 Couchbase服務器手冊》的“視圖基礎”一章 。

    從Java創建視圖

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

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

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

    以下代碼允許您從Java進行操作:

    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行創建設計文檔。
    • 使用com.couchbase.client.protocol.views.ViewDesign類創建一個具有名稱和地圖功能的視圖-第14行。
    • 您可以將此視圖添加到設計文檔中-第15行
    • 最后,使用CouchbaseClient.createDesignDoc方法將文檔保存到群集中。

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

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

    • View Writing Best Practice :例如在map函數中,我沒有發出任何值。 我只發出一個密鑰(啤酒名稱)。
    • 視圖和存儲的數據
    • 開發和生產視圖 :在上面的視圖中,我已經在開發環境中創建了該視圖(dev_前綴),使我可以在數據的子集(集群/索引)上對其進行測試和使用

    使用視圖

    首先,您剛剛創建的視圖處于“開發模式”,默認情況下,Java客戶端SDK僅在處于“生產模式”時訪問該視圖。 這意味著從應用程序調用視圖時,它將在生產環境中搜索它。 因此,在連接到Couchbase集群之前,您需要設置視圖模式以進行開發。

    這是使用Java SDK中的viewmode環境變量完成的,可以使用以下方法進行設置:

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

    完成后,您可以使用以下代碼調用視圖:

    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} ...

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

    • 將viewmode設置為development –第4行
    • 使用CouchbaseClient.getView()方法第6行獲取視圖。 如您所見,我只是在設計文檔中使用啤酒名稱(而不是dev_beer,因為我處于開發模式,所以Couchbase會知道在哪里搜索)
    • 創建一個查詢并設置一個限制(20),并要求SDK返回文檔本身
      setIncludeDocs(true)-行8-將以最有效的方式從Couchbase服務器返回文檔
    • 在使用query.setStale(Stale.FALSE)返回結果之前,要求系統更新索引。 線9-。 再次使用setStale方法時要小心。 只是為了確保這里是有關它的文檔: 索引更新和過時的參數
    • 執行查詢–第10行
    • 并使用結果–第11-13行

    結論

    在本文中,您了解了:

    • 如何從Java創建Couchbase視圖
    • 從Java調用此視圖
    • 從Couchbase Java客戶端庫配置開發/生產模式視圖

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

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

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

    couchbase

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。