阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Docker中CouchDB安装配置图解

260次阅读
没有评论

共计 6160 个字符,预计需要花费 16 分钟才能阅读完成。

CouchDB 介绍:
CouchDB 是 Apache 组织发布的一款开源的、面向文档类型的 NoSQL 数据库。由 Erlang 编写,使用 json 格式保存数据。CouchDB 以 RESTful 的格式提供服务
可以很方便的对接各种语言的客户端
CouchDB 最大的竞争对手就是熟悉的 MangoDB。它们的不同点比较会在另外一篇里面写入
CouchDB 目标是做下一代的 Web 应用存储系统

CouchDB 下载,安装:
官网:http://couchdb.apache.org/ 目前只有 2.0.0 版本 2016 年 9 月份
CouchDB 安装完成后自动启动,默认是 5984

Docker 下的安装配置:
1、先创建一个 couchdb 容器,并赋值给 couch1
COUCH1=$(docker run -d -p 5984 -v /var/lib/couchdb couchdb)
root@Ubuntu:~# echo $COUCH1

6d708f72e25e9f0d693aa5a8ce5afd1a61e945355f728f409bc5a90676e0524c

2、给 couchDB 中插入数据
  要确保你的 HOST 是可用的
$ HOST=localhost #这里如果 localhost 不行,就更换成主机 ip
$ URL=”http://$HOST:$(docker port $COUCH1 5984 | grep -o ‘[1-9][0-9]*$’)/_utils/”
$ echo “Navigate to $URL in your browser, and use the couch interface to add data”

操作结果:

root@ubuntu:~# HOST=123.xx.xx.x8 #这里是公网 ip 就不显示出来了
root@ubuntu:~# URL=”http://$HOST:$(docker port $COUCH1 5984 | grep -o ‘[1-9][0-9]*$’)/_utils/”
root@ubuntu:~# docker port $COUCH1 5984 #这里映射到了宿主机 32768 端口,并监听所有 ip
0.0.0.0:32768
root@ubuntu:~# echo “Navigate to $URL in your browser, and use the couch interface to add data”
Navigate to http://123.xx.xx.x8:32768/_utils/ in your browser, and use the couch interface to add data
# 打开浏览器输入 http://123.xx.xx.x8:32768/_utils/ 将会显示 couchDB 的页面

Docker 中 CouchDB 安装配置图解

创建数据库账号
控制台页面的左边的主要部分列出了当前数据库,并提供了一个 Create Database … 的操作;右边的侧边栏呢,从上到下分别提供了 工具、文档、诊断 和 当前数据库 3 个菜单。最右下角是版本号和一句话:“Welcome to Admin Party! Everyone is admin. Fix this”,什么意思呢?就是说 ConchDB 默认用户都是 admin,对于用惯了关系型数据库的我们,本能的就会感觉这并不安全,没错,其实就是不安全!!!!,所以,点击 Fix this 来新建一个用户吧。
Docker 中 CouchDB 安装配置图解

 

注意:如果使用中发现某些按钮是灰色的或者 Compact & Cleanup 一直在转圈等待,请先看看自己是不是管理员。

点击 Create Database … 并输入一个数据库名称就可以新建一个数据啦

Docker 中 CouchDB 安装配置图解

创建成功后会跳转到当前新建的数据库,如果我们返回 Overview 页面就会发现刚才新建的数据库已经被添加到列表中了。

Docker 中 CouchDB 安装配置图解

CouchDB 的增删改操作【INSERT/UPDATE/DELETE】

在新建的数据库的管理页面中点击 New Document,我们就可以新建一个文档,其中会包含一个默认的 Id 字段作为唯一标识,我们可以不用管他,同时也可以点击 Add Field 来新增字段,这里假设我们新增一个人,字段如下图:

Docker 中 CouchDB 安装配置图解

点击右面的“source”按钮,就能看到 json 格式的内容

Docker 中 CouchDB 安装配置图解

点击上面的“Save doucement”来保存数据,然后再主页就能看到我们新创建的数据库了

Docker 中 CouchDB 安装配置图解

双击 Field 或者 Value 列的单元格可以更改字段名或字段值

