Из Википедии, свободной энциклопедии
  (Перенаправлено с CouchDB )
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

История [ править ]

Диван - это аббревиатура от кластера ненадежного товарного оборудования . [4] Проект CouchDB был создан в апреле 2005 года Дэмиеном Кацем, бывшим разработчиком Lotus Notes в IBM . Он сам финансировал этот проект в течение почти двух лет и выпустил его как проект с открытым исходным кодом под Стандартной общественной лицензией GNU .

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

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

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

Собственная кластеризация поддерживается в версии 2.0.0. А новый сервер запросов Mango предоставляет простой способ на основе JSON выполнять запросы CouchDB без JavaScript или MapReduce.

Основные особенности [ править ]

КИСЛОТНАЯ семантика
CouchDB предоставляет семантику ACID . [11] Это достигается за счет реализации формы управления параллелизмом с несколькими версиями , что означает, что CouchDB может обрабатывать большое количество одновременных операций чтения и записи без конфликтов.
Создан для работы в автономном режиме
CouchDB может реплицироваться на устройства (например, смартфоны), которые могут переходить в автономный режим, и обрабатывать синхронизацию данных за вас, когда устройство снова в сети.
Распределенная архитектура с репликацией
CouchDB был разработан с учетом двунаправленной репликации (или синхронизации) и работы в автономном режиме. Это означает, что несколько реплик могут иметь свои собственные копии одних и тех же данных, изменять их, а затем синхронизировать эти изменения позже.
Хранение документов
CouchDB хранит данные как «документы», как одну или несколько пар поле / значение, выраженных как JSON . Значения полей могут быть простыми вещами, такими как строки, числа или даты; но также можно использовать упорядоченные списки и ассоциативные массивы . Каждый документ в базе данных CouchDB имеет уникальный идентификатор, и нет необходимой схемы документа.
Конечная согласованность
CouchDB гарантирует конечную согласованность , чтобы обеспечить как доступность, так и устойчивость к разделам.
Отображение / уменьшение просмотров и индексов
Сохраненные данные структурированы с использованием представлений. В CouchDB каждое представление создается функцией JavaScript, которая действует как половина операции сопоставления / уменьшения карты . Функция принимает документ и преобразует его в одно возвращаемое значение. CouchDB может индексировать представления и обновлять эти индексы по мере добавления, удаления или обновления документов.
HTTP API
Все элементы имеют уникальный URI, который предоставляется через HTTP. Он использует HTTP-методы POST, GET, PUT и DELETE для четырех основных операций CRUD (создание, чтение, обновление, удаление) для всех ресурсов.

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

Сценарии использования и производственные развертывания [ править ]

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

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

Пользователи [ править ]

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

  • Amadeus IT Group для некоторых своих серверных систем. [ необходима цитата ]
  • Credit Suisse для внутреннего использования в товарно-сырьевом отделе своей торговой площадки. [14] [ нужен лучший источник ]
  • Meebo за их социальную платформу (Интернет и приложения). [ необходима цитата ] Meebo была приобретена Google, и 12 июля 2012 г. большинство продуктов было закрыто. [15]
  • npm для их реестра пакетов. [16]
  • Sophos для некоторых своих серверных систем. [ необходима цитата ]
  • BBC , для его динамического контента платформ. [17]
  • Canonical начала использовать его в 2009 году для своей службы синхронизации «Ubuntu One» [18], но прекратила его использование в ноябре 2011 года [19].
  • CANAL + для международной платформы по запросу в CANAL + Overseas.
  • Protogrid как серверная часть хранилища для их среды быстрой разработки приложений [20]

Обработка данных: документы и представления [ править ]

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

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

Доступ к данным через HTTP [ править ]

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

PouchDB [ править ]

PouchDB является реализация Javascript в CouchDB , который API совместим с ним. Таким образом, вы можете использовать CouchDB на стороне сервера и Pouch в самом приложении, и как только приложение будет подключено к сети, вы сможете синхронизировать оба. Это особенно полезно для прогрессивных веб-приложений, которые полагаются на автономный подход.

Компоненты с открытым исходным кодом [ править ]

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

См. Также [ править ]

  • Документно-ориентированная база данных
  • База данных XML

