stringtranslate.com

Apache CouchDB

Apache CouchDB — это документоориентированная NoSQL- база данных с открытым исходным кодом , реализованная на Erlang .

CouchDB использует несколько форматов и протоколов для хранения, передачи и обработки своих данных. Он использует JSON для хранения данных, JavaScript в качестве языка запросов с использованием MapReduce и HTTP для API . [2]

CouchDB был впервые выпущен в 2005 году, а в 2008 году стал проектом Apache Software Foundation .

В отличие от реляционной базы данных , база данных CouchDB не хранит данные и связи в таблицах. Вместо этого каждая база данных представляет собой набор независимых документов. Каждый документ поддерживает свои собственные данные и автономную схему. Приложение может обращаться к нескольким базам данных, например, к одной, хранящейся на мобильном телефоне пользователя, и к другой на сервере. Метаданные документа содержат информацию о ревизиях, что позволяет объединять любые различия, которые могли возникнуть, пока базы данных были отключены.

CouchDB реализует форму управления параллелизмом многоверсионности (MVCC), поэтому он не блокирует файл базы данных во время записи. Разрешение конфликтов оставлено на усмотрение приложения. Разрешение конфликта обычно включает сначала слияние данных в один из документов, а затем удаление устаревшего. [3]

Другие функции включают семантику ACID на уровне документа с конечной согласованностью , (инкрементальную) MapReduce и (инкрементальную) репликацию. Одной из отличительных особенностей CouchDB является репликация с несколькими мастерами , которая позволяет масштабировать ее на разных машинах для создания высокопроизводительных систем. Встроенное веб-приложение под названием Fauxton (ранее Futon) помогает в администрировании.

История

Couch — это аббревиатура для cluster of unreliable commercial hardware . [4] Проект CouchDB был создан в апреле 2005 года Дэмиеном Кацем, бывшим разработчиком Lotus Notes в IBM . Он самостоятельно финансировал проект в течение почти двух лет и выпустил его как проект с открытым исходным кодом под лицензией GNU General Public License .

В феврале 2008 года он стал проектом Apache Incubator и предлагался под лицензией Apache License . [5] Спустя несколько месяцев он перешел в статус проекта верхнего уровня. [6] Это привело к выпуску первой стабильной версии в июле 2010 года . [7]

В начале 2012 года Кац покинул проект, чтобы сосредоточиться на Couchbase Server . [8]

После ухода Каца проект Apache CouchDB продолжил работу, выпустив версию 1.2 в апреле 2012 года и 1.3 в апреле 2013 года. В июле 2013 года сообщество CouchDB объединило кодовую базу BigCouch , кластеризованную версию CouchDB от Cloudant , с проектом Apache. [9] Фреймворк кластеризации BigCouch включен в текущую версию Apache CouchDB. [10]

Собственная кластеризация поддерживается в версии 2.0.0. А новый Mango Query Server обеспечивает простой способ на основе JSON для выполнения запросов CouchDB без JavaScript или MapReduce. Также в версии 2.0.0 был представлен Fauxton, новый встроенный веб-интерфейс, заменивший Futon, старый встроенный веб-интерфейс. [11]

Основные характеристики

Семантика ACID
CouchDB обеспечивает семантику ACID . [12] Это достигается путем реализации формы управления многоверсионным параллелизмом , что означает, что CouchDB может обрабатывать большой объем одновременных читателей и писателей без конфликтов.
Создано для офлайн
CouchDB может реплицироваться на устройства (например, смартфоны), которые могут отключаться от сети, и выполнять синхронизацию данных, когда устройство снова подключается к сети.
Распределенная архитектура с репликацией
CouchDB был разработан с учетом двунаправленной репликации (или синхронизации) и работы в автономном режиме. Это означает, что несколько реплик могут иметь собственные копии одних и тех же данных, изменять их, а затем синхронизировать эти изменения позднее.
Хранение документов
CouchDB хранит данные как «документы», как одну или несколько пар поле/значение, выраженных как JSON . Значения полей могут быть простыми вещами, такими как строки, числа или даты; но также могут использоваться упорядоченные списки и ассоциативные массивы . Каждый документ в базе данных CouchDB имеет уникальный идентификатор, и не требуется схема документа.
Окончательная согласованность
CouchDB гарантирует конечную согласованность , обеспечивая как доступность, так и устойчивость к разделам.
Карта/сокращение представлений и индексов
Сохраненные данные структурированы с использованием представлений. В CouchDB каждое представление создается функцией JavaScript , которая действует как половина Map операции map /reduce. Функция берет документ и преобразует его в одно значение, которое она возвращает. CouchDB может индексировать представления и обновлять эти индексы по мере добавления, удаления или обновления документов.
HTTP-API
Все элементы имеют уникальный URI, который раскрывается через HTTP. Он использует методы HTTP POST, GET, PUT и DELETE для четырех основных операций CRUD (Create, Read, Update, Delete) на всех ресурсах.

CouchDB также предлагает встроенный интерфейс администрирования, доступный через Интернет, который называется Fauxton. [13]

Варианты использования и производственные развертывания