点击右侧的绿色对勾按钮后,该字段的值将会被保存,此时切换到 Source 标签就可以看到 json 格式的数据

编辑完成后点击上方的 Save Document 按钮就可以将刚才的 json 数据保存到数据库中,保存成功后系统会自动为我们添加一个 rev 字段,这个字段代表当前文档的版本号

更新操作呢也比较简单,只需要单击当前文档的 Key 或者双击 Value 就可以进入编辑页面,在编辑页面中不但能修改字段的 Key/Value,还可以新增和删除字段,同样,点击 Save Document 即可保存当前修改,同时,我们可以注意到,该文档的 rev 值已经发生了变化,这代表该文档的版本号已经被更新

Docker 中 CouchDB 安装配置图解

同样,进入当前记录的详情页我们就可以看到 Delete Document 按钮,点击之后当前文档就会被删除。
但是,值得注意的是,当我们使用 Delete Document 操作将文档删除后,表面看是没有数据了,但是该数据仍然占用了那么多空间,并没有减少,如下图:

Docker 中 CouchDB 安装配置图解

这时我们需要进入数据库详情页,使用 Compact & Cleanup… 中的 Compact Database 操作来清理被占用的空间,如果发现此功能点击之后一直在转圈等待,去看看自己是不是管理员用户吧。

使用 Docker 再次创建一个 couchDB
COUCH2=$(docker run -d -p 5984 –volumes-from $COUCH1 couchdb)

使用浏览器浏览第二个数据库

HOST=localhost #这里如果 localhost 不行,就更换成主机 ip
URL=”http://$HOST:$(docker port $COUCH2 5984 | grep -o ‘[1-9][0-9]*$’)/_utils/”
echo “Navigate to $URL in your browser, and use the couch interface to add data”

这里可以看到数据已经同步到 couchdb 的第二台上面临

Docker 中 CouchDB 安装配置图解

使用 cURL 通过 RESTful API 对 CouchDB 进行增删查改
Tips: 对 cURL 还不太了解的亲们可以搜索下,很好用的工具,可以从这里下载:http://curl.haxx.se/download/
注意:为了测试方便,我们删除原来的数据库。
前面已经介绍过,CouchDB 支持使用 RESTful API 的方式来对数据进行操作,例如,我们在浏览器中输入 http://x.x.x.x:32768/demo 就可以查看 demo 数据库中详细信息。如图:

Docker 中 CouchDB 安装配置图解

下面是借鉴别人的操作流程,自己没有时间敲了,大家随意感受一下 CouchDB 流畅的 RESTful 操作方式:

 

# 获取 CouchDB 相关信息
curl -X GET http://127.0.0.1:5984
{“couchdb”:”Welcome”,”uuid”:”a853c053a5a54a4d3ccbaad0d9ffd3b0″,”version”:”1.6.1″,”vendor”:{“version”:”1.6.1″,”name”:”The Apache Software Foundation”}}
 
# 创建 demo 数据库(需要 admin 权限,参照下一条命令)
curl -X PUT http://127.0.0.1:5984/demo
{“error”:”unauthorized”,”reason”:”You are not a server admin.”}
 
# 使用用户名密码登录 CouchDB,并创建 demo 数据库
curl -X PUT http://username:password@127.0.0.1:5984/demo
{“ok”:true}
 
# 查看所有数据库
curl -X GET http://127.0.0.1:5984/_all_dbs
[“_replicator”,”_users”,”demo”]
 
# 查看 demo 数据库相关信息
curl -X GET http://127.0.0.1:5984/demo
{“db_name”:”demo”,”doc_count”:0,”doc_del_count”:0,”update_seq”:0,”purge_seq”:0,”compact_running”:false,”disk_size”:79,”data_size”:0,”instance_start_time”:”1452000207199340″,”disk_format_version”:6,”committed_update_seq”:0}
 
# 向 demo 数据库中添加一个文档(自动生成 Id),注意:windows 下需要使用 Content-Type:application/json 的 HttpHeader
curl -H “Content-Type:application/json”  -X POST http://127.0.0.1:5984/demo -d {\”name\”:\”fooly\”}
{“ok”:true,”id”:”3ebb59dd78ff448f283f48817800321c”,”rev”:”1-0e4ea534f2c1e7f05e21804b5f2f7a71″}
 
