Apache CouchDB

редактировать
Apache CouchDB
CouchDB.svg
CouchDB's Futon Administration Interface, User database Интерфейс администрирования Futon CouchDB, база данных пользователей
Исходный автор ( s) Дэмиен Кац, Ян Ленардт, Наоми Слейтер, Кристофер Ленц, Дж. Крис Андерсон, Пол Дэвис, Адам Коколоски, Джейсон Дэвис, Бенуа Шено, Филипе Манана, Роберт Ньюсон
Разработчик (и) Apache Software Foundation
Первый выпуск2005 г.; 15 лет назад (2005 г.)
Стабильный выпуск 3.0 / 26 февраля 2020 г.; 7 месяцев назад (2020-02-26)
Репозиторий Репозиторий CouchDB
Написано наErlang, JavaScript, C, C ++
Операционная система Cross- платформа
Тип Документно-ориентированная база данных
Лицензия Лицензия Apache 2.0
Веб-сайтcouchdb.apache.org

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

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

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

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

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

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

Содержание
  • 1 История
  • 2 Основные функции
  • 3 Сценарии использования и производственные развертывания
    • 3.1 Пользователи
  • 4 Управление данными: документы и представления
    • 4.1 Доступ к данным через HTTP
  • 5 PouchDB
  • 6 Компоненты с открытым исходным кодом
  • 7 См. Также
  • 8 Ссылки
  • 9 Библиография
  • 10 Внешние ссылки
История

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

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

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

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

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

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

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

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

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

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

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

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

  • Amadeus IT Group, для некоторых из них. -end systems.
  • , для внутреннего использования в отделе сырьевых товаров, для их платформы рынка.
  • Meebo, для их социальной платформы (Интернет и приложения). Meebo была приобретена Google, и 12 июля 2012 г. большинство продуктов было закрыто.
  • npm для их реестра пакетов.
  • Sophos для некоторых из их внутренних систем.
  • BBC для своих платформ с динамическим контентом.
  • Canonical начала использовать его в 2009 году для своей службы синхронизации «Ubuntu One», но прекратила использовать его в ноябре 2011 года.
  • CANAL + для международной платформы по запросу в CANAL + Overseas.
  • , как серверная часть хранилища для их инфраструктуры быстрой разработки приложений
Управление данными: документы и представления

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

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

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

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

ActionRequestResponse
Доступ к информации о сервере
curl http://127.0.0.1:5984/
{"couchdb": "Добро пожаловать", "версия": "1.1.0"}
Создание базы данных с именем wiki
curl - X PUT http://127.0.0.1:5984/wiki
{"ok": true}
Попытка создать вторую базу данных с именем wiki
curl -X PUT http: //127.0. 0.1: 5984 / wiki
{"ошибка": "существует_файл", "причина": "База данных не может быть создана, файл уже существует". }
Получить информацию о wiki базе данных
curl http://127.0.0.1:5984/wiki
{"db_name": "wiki", "doc_count": 0, " doc_del_count ": 0," update_seq ": 0," purge_seq ": 0," compact_running ": false," disk_size ": 79," instance_start_time ":" 1272453873691070 "," disk_format_version ": 5}
Удалить базу данных wiki
curl -X DELETE http://127.0.0.1:5984/wiki
{"ok": true}
Создайте документ, прося CouchDB предоставить идентификатор документа
curl - X POST -H "Content-Type: application / json" --data \ '{"text": "Wikipedia on CouchDB", "rating": 5}' \ http://127.0.0.1:5984/wiki
{"ok": true, "id": "123BAC", "rev": "946B7D1C"}
PouchDB

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

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

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

КомпонентОписаниеЛицензия
Erlang Erlang - это параллельный язык программирования общего назначения и система времени выполнения. Последовательное подмножество Erlang - это функциональный язык с строгой оценкой, одиночным назначением и динамической типизацией Apache 2.0 (Выпуск 18.0 и новее). Общественная лицензия Erlang (более ранние выпуски)
ICU Международные компоненты для Unicode (ICU) - это проект с открытым исходным кодом зрелой версии C /Библиотеки C ++ и Java для поддержки Unicode, программного обеспечения интернационализации и глобализации программного обеспечения
jQuery jQuery - это легкий кросс -browser Библиотека JavaScript, которая подчеркивает взаимодействие между JavaScript и HTML Лицензия MIT
OpenSSL OpenSSL - это открытый исходный код реализация протоколов SSL и TLS. Основная библиотека (написанная на языке программирования C ) реализует базовые криптографические функции и предоставляет различные служебные функцииApache 1.0 и Лицензия BSD с четырьмя пунктами
SpiderMonkey SpiderMonkey - это эффективный движок JavaScript, поддерживаемый Mozilla Foundation. Он содержит интерпретатор, JIT-компилятор и сборщик мусора MPL 2.0
См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Библиография
Внешние ссылки
Последняя правка сделана 2021-06-11 20:10:17
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте