公司中用到couchbase,但是发现,关于couchbase的教程很少,再此,做一个整理。
Couchbase,是MemBase与couchDb这两个NoSQL数据库的合并的产物,是一个分布式的面向文档的NoSQL数据库管理系统,即拥有CouchDB的简单和可靠以及Memcached的高性能。
couchbase的搭建,网上很多,就不在此说明,couchbase默认端口是8091.所以访问http://localhost:8091/即可看到我们的Couchbase信息。
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;
执行结果
终会得到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 是对等网集群,所有的节点都可以同时对客户端提供服务,
vBucket 概念的引入,是 couchbase 实现 auto sharding,在线动态增减节点的重要基础。
简单的解释 vBucket 可以从静态分片开始说起,静态分片的做法一般是用 key 算出一个 hash,得到对应的服务器,这个算法很简单。