Note:任何形式的轉(zhuǎn)載請注明原文
此文章關(guān)注于單機(jī)模式的Couchbase,重點在于Java連接Couchbase的入門教程株扛。具體如何搭建Couchbase集群請自行搜索。
Couchbase洋闽,是MemBase與couchDb這兩個NoSQL數(shù)據(jù)庫的合并的產(chǎn)物公荧,是一個分布式的面向文檔的NoSQL數(shù)據(jù)庫管理系統(tǒng),即擁有CouchDB的簡單和可靠以及Memcached的高性能憋飞。
官方文檔關(guān)于Couchbase使用場景的說明
Couchbase Server can be used as a
- managed cache tier
- a key-value store
- a document database
安裝Couchbase
進(jìn)入官方網(wǎng)站,找到下載鏈接争剿。里面可以選擇不同的版本 社區(qū)版 / 商業(yè)版
已艰,我們此篇文章是講單機(jī)Couchbase的使用,不涉及到商業(yè)版本的功能蚕苇,所以選擇社區(qū)版哩掺。 筆者使用的是Mac OS X, 所以選擇Mac的社區(qū)版。
將下載的文件解壓得到app
文件涩笤,拖入到應(yīng)用程序即可嚼吞。點擊應(yīng)用里的Couchbase直接運(yùn)行盒件。
在啟動時會提示進(jìn)入配置頁面,自帶的測試數(shù)據(jù)庫可以選擇性安裝舱禽,以方便開始我們的demo.
總共有三個自帶`buckets`
- beer-sample
- gamesim-sample
- travel-sample
也可以在以后的Couchbase UI頁面找到 Setting -> Sample Buckets 選擇安裝
Couchbase UI
因為我們搭建的是本地環(huán)境沒有集群炒刁,所以訪問http://localhost:8091/
即可看到我們的Couchbase信息。
具體的頁面分為幾個標(biāo)簽頁(可點擊標(biāo)題的鏈接查看官網(wǎng)的說明)
Overview - Couchbase 概覽
顯示我們的所有的Cluster / Buckets / Servers 信息
Server Node - 服務(wù)器節(jié)點
對于服務(wù)器節(jié)點的管理誊稚,包括增加翔始、修改和刪除。
Data Buckets
Buckets 通常用作系統(tǒng)間的數(shù)據(jù)分發(fā)里伯。默認(rèn)Couchbase服務(wù)器會創(chuàng)建一個名字為default的Buckets
此頁面可以對Buckets進(jìn)行增加 / 刪除 / 修改 / flush
Query
這是我們最經(jīng)常用到的功能城瞎,可以在此處輸入類SQL語句(N1ql
)進(jìn)行數(shù)據(jù)的增刪改查操作。
Indexs - 索引
索引主要用于加快數(shù)據(jù)查詢的效率疾瓮。Couchbase的索引一般是放在單節(jié)點的脖镀。
其他
Secrity / Log / Settings
其他選項就不單獨介紹,在此入門使用中基本用不到狼电。具體內(nèi)容可在參閱官網(wǎng)教程蜒灰。
Couchbase的使用
官網(wǎng)關(guān)于Couchbase和傳統(tǒng)RMDB的對比
Couchbase Server | Relational databases |
---|---|
Buckets | Databases |
Buckets or Items (with type designator attribute) | Tables |
Items (key-value or document) | Rows |
Index | Index |
如果在安裝設(shè)置的時候已經(jīng)配置安裝了自帶數(shù)據(jù)庫beer-sample
,則可以在Couchbase UI 的Query頁面執(zhí)行以下指令
SELECT brewery_id, name FROM `beer-sample`
WHERE brewery_id IS NOT MISSING AND type="beer" LIMIT 5;
最終會得到JSON數(shù)據(jù)格式的結(jié)果。由此可以看出漫萄,我們執(zhí)行和SQL語句非常接近的語法卷员,得到的是一個JSON串(文檔)。
Java 調(diào)用Couchbase
官網(wǎng)Demo已經(jīng)寫的比較清楚腾务。 這兒我們把完整的代碼展示一下毕骡。
首先我們在IntelliJ Idea
(Eclipse
也可)里創(chuàng)建一個Maven項目。 在項目的根目錄下的pom.xml
里增加jar包依賴
<dependencies>
<dependency>
<groupId>com.couchbase.client</groupId>
<artifactId>java-client</artifactId>
<version>2.4.6</version>
</dependency>
</dependencies>
創(chuàng)建Example.java
Note: 在查詢指定的buckets之前一定要保證有相應(yīng)的PrimaryIndex岩瘦,否則會提示查詢錯誤未巫。
import com.couchbase.client.java.*;
import com.couchbase.client.java.document.*;
import com.couchbase.client.java.document.json.*;
import com.couchbase.client.java.query.*;
public class Example {
public static void main(String... args) throws Exception {
// Initialize the Connection
Cluster cluster = CouchbaseCluster.create("localhost");
// For more than one server -->
// Connects to a cluster on 10.0.0.1 and tries 10.0.0.2
//Cluster cluster = CouchbaseCluster.create("10.0.0.1", "10.0.0.2");
Bucket bucket = cluster.openBucket("default");
// Create a JSON Document
JsonObject arthur = JsonObject.create()
.put("name", "Arthur")
.put("email", "kingarthur@couchbase.com")
.put("interests", JsonArray.from("Holy Grail", "African Swallows"));
// Store the Document
bucket.upsert(JsonDocument.create("u:king_arthur", arthur));
// Load the Document and print it
// Prints Content and Metadata of the stored Document
System.out.println(bucket.get("u:king_arthur"));
// Create a N1QL Primary Index (but ignore if it exists)
bucket.bucketManager().createN1qlPrimaryIndex(true, false);
// Perform a N1QL Query
N1qlQueryResult result = bucket.query(
N1qlQuery.parameterized("SELECT name FROM default WHERE $1 IN interests",
JsonArray.from("African Swallows"))
);
// Print each found Row
for (N1qlQueryRow row : result) {
// Prints {"name":"Arthur"}
System.out.println(row);
}
// Just close a single bucket
bucket.close();
// Disconnect and close all buckets
cluster.disconnect();
}
}
詳細(xì)的Demo請參考代碼