Статьи

CouchDB 2.0 (Preview для разработчиков) с HTTP API

Вступление

Проект Apache CouchDB объявил о выпуске Developer Preview своей CouchDB 2.0. Developer Preview 2.0 предоставляет совершенно новую технологию кластеризации в базе данных с открытым исходным кодом NoSQL, предоставляя широкий спектр возможностей больших данных, в том числе возможность хранить, реплицировать, синхронизировать и обрабатывать большие объемы данных, распределенных по отдельным серверам, центрам обработки данных и географические регионы в любой конфигурации развертывания, включая частные, гибридные и мультиоблачные.

В более ранних версиях CouchDB базы данных могли реплицироваться на столько отдельных серверов, сколько необходимо, но каждый сервер был ограничен вертикальным масштабированием. Благодаря кластеризации, представленной в Developer Preview, базы данных теперь можно распределить по многим серверам, добавив возможность горизонтального масштабирования в CouchDB. Эта технология работает, заимствуя многие принципы из бумаги Amazon Dynamo, и повышает общую производительность, долговечность и высокую доступность крупномасштабных развертываний CouchDB.

Другие дополнения в Developer Preview включают более быстрый уплотнитель базы данных, более быстрый репликатор, более простую настройку, реорганизованный код для более простого вклада, канал глобальных изменений и улучшенный охват тестами. Эта версия CouchDB также включает в себя новый интерфейс администратора веб-панели под названием Fauxton, с улучшенным пользовательским интерфейсом, многофункциональными редакторами запросов и интерфейсом управления репликацией. (Скриншот Fauxton доступен на

Сообщество Apache CouchDB поощряет обратную связь, поскольку она работает над выпуском 2.0 General Availability, который ожидается в начале 2015 года.

Строить

Вы можете выполнить шаги здесь [3]. Если вы пользователь Windows, вы можете судить мой предыдущий пост . Вы можете запустить CouchDB 2.0 (Developer Preview)

CouchDB API

API можно разделить на сервер, базы данных, документы и репликацию. С помощью приведенной ниже команды мы можем запустить 2 узла в кластере.

dev/run -n 2

кластерная кушеткаDB

Серверы / узлы

Кластер из двух узлов на портах 15984 и 25984. Они представляют конечные точки в кластере из двух узлов, и вы можете подключиться к любому из них для доступа к полному кластеру. Бэкдор-порт для 15984 будет 15986 и аналогичным для 25984. Здесь мы проверяем порты двух узлов.

кластерная кушеткаDB2

Базы данных

Давай создадим базы данных. CouchDB — это система управления базами данных (DMS), которая может содержать несколько баз данных. Так создана база данных под названием «Книги»

curl -X PUT http://127.0.0.1:15986/books

кластер couchDB узел1

CouchDB отвечает как «OK» в JSON, поэтому он создан. Вы не можете создать базу данных, которая уже существует, поэтому у нас может быть только одна база данных с именем «books» в одном узле.

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

curl http://127.0.0.1:15986/_all_dbs

кластер couchDB узел1

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

curl -vX DELETE http://127.0.0.1:15986/books

кластер couchDB узел1

документы

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

curl -X PUT http://127.0.0.1:15986/books/6e4567ed6c29495a567c05947f18d234bb -d '{"title":"Unbroken: A World War II Story of Survival, Resilience, and Redemption","author":"Laura Hillenbrand"}'

/ books / 6e4567ed6c29495a567c05947f18d234bb указывает местоположение документа в нашей базе данных книг.

curl -X GET http://127.0.0.1:15986/books/6e4567ed6c29495a567c05947f18d234bb

c5

[ПРИМЕЧАНИЕ]

мы можем попросить CouchDB дать нам UUID

curl -X GET http://127.0.0.1:15986/_uuids

Если мы хотим обновить или удалить документ, CouchDB ожидает, что мы добавим поле _rev версии, которую вы хотите изменить. Когда CouchDB принимает изменение, он генерирует новый номер редакции. Этот механизм гарантирует, что в случае, если кто-то еще внес изменение без вашего ведома, прежде чем вы запросите обновление документа, CouchDB не примет ваше обновление, потому что вы, вероятно, перезапишете данные, которые, как вы знали, не существовали. Или упрощенно: выигрывает тот, кто первым сохраняет изменения в документе.

curl -X PUT http://127.0.0.1:15986/books/6e4567ed6c29495a567c05947f18d234bb -d '{"_rev":"1-80d0a1648cce795265cb4f2ba0557a12","ttitle":"Unbroken: A World War II Story of Survival, Resilience, and Redemption","author":"Laura Hillenbrand","published-date":"July 29, 2014"}'

c6

копирование

Репликация CouchDB — это механизм синхронизации баз данных. Так же, как rsync синхронизирует два каталога локально или по сети, репликация синхронизирует две базы данных локально или удаленно.

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

curl -X PUT http://127.0.0.1:15986/books-replica

curl -vX POST http://127.0.0.1:15986/_replicate -d '{"source":"books","target":"books-replica"}' -H "Content-Type: application/json"

Мы можем пометить удаленную цель, такую ​​как наш узел 2, как показано ниже

curl -vX POST http://127.0.0.1:15986/_replicate -d '{"source":"books","target":"http://127.0.0.1:25986/books"}' -H "Content-Type: application/json"

Здесь мы можем посмотреть детали базы данных по каждому узлу с помощью команды ниже. Мы можем найти детали памяти

curl -X GET http://127.0.0.1:15986/books
curl -X GET http://127.0.0.1:25986/books

c3

Это очень простые API-интерфейсы couchDB.

[1] http://madhukaudantha.blogspot.com/2015/03/couchdb-fauxton-introduction.html
[2] http://madhukaudantha.blogspot.com/2015/03/couchdb-with-fauxton-in-windows -8.html
[3] https://couchdb.apache.org/developer-preview/2.0/