Ссылки [ править ]

  1. ^ "Выпуск 3.1.1" . 17 сентября 2020 . Дата обращения 7 октября 2020 .
  2. ^ Фонд программного обеспечения Apache. "Apache CouchDB" . Проверено 15 апреля 2012 года .
  3. ^ Смит, Джейсон. «Что такое протокол репликации CouchDB? Он похож на Git?» . StackOverflow . Обмен стеками . Проверено 14 апреля 2012 года .
  4. ^ "Изучение CouchDB" . Разработчик работает . IBM. 31 марта 2009 . Проверено 30 сентября 2016 года .
  5. ^ Объявление списка рассылки Apache на mail-archives.apache.org
  6. ^ Re: Предлагаемое решение: установить протокол TLP CouchDB на mail-archives.apache.org
  7. ^ "База данных CouchDB NoSQL готова к использованию в производственной среде" , статья из журнала PC World, июль 2010 г.
  8. ^ Кац, Дэмиен. «Будущее CouchDB» . Проверено 15 апреля 2012 года .
  9. ^ Слейтер, Ной. «Добро пожаловать, BigCouch» . Проверено 25 июля 2013 года .
  10. ^ " ' 2.0 ' " . Проверено 13 января 2017 года .
  11. ^ CouchDB, Технический обзор, архивный 20 октября 2011 г., на Wayback Machine
  12. ^ «Добро пожаловать в Футон» из «Полного руководства CouchDB»
  13. ^ Cassandra против MongoDB против CouchDB против Redis против Riak против сравнения HBase от Кристофа Ковача
  14. ^ "CouchDB in the wild" Архивировано 20 июля 2017 г. встатье о продукте Wayback Machine в Интернете, список программных проектов и веб-сайтов, использующих CouchDB.
  15. Катлер, Ким-Май (9 июня 2012 г.). "Meebo получает классическое обращение с Google Acq-наймом: большинство продуктов скоро будет закрыто" . TechCrunch . AOL Inc . Проверено 7 января +2016 .
  16. ^ "npm-registry-couchapp" . GitHub . npm. 17 июня 2015 . Проверено 7 января +2016 .
  17. ^ CouchDB на BBC как отказоустойчивое, масштабируемое хранилище ключей и значений для нескольких центров обработки данных
  18. ^ Электронное письмо от Эллиота Мерфи (Canonical), заархивированное 05.05.2011 на Wayback Machine в список CouchDB-Devel
  19. ^ Canonical Drops CouchDB из Ubuntu One (Slashdot)
  20. ^ [1]
  21. ^ Просмотреть серверную документацию, заархивированную 20 октября 2008 г.,на сайте Wayback Machine на wiki.apache.org

Библиография [ править ]

  • Андерсон, Дж. Крис; Слейтер, Ной; Ленардт, январь (15 ноября 2009 г.), CouchDB: The Definitive Guide (1-е изд.), O'Reilly Media , стр. 300, ISBN 0-596-15816-5
  • Леннон, Джо (15 декабря 2009 г.), Начало CouchDB (1-е изд.), Apress , стр. 300, ISBN 1-4302-7237-6, заархивировано из оригинала 5 декабря 2010 г. , получено 1 ноября 2009 г.
  • Холт, Брэдли (7 марта 2011 г.), Написание и запрос представлений MapReduce в CouchDB (1-е изд.), O'Reilly Media , стр. 76, ISBN 1-4493-0312-9
  • Холт, Брэдли (11 апреля 2011 г.), Scaling CouchDB (1-е изд.), O'Reilly Media , стр. 72, ISBN 1-4493-0343-9
  • Браун, MC (31 октября 2011 г.), Начало работы с CouchDB (1-е изд.), O'Reilly Media , стр. 50, ISBN 1-4493-0755-8
  • Томпсон, Мик (2 августа 2011 г.), Начало работы с GEO, CouchDB и Node.js (1-е изд.), O'Reilly Media , стр. 64, ISBN 1-4493-0752-3

Внешние ссылки [ править ]

  • Официальный сайт
  • CouchDB: полное руководство
  • Полный справочник по HTTP API
  • Простая библиотека PHP5 для связи с CouchDB
  • Асинхронный клиент CouchDB для Java
  • Асинхронный клиент CouchDB для Scala
  • Ленардт, Янв (2008). «Диван DB на высоте 10 000 футов» . Erlang eXchange 2008 . Проверено 15 апреля 2012 года .
  • Ленхардт, Янв (2009). «CouchDB для разработчиков на Erlang» . Erlang Factory London 2009 . Архивировано из оригинального 19 июня 2011 года . Проверено 15 апреля 2012 года .
  • Кац, Дэмиен (январь 2009 г.). «CouchDB и я» . Рубиновая бахрома . InfoQ. Архивировано из оригинального 27 апреля 2011 года . Проверено 15 апреля 2012 года .