# 查看 demo 数据库中的所有文档
curl -X GET http://127.0.0.1:5984/demo/_all_docs
{“total_rows”:1,”offset”:0,”rows”:[
{“id”:”3ebb59dd78ff448f283f48817800321c”,”key”:”3ebb59dd78ff448f283f48817800321c”,”value”:{“rev”:”1-0e4ea534f2c1e7f05e21804b5f2f7a71″}}
]}
 
# 获取一个 uuid
curl -X GET http://127.0.0.1:5984/_uuids
{“uuids”:[“3ebb59dd78ff448f283f4881780033c0”]}
 
# 向 demo 数据库中添加一个文档(使用获取到的 uuid 作为 Id)
curl -H “Content-Type:application/json”  -X PUT http://127.0.0.1:5984/demo/3ebb59dd78ff448f283f4881780033c0 -d {\”name\”:\”momo314\”}
{“ok”:true,”id”:”3ebb59dd78ff448f283f4881780033c0″,”rev”:”1-eb393d36ac1ad38ada8361d94fc5d0b6″}
 
# 更新指定 Id 的文档(但是失败了,因为 CouchDB 是按版本提交的,同一个源提交多次会造成一定的混乱。所以,需要指定文档版本进行控制。)
curl -H “Content-Type:application/json”  -X PUT http://127.0.0.1:5984/demo/3ebb59dd78ff448f283f4881780033c0 -d {\”name\”:\”momo314\”,\”age\”:18}
{“error”:”conflict”,”reason”:”Document update conflict.”}
 
# 更新指定 Id 和指定版本的文档
curl -H “Content-Type:application/json”  -X PUT http://127.0.0.1:5984/demo/3ebb59dd78ff448f283f4881780033c0 -d {\”_rev\”:\”1-eb393d36ac1ad38ada8361d94fc5d0b6\”,\”name\”:\”momo314\”,\”age\”:18}
{“ok”:true,”id”:”3ebb59dd78ff448f283f4881780033c0″,”rev”:”2-5d081e17588c03c27340035e420edecd”}
 
# 获取指定 Id 的文档内容
curl -X GET http://127.0.0.1:5984/demo/3ebb59dd78ff448f283f4881780033c0
{“_id”:”3ebb59dd78ff448f283f4881780033c0″,”_rev”:”2-5d081e17588c03c27340035e420edecd”,”name”:”momo314″,”age”:18}
 
# 删除指定 Id 和 rev 版本号的文档
curl -X DELETE http://username:password@127.0.0.1:5984/demo/3ebb59dd78ff448f283f4881780033c0?rev=2-5d081e17588c03c27340035e420edecd
{“ok”:true,”id”:”3ebb59dd78ff448f283f4881780033c0″,”rev”:”2-5d081e17588c03c27340035e420edecd”}
 
# 查看 demo 数据库中的所有文档(刚才的文档确实被删除掉了)
curl -X GET http://127.0.0.1:5984/demo/_all_docs
{“total_rows”:1,”offset”:0,”rows”:[
{“id”:”3ebb59dd78ff448f283f48817800321c”,”key”:”3ebb59dd78ff448f283f48817800321c”,”value”:{“rev”:”1-0e4ea534f2c1e7f05e21804b5f2f7a71″}}
]}
 
# 删除 demo 数据库(需要 admin 权限,参照下一条命令)
curl -X DELETE http://127.0.0.1:5984/demo
{“error”:”unauthorized”,”reason”:”You are not a server admin.”}
 
# 使用用户名密码登录 CouchDB,并删除 demo 数据库
curl -X DELETE http://username:password@127.0.0.1:5984/demo
{“ok”:true}
 
# 查看所有数据库(demo 数据库确实被删除掉了)
curl -X GET http://127.0.0.1:5984/_all_dbs
[“_replicator”,”_users”]

博文参考:http://magic-conch.cool/article/2016/01/05/windows-couchdb-1
官网参考:https://docs.docker.com/engine/examples/couchdb_data_volumes/#create-first-database

��文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/142405.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6160字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中