logo
icon

CouchDB

一个开源的、基于HTTP/JSON请求、支持跨平台同步的文档数据库

template cover
部署次数5
发布者lilixxs
创建于2025-02-19
模版内的服务
service icon
标签
Database

CouchDB 简介

一个开源的面向文档的无缝多主同步数据库,具有直观的 HTTP/JSON API,专为可靠性设计。

类似于 MongoDB,但更轻量化且易于使用。

为什么选择 CouchDB

Apache CouchD 让您能够在任何需要的地方访问您的数据。Couch Replication Protocol 协议被应用于 CouchDB 的各种项目和产品中,覆盖了从全球分布式服务器集群,到移动电话,再到网页浏览器的所有可想象的计算环境。

您可以在自己的服务器上安全存储您的数据,或使用任意云服务提供商基于 CouchDB 提供的云服务。您的 Web 和原生应用程序都会喜爱 CouchDB,因为它文档数据库的特性原生支持 JSON,并支持各种数据的二进制形式存储。

Couch Replication Protocol 协议使您的数据在服务器集群、手机和网页浏览器之间无缝流动,在保持高性能和强可靠性的同时,提供强大的离线可用和自恢复功能。CouchDB 提供了开发者友好的查询语言,使用直观的 REST/JSON API,并可选 MapReduce 以实现简单、高效和全面的数据检索。

CouchDB 与 MongoDB 对比

两者相同点:

  1. 都是 No-SQL 的文档型数据库,可直接存储、聚合、转换、返回文档类型(JSON)数据
  2. 都支持高可用的分布式集群部署
  3. 两者都是开源项目,可以自托管或购买云服务商的服务

在区别主要在以下方面:

  1. CouchDB 通过 REST API 进行交互,而 MongoDB 通过数据库连接 + 特色的查询语言。
  2. CouchDB 侧重可用性(A)和分区容错性(P),MongoDB 侧重一致性(C)和分区容错性(P)
  3. CouchDB 是 Apache 项目,官方不提供商业服务;MongoDB 官方可提供商业(MongoDB Enterprise)及云服务(MongoDB Atlas 服务)
  4. 目前趋势:MongoDB 相较于 CouchDB 更流行,相关支持服务会更到位

相关环境变量

  • COUCHDB_USER:初始的管理员用户名
  • COUCHDB_PASSWORD:初始的管理员用户密码

服务使用流程

服务首次启动时,需要进行初始化,建议使用 CouchDB 自带的 Fauxton 管理面板进行配置

  1. 进入 CouchDB 自带的浏览器管理面板。地址在【服务状态】页面中的CouchDB built-in Fauxton admin webpage,使用初始用户名和密码登录管理面板
  2. 点击左侧【扳手】图标,开始初始化
    1. Configure a Single Node = 配置为单节点模式
    2. Configure a Cluster = 配置为集群模式 需要事先在项目中生成多个 CouchDB 服务,并修改端口和密码校验配置 详见官方文档:https://docs.couchdb.org/en/stable/setup/cluster.html
  3. 初始化完成,即可使用

使用集成的 Fauxton 管理界面管理数据库

管理界面文档:https://docs.couchdb.org/en/stable/fauxton/install.html#fauxton-visual-guide

管理面板地址:【服务状态】页面中的Fauxton -- CouchDB built-in admin webpage

使用服务状态界面的的用户名(CouchDB username)和密码(CouchDB password)登录

在浏览器中打开界面如下,可对管理数据库的数据、配置

使用 REST API 访问数据库

API 文档:https://docs.couchdb.org/en/stable/api/index.html

以下示例访问 / 路径为例,向数据库发送 GET 请求,数据库应返回欢迎信息

使用 curl 等接口工具发送 HTTP REST 请求

curl <上面复制的地址>

返回欢迎数据,包含版本功能、版本等信息

{
    "couchdb": "Welcome",
    "version": "3.4.2",
    "git_sha": "6e5ad2a5c",
    "uuid": "7687c62cfdf781f4623b721104a70c88",
    "features": [
        "access-ready",
        "partitioned",
        "pluggable-storage-engines",
        "reshard",
        "scheduler"
    ],
    "vendor": {
        "name": "The Apache Software Foundation"
    }
}