1、简介

CouchDB是Apache组织的一款开源的、面向文档类型的NoSQL数据库。,可以通过 RESTful ,JavaScript Object Notation (JSON) API 访问。术语 “Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB 的目标具有高度可伸缩性,提供了高可用性和高可靠性,即使运行在容易出现故障的硬件上也是如此。CouchDB 最初是用 C++ 编写的,但在 2008 年 4 月,这个项目转移到 Erlang OTP 平台进行容错测试。
由于CouchDB以RESTful的格式提供服务,可以很方便的对接各种语言的客户端,CouchDB最大的竞争对手就是熟悉的MangoDB。

2、特点

  • (1)、CouchDB是分布式的数据库,他可以把存储系统分布到n台物理的节点上面,并且很好的协调和同步节点之间的数据读写一致性。这当然也得靠Erlang无与伦比的并发特性才能做到。对于基于web的大规模应用文档应用,分布式可以让它不必像传统的关系数据库那样分库拆表,在应用代码层进行大量的改动。
  • (2)、CouchDB是面向文档的数据库,存储半结构化的数据,比较类似lucene的index结构,特别适合存储文档,因此很适合CMS,电话本,地址本等应用,在这些应用场合,文档数据库要比关系数据库更加方便,性能更好。
  • (3)、CouchDB支持REST API,可以让用户使用JavaScript来操作CouchDB数据库,也可以用JavaScript编写查询语句,我们可以想像一下,用AJAX技术结合CouchDB开发出来的CMS系统会是多么的简单和方便。

3、Docker安装couchdb

  • Step1: 下载镜像

    docker pull couchdb

  • Step2: 创建一个couchdb容器,赋值给COUCH1

    docker run -d -p 5984:5984 -v /var/lib/couchdb couchdb

  • Step3: 打开浏览器,输入http://127.0.0.1:32769/_utils
    couchdb

4、使用Go调用测试

  • Step1: 使用图形界面创建数据库mydb

  • Step2: 编写 golang 往mydb put数据(JSON格式)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    package test

    import (
    "github.com/joelnb/sofa"
    "testing"
    "time"
    "fmt"
    )

    func CouchDB(){
    conn,err:=sofa.NewConnection("http://127.0.0.1:5984",10*time.Second,sofa.NullAuthenticator())

    if err !=nil{
    panic(err)
    }

    db:=conn.Database("mydb")
    doc:=&struct {
    sofa.DocumentMetadata
    Name string `json:"name"`
    Org string `json:"type"`
    }{
    DocumentMetadata:sofa.DocumentMetadata{
    ID:"zone7",
    },
    Name:"庄国强",
    Org:"Teach",
    }
    rev,err:=db.Put(doc)
    if err!=nil{
    panic(err)
    }
    fmt.Println(rev)
    }

    func TestCouchDB(t *testing.T){
    CouchDB()
    }

    TestCouchDB方法调用成功后,浏览器显示如下所示:
    couchdb2