Возможности репликации и синхронизации CouchDB делают его идеальным для использования на мобильных устройствах, где сетевое соединение не гарантируется, а приложение должно продолжать работать в автономном режиме.

CouchDB хорошо подходит для приложений с накапливающимися, периодически меняющимися данными, для которых должны выполняться предопределенные запросы и где важно управление версиями (например, системы CRM, CMS). Репликация Master-master является особенно интересной функцией, позволяющей легко развертывать несколько сайтов. [14]

Пользователи

Пользователи CouchDB включают:

Манипулирование данными: документы и представления

CouchDB управляет коллекцией документов JSON . Документы организованы с помощью представлений. Представления определяются с помощью агрегатных функций , а фильтры вычисляются параллельно, как и MapReduce .

Представления обычно хранятся в базе данных, а их индексы постоянно обновляются. CouchDB поддерживает систему представлений с использованием внешних сокет-серверов и протокола на основе JSON. [27] Как следствие, серверы представлений были разработаны на различных языках (по умолчанию используется JavaScript, но также есть PHP, Ruby, Python и Erlang).

Доступ к данным через HTTP

Приложения взаимодействуют с CouchDB через HTTP. Ниже показано несколько примеров использования cURL , утилиты командной строки. В этих примерах предполагается, что CouchDB работает на localhost (127.0.0.1) на порту 5984.

Компоненты с открытым исходным кодом

CouchDB включает в свой пакет по умолчанию ряд других проектов с открытым исходным кодом.

Смотрите также

Ссылки

  1. ^ "Release 3.4.2". 20 октября 2024 г. Получено 21 октября 2024 г.
  2. ^ Apache Software Foundation. "Apache CouchDB" . Получено 15 апреля 2012 г.
  3. ^ Смит, Джейсон. «Что такое протокол репликации CouchDB? Он похож на Git?». StackOverflow . Stack Exchange . Получено 14 апреля 2012 г. .
  4. ^ "Exploring CouchDB". Developer Works . IBM. 31 марта 2009 г. Получено 30 сентября 2016 г.
  5. ^ Объявление о рассылке Apache на mail-archives.apache.org
  6. ^ Re: Предлагаемое решение: Установить CouchDB TLP на mail-archives.apache.org
  7. ^ "CouchDB NoSQL Database Ready for Production Use" Архивировано 15 ноября 2010 г. на Wayback Machine , статья из PC World за июль 2010 г.
  8. ^ Кац, Дэмиен. "Будущее CouchDB" . Получено 15 апреля 2012 г.
  9. Слейтер, Ной (25 июля 2013 г.). «Welcome BigCouch» . Получено 25 июля 2013 г. .
  10. ^ "'2.0'". 20 сентября 2016 г. Получено 13 января 2017 г.
  11. ^ "1.8.2.0.x Branch — Apache CouchDB® 3.3 Documentation". docs.couchdb.org . Получено 2024-08-04 .
  12. ^ CouchDB, Технический обзор. Архивировано 20 октября 2011 г. на Wayback Machine.
  13. ^ "couchdb-fauxton" . Гитхаб . апач . Проверено 2 мая 2023 г.
  14. ^ Сравнение Cassandra, MongoDB, CouchDB, Redis, Riak и HBase от Кристофа Ковача
  15. ^ "Почему ученые Большого адронного коллайдера используют CouchDB". ReadWrite . 2010-08-26 . Получено 2022-03-29 .
  16. ^ iDAT, Код Красного Креста, 2021-07-31 , получено 2022-03-29
  17. ^ "Database-Deep-Dives-CouchDB". www.ibm.com . 19 июля 2019 . Получено 29.03.2022 .
  18. ^ "Database-Deep-Dives-CouchDB". www.ibm.com . 19 июля 2019 . Получено 29.03.2022 .
  19. ^ «United Airlines оптимизирует операции с помощью Couchbase | Пример из практики». www.couchbase.com . Получено 29.03.2022 .
  20. ^ "CouchDB in the wild" Архивировано 20 июля 2017 г. в статье Wayback Machine о продукте Web, список программных проектов и веб-сайтов, использующих CouchDB.
  21. ^ Катлер, Ким-Май (9 июня 2012 г.). «Meebo получает классическое обращение Google Acq-hire: большинство продуктов скоро закроются». TechCrunch . AOL Inc . Получено 7 января 2016 г.
  22. ^ "npm-registry-couchapp". GitHub . npm. 17 июня 2015 г. Получено 7 января 2016 г.
  23. ^ CouchDB на BBC как отказоустойчивое, масштабируемое хранилище ключей и значений для нескольких центров обработки данных
  24. Электронное письмо от Эллиота Мерфи (Canonical), архивировано 05.05.2011 на Wayback Machine в список рассылки CouchDB-Devel
  25. ^ Canonical удаляет CouchDB из Ubuntu One (Slashdot)
  26. ^ "Protogrid - Über uns".
  27. ^ Просмотреть документацию сервера, заархивированную 2008-10-20 на Wayback Machine на wiki.apache.org

Библиография

Внешние ссылки