暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Couchbase6介绍及安装

Couchbase6介绍及安装

文章来源: 陶老师运维笔记- 微信公众号

couchbase.jpg

1. Couchbase介绍

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

内置了Memcached的所有服务,可以说是Memcached的升级版,分布式版本。Couchbase是高性能,高伸缩性和高可用的分布式缓存系统。

2. 概念

https://docs.couchbase.com/server/6.0/learn/data/document-data-model.html

2.1 Couchbase名词术语

项目 说明
Data: 要存储的数据,在Couchbase中一条数据就是一个k:v的item。
Buckets: 直译为桶,是couchbase中组织数据的一种方式,类似于关系数据库中的database。有三种 : 1)Couchbase类型:存储到内存和硬盘中。2)Ephemeral类型:只存储到内存中,Couchbase特有。3)Memcached类型:兼容Memcached协议,只存储到内存中。
Services: 不同类型的service支持不同的查询方式。例如Data Service可以允许通过key来获取value,Query Service可以允许通过类sql的查询语言来获取结果,并且这些Service是可以独立的部署在不同的节点上的。
Indexes: Index索引数据允许高速的访问数据。
Server: 一台couchbase节点被称之为Server
Cluster: 多个Server节点组合成为一个Cluster。
Rebalance: data和index在集群内多个节点之间重新负载均衡的过程。任何集群配置的变动都最好做一次Rebalance,需要手动触发。
Scaling: 若某组件要承担较重,可进行横向扩容。

Services类别:

  • Analytics:提供join,set,aggregation和group之类操作,这类操作常是大数据量复杂操作。
  • Data:通过key来获取value
  • Eventing:提供即时操作,近乎实时的对数据进行操作
  • Query:提供类sql的查询
  • Search:专门为全文搜索创建索引,全文搜索可以用于自然语言搜索
  • Index:为Analytics和Query创建索引

2.2 Couchbase和RMDB对比

Couchbase Server Relational databases 备注
Buckets Databases -
Documents Tables -
Items (key-value or document) Rows -
Index Index -

3. Couchbase安装

3.1 Linux下安装

安装方法链接如下

https://docs.couchbase.com/server/6.0/install/install-intro.html

Linux环境下可方便的使用yum安装Couchbase。

#linux安装
curl -O http://packages.couchbase.com/releases/couchbase-release/couchbase-release-1.0-5-x86_64.rpm
sudo rpm -i couchbase-release-1.0-5-x86_64.rpm
sudo yum update
sudo yum install couchbase-server

3.2 Docker安装

https://docs.couchbase.com/server/6.0/install/getting-started-docker.html

$docker search couchbase NAME DESCRIPTION STARS OFFICIAL AUTOMATED couchbase Couchbase Server is a NoSQL document databas… 486 [OK] couchbase/server Couchbase Server is the world’s most complet… 82 [OK] $docker pull couchbase #安装 $docker run -d --name couchbase-db1 -p 8091-8096:8091-8096 -p 11210-11211:11210-11211 couchbase # $docker logs couchbase-db1 Starting Couchbase Server -- Web UI available at http://<ip>:8091 and logs available in /opt/couchbase/var/lib/couchbase/logs #查看容器内部ip,组成cluster会有用 docker inspect --format '{{ .NetworkSettings.IPAddress }}' couchbase-db1 172.17.0.2

3.3 初始化集群

https://docs.couchbase.com/server/6.0/manage/manage-nodes/create-cluster.html

安装完后可使用命令行或访问http://localhost:8091登录控制台进行设置初始密码以及后台管理。

1)命令行初始化:

#登录http://localhost:8091 进行初始化或者进容器操作
$docker exec -it couchbase-db1 sh
$cd /opt/couchbase/bin

#初始化示例,service包括query
$couchbase-cli cluster-init -c 127.0.0.1:8091  --cluster-name=cbase1 \
--cluster-username admin --cluster-password adminadmin \
--services data,index,query \
--cluster-ramsize 2048 --cluster-index-ramsize 256

#如下其它初始化参数查看
$ couchbase-cli cluster-init -h

$couchbase-cli  cluster-init -c 127.0.0.1:8091 --cluster-username=admin --cluster-password=adminadmin --cluster-name=cbase1  --cluster-ramsize=4096

2)登录web管理后台初始化:

或者也可以登录http://localhost:8091 进行初始化。
初始化

ceate

Configure Couchbase Server:
configure

Dashboard:

成功登录后,进行Couchbase6.0.x的管理后台,dashboard界面如图所示。
dashboard

4. 简单使用

4.1 Load测试数据

可以load测试bucket beer-sample等。
load测试数据

4.2 执行N1QL命令

**N1QL实际上可以理解成NOSQL+JSON,一种语法类似于SQL的语言。**可以在couchbase上执行,主要考虑是方便熟悉关系型数据库的开发人员快速上手。
**与SQL类似,N1QL也分为DDL与DML语句,不同的是DDL语句是create indexes,modify indexes,drop indexes,这里index与关系型数据库中的表的概念有点像,也是必须创建对应的index才能进行增删改查。**可是实际上还有更丰富的功能会在下面详细说。

N1QL 命令执行

  • 在Couchbase UI 的Query页面执行
  • cbq命令查询

1) Couchbase UI 查询
可以在Couchbase UI 的Query页面执行以下指令.

$ SELECT 'Hello World' AS Greeting; $ SELECT brewery_id, name FROM `beer-sample` WHERE brewery_id IS NOT MISSING AND type="beer" LIMIT 5;

query

2) cbq命令查询

$docker exec -it couchbase-db1 sh $cd /opt/couchbase/bin $./cbq -u admin -p adminadmin -engine=http://127.0.0.1:8091/ cbq> SELECT 'Hello World' AS Greeting; { "requestID": "c18bb9cc-9729-410c-b2e6-def48d86e1ae", "signature": { "Greeting": "string" }, "results": [ { "Greeting": "Hello World" } ], "status": "success", "metrics": { "elapsedTime": "1.119411ms", "executionTime": "900.64µs", "resultCount": 1, "resultSize": 49 } } cbq>SELECT brewery_id, name FROM `beer-sample` WHERE brewery_id IS NOT MISSING AND type="beer" LIMIT 3; { "requestID": "14289a53-e707-4f93-ad21-d3164b74eb46", "signature": { "brewery_id": "json", "name": "json" }, "results": [ { "brewery_id": "21st_amendment_brewery_cafe", "name": "21A IPA" }, { "brewery_id": "21st_amendment_brewery_cafe", "name": "563 Stout" }, { "brewery_id": "21st_amendment_brewery_cafe", "name": "Amendment Pale Ale" } ], "status": "success", "metrics": { "elapsedTime": "7.59145ms", "executionTime": "7.393078ms", "resultCount": 3, "resultSize": 307 } }

注意: 非大写的bucket,需要用反引号``引起来!

参考


微信公众号_陶老师运维

最后修改时间:2020-01-19 19:29:35
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论