hostprofi.ru
Подобрать хостинг
Термин·буква C

CouchDB

краткое определение

Apache CouchDB — документная <a href="/blog/glossary/nosql">NoSQL</a>-СУБД, хранящая данные в формате JSON. Использует REST API вместо SQL, встроенную репликацию типа master-master и CouchApps для работы в браузере без backend-слоя.

Apache CouchDB — документная база данных, разрабатываемая Apache Software Foundation. Данные хранятся в JSON-документах без фиксированной схемы. Взаимодействие — исключительно через HTTP REST API: GET, PUT, POST, DELETE. Встроенный механизм репликации позволяет синхронизировать БД между несколькими серверами и клиентскими устройствами (включая браузеры через PouchDB).

Ключевые характеристики

  • REST HTTP API — любой HTTP-клиент (curl, браузер) работает с БД напрямую.
  • MVCC (Multi-Version Concurrency Control) — конкурентные операции без блокировок.
  • Мастер-мастер репликация — несколько серверов принимают записи одновременно, конфликты разрешаются автоматически.
  • Eventual Consistency — данные синхронизируются со временем, но могут быть временно несогласованы.
  • MapReduce Views — индексирование и запросы через функции JavaScript.

Сравнение с MongoDB

CouchDB и MongoDB оба хранят JSON-документы, но имеют разную философию. MongoDB фокусируется на богатом языке запросов, агрегациях и горизонтальном шардировании. CouchDB — на надёжной репликации и офлайн-первой архитектуре (offline-first). PouchDB позволяет использовать CouchDB-репликацию прямо в браузере.

История

CouchDB разработан Дамиеном Кацем, начало работы — 2005 год. Первый релиз — 2005 год, написан на Erlang. В 2008 году передан Apache Software Foundation. В 2012 году появился CouchBase — коммерческий форк с SQL-подобным языком N1QL. PouchDB создан в 2012 году и принёс CouchDB-синхронизацию в браузер.

Связь с хостингом

CouchDB редко встречается как основная БД в стандартных хостинг-стеках. Его ниша — мобильные и IoT-приложения с офлайн-синхронизацией, и системы с требованием географически распределённой репликации без сложной настройки. На VDS устанавливается из официального репозитория Apache. Для большинства веб-проектов лучше подходят PostgreSQL или MongoDB.

Как работает CouchDB

CouchDB хранит данные в JSON-документах с произвольной структурой. Каждый документ имеет уникальный _id и _rev (ревизия для MVCC). Запросы через JavaScript MapReduce Views -- функции map и reduce определяют индексы. HTTP REST API -- единственный способ работы с базой (нет SQL, нет проприетарных протоколов). Репликация: POST /_replicate синхронизирует базы между узлами, включая P2P и master-master. Особенность CouchDB -- оффлайн-первый дизайн: приложение работает локально и синхронизируется при подключении (PouchDB для браузера).

CouchDB в хостинге

CouchDB требует минимум 512 МБ RAM, рекомендуется 2 ГБ+. Установка на Ubuntu: apt install couchdb. Порт 5984 по умолчанию. Для production обязательно: включить аутентификацию (в CouchDB 3.x она включена по умолчанию), настроить брандмауэр (5984 не должен быть доступен извне). В 2017 году тысячи незащищённых инстансов CouchDB были взломаны через открытый порт 5984 и данные удалены с требованием выкупа. NoSQL семейство включает несколько конкурентов CouchDB: Redis (key-value), MongoDB (document). База данных CouchDB подходит для CMS и мобильных приложений с синхронизацией.

История CouchDB

CouchDB основан Дамиеном Катцем (Damien Katz) в 2005 году. Передан в Apache Software Foundation в 2008 году. CouchDB 1.0 вышел в 2010 году. BigCouch (Cloudant, 2010) добавил кластеризацию. IBM приобрела Cloudant в 2014 году. Apache CouchDB 2.0 (2016) интегрировал кластеризацию из BigCouch. CouchDB 3.0 (2020) добавил обязательную аутентификацию. Erlang -- язык реализации CouchDB, что обеспечивает встроенный параллелизм.

Другие термины