公司中用到couchbase,但是发现,关于couchbase的教程很少,再此,做一个整理。

Couchbase,是MemBase与couchDb这两个NoSQL数据库的合并的产物,是一个分布式的面向文档的NoSQL数据库管理系统,即拥有CouchDB的简单和可靠以及Memcached的高性能。

couchbase的搭建,网上很多,就不在此说明,couchbase默认端口是8091.所以访问http://localhost:8091/即可看到我们的Couchbase信息。

couchbase 没有colletion couchbase教程_Server

 

Overview - Couchbase 概览,显示我们的所有的Cluster / Buckets / Servers 信息

Server Node - 服务器节点,对于服务器节点的管理,包括增加、修改和删除。

Data Buckets Buckets 通常用作系统间的数据分发。默认Couchbase服务器会创建一个名字为default的Buckets,此页面可以对         Buckets进行增加 / 删除 / 修改 / flush

Query 这是我们最经常用到的功能,可以在此处输入类SQL语句(N1ql)进行数据的增删改查操作。

Indexs - 索引

其他

 

 

官网关于Couchbase和传统RMDB的对比

Couchbase Server

Relational databases

Buckets

Databases

Buckets or Items (with type designator attribute)

Tables

Items (key-value or document)

Rows

Index

Index

如果在安装设置的时候已经配置安装了自带数据库beer-sample,则可以在Couchbase UI 的Query页面执行以下指令

SELECT brewery_id, name FROM `beer-sample` 
     WHERE brewery_id IS NOT MISSING AND type="beer" LIMIT 5;

couchbase 没有colletion couchbase教程_结点_02

执行结果

最终会得到JSON数据格式的结果。由此可以看出,我们执行和SQL语句非常接近的语法,得到的是一个JSON串(文档)。

执行sql之前一定要先创建索引

CREATE PRIMARY INDEX ON `USER_DATA`

其实和普通的sql类似

SELECT * FROM USER_DATA where rid='17530'  limit 2

SELECT * FROM USER_DATA where uid=1287440  limit 1

SELECT * FROM USER_DATA where flag=1 and uid=1287440  limit 1

这种非大写的bucket,一定要引起来,但不是引号

SELECT * FROM `app-bucket` where id=7  limit 10

 

Couchbase 群集所有点都是对等的,只是在创建群或者加入集群时需要指定一个主节点,一旦结点成功加入集群,所有的结点对等。

couchbase 没有colletion couchbase教程_结点_03

对等网的优点是,集群中的任何节点失效,集群对外提供服务完全不会中断,只是集群的容量受影响。 

由于 couchbase 是对等网集群,所有的节点都可以同时对客户端提供服务,

vBucket 概念的引入,是 couchbase 实现 auto sharding,在线动态增减节点的重要基础。

简单的解释 vBucket 可以从静态分片开始说起,静态分片的做法一般是用 key 算出一个 hash,得到对应的服务器,这个算法很简单。