icon

CouchDB

一個開源的、基於 HTTP/JSON 請求、支持跨平台同步的文檔資料庫

template cover
部署次數8
發布者lilixxs
建立於2025-02-19
模板內的服務
service icon
標籤
Database

CouchDB 简介

一個開源的面向文檔的無縫多主同步資料庫,具有直觀的 HTTP/JSON API,專為可靠性設計。

類似於 MongoDB,但更輕量化且易於使用。

為何選擇 CouchDB

Apache CouchDB 讓您能夠在任何需要的地方訪問您的數據。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"
    }
}