Интерфейс администрирования 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) помогает в администрировании.
Диван - это акроним для группы ненадежных товаров оборудование. Проект 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.
CouchDB также предлагает встроенный интерфейс администрирования, доступный через Интернет под названием Futon.
Возможности репликации и синхронизации CouchDB делают его идеальным для использования на мобильных устройствах, где сетевое соединение не гарантируется, и приложение должно продолжать работать в автономном режиме.
CouchDB хорошо подходит для приложений с накоплением, периодически изменяющимися данными, для которых должны выполняться предварительно определенные запросы и где важно управление версиями (например, системы CRM, CMS). Репликация мастер-мастер - особенно интересная функция, позволяющая легко развертывать несколько площадок.
Пользователи CouchDB включают:
CouchDB управляет коллекция документов JSON. Документы организованы с помощью представлений. Представления определяются с помощью агрегатных функций , а фильтры вычисляются параллельно, как и MapReduce.
. Представления обычно хранятся в базе данных, а их индексы постоянно обновляются. CouchDB поддерживает систему просмотра с использованием внешних серверов сокетов и протокола на основе JSON. Как следствие, серверы представлений были разработаны на различных языках (по умолчанию используется JavaScript, но есть также PHP, Ruby, Python и Erlang).
Приложения взаимодействуют с CouchDB через HTTP. Ниже показано несколько примеров использования cURL, утилиты командной строки. В этих примерах предполагается, что CouchDB работает на localhost (127.0.0.1) на порту 5984.
Action | Request | Response |
---|---|---|
Доступ к информации о сервере | 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"} |
Это 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 |