CouchDB - Краткое руководство

Система управления базой данных обеспечивает механизм для хранения и поиска данных. Существует три основных типа систем управления базами данных, а именно РСУБД (системы управления реляционными базами данных), OLAP (системы онлайн-аналитической обработки) и NoSQL.

СУБД

СУБД расшифровывается как Система управления реляционными базами данных. СУБД является основой для SQL и для всех современных систем баз данных, таких как MS SQL Server, IBM DB2, Oracle, MySQL и Microsoft Access.

Система управления реляционными базами данных (СУБД) - это система управления базами данных (СУБД), основанная на реляционной модели, представленной EF Codd.

Данные в СУБД хранятся в объектах базы данных, называемых tables. Таблица представляет собой набор связанных записей данных и состоит из столбцов и строк. В нем хранятся только структурированные данные.

OLAP

Сервер онлайн-аналитической обработки (OLAP) основан на многомерной модели данных. Это позволяет менеджерам и аналитикам получать представление об информации благодаря быстрому, согласованному и интерактивному доступу к информации.

Базы данных NoSQL

База данных NoSQL (иногда называемая Not Only SQL) - это база данных, которая предоставляет механизм для хранения и извлечения данных, отличный от табличных отношений, используемых в реляционных базах данных. Эти базы данных не содержат схемы, поддерживают легкую репликацию, имеют простой API, в конечном итоге согласованный и могут обрабатывать огромные объемы данных (большие данные).

Основная цель базы данных NoSQL - иметь следующее:

  • Простота конструкции,
  • Горизонтальное масштабирование и
  • Более точный контроль над доступностью.

Базы данных NoSQL используют другие структуры данных по сравнению с реляционными базами данных. Это ускоряет некоторые операции в NoSQL. Пригодность данной базы данных NoSQL зависит от проблемы, которую она должна решить. Эти базы данных хранят как структурированные, так и неструктурированные данные, такие как аудиофайлы, видеофайлы, документы и т. Д. Эти базы данных NoSQL подразделяются на три типа, и они описаны ниже.

Key-value Store- Эти базы данных предназначены для хранения данных в парах "ключ-значение", и эти базы данных не будут иметь схемы. В этих базах данных каждое значение данных состоит из индексированного ключа и значения для этого ключа.

Примеры - BerkeleyDB, Cassandra, DynamoDB, Riak.

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

Примеры - BigTable, HBase и HyperTable.

Document Store- Это базы данных, разработанные на основе базовой идеи хранилищ ключей и значений, где «документы» содержат более сложные данные. Здесь каждому документу присваивается уникальный ключ, который используется для извлечения документа. Они предназначены для хранения, извлечения и управления документально-ориентированной информацией, также известной как полуструктурированные данные.

Примеры - CouchDB и MongoDB.

Что такое CouchDB?

CouchDB - это база данных с открытым исходным кодом, разработанная Apache Software Foundation. Основное внимание уделяется простоте использования, охватывающей Интернет. Это база данных хранилища документов NoSQL.

Он использует JSON для хранения данных (документов), java-скрипт в качестве языка запросов для преобразования документов, протокол http для api для доступа к документам, запрашивает индексы с помощью веб-браузера. Это приложение с несколькими мастерами, выпущенное в 2005 году, стало проектом apache в 2008 году.

Почему CouchDB?

  • CouchDB имеет REST API на основе HTTP, который помогает легко взаимодействовать с базой данных. А простая структура ресурсов и методов HTTP (GET, PUT, DELETE) проста для понимания и использования.

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

  • Пользователям предоставляется мощное отображение данных, которое позволяет запрашивать, комбинировать и фильтровать информацию.

  • CouchDB обеспечивает простую в использовании репликацию, с помощью которой вы можете копировать, совместно использовать и синхронизировать данные между базами данных и машинами.

Модель данных

  • База данных - это самая внешняя структура / контейнер данных в CouchDB.

  • Каждая база данных представляет собой набор независимых документов.

  • Каждый документ поддерживает свои собственные данные и автономную схему.

  • Метаданные документа содержат информацию о редакции, что позволяет объединить различия, возникшие при отключении баз данных.

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

Особенности CouchDB: уменьшение содержания

Хранение документов

CouchDB - это база данных NoSQL для хранения документов. Он обеспечивает возможность хранения документов с уникальными именами, а также предоставляет API под названием RESTful HTTP API для чтения и обновления (добавления, редактирования, удаления) документов базы данных.

В CouchDB документы являются основной единицей данных, и они также включают метаданные. Поля документа имеют уникальные имена и содержат значения различных типов (текст, число, логическое значение, списки и т. Д.), И нет установленных ограничений на размер текста или количество элементов.

Обновления документов (добавление, редактирование, удаление) следуют за атомарностью, т. Е. Сохраняются полностью или не сохраняются вообще. В базе данных не будет частично сохраненных или отредактированных документов.

Структура документа Json

{
   "field" : "value",
   "field" : "value",
   "field" : "value",
}

КИСЛОТНЫЕ Свойства

CouchDB содержит свойства ACID как одну из своих функций.

Согласованность - когда данные в CouchDB были однажды зафиксированы, эти данные не будут изменены или перезаписаны. Таким образом, CouchDB гарантирует, что файл базы данных всегда будет в согласованном состоянии.

При чтении CouchDB используется мультиверсионная модель управления параллелизмом (MVCC), благодаря которой клиент будет видеть согласованный моментальный снимок базы данных от начала до конца операции чтения.

Всякий раз, когда документ обновляется, CouchDB сбрасывает данные на диск, и обновленный заголовок базы данных записывается двумя последовательными и идентичными фрагментами, составляя первые 4 КБ файла, а затем синхронно сбрасывается на диск. Частичные обновления во время сброса будут отброшены.

Если во время фиксации заголовка произошел сбой, сохранившаяся копия предыдущих идентичных заголовков останется, обеспечивая согласованность всех ранее зафиксированных данных. За исключением области заголовка, проверки согласованности или исправления после сбоя или сбоя питания никогда не требуются.

Уплотнение

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

Просмотры

Данные в CouchDB хранятся в полуструктурированных документах, гибких с индивидуальными неявными структурами, но это простая модель документа для хранения и совместного использования данных. Если мы хотим видеть наши данные разными способами, нам нужен способ фильтрации, организации и составления отчетов по данным, которые не были разложены в таблицы.

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

История

  • CouchDB был написан на языке программирования Erlang.
  • Его основал Дэмиен Кац в 2005 году.
  • CouchDB стал проектом Apache в 2008 году.

Текущая версия CouchDB - 1.61.

В этой главе вы узнаете, как установить CouchDB как в Windows, так и в Linux.

Установка CouchDB в Windows

Скачать CouchDB

Официальный сайт CouchDB: https://couchdb.apache.org. Если вы нажмете данную ссылку, вы сможете перейти на домашнюю страницу официального сайта CouchDB, как показано ниже.

Если вы нажмете кнопку загрузки, это приведет к странице, на которой предоставлены ссылки для загрузки CouchDB в различных форматах. Следующий снимок показывает то же самое.

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

Установка CouchDB

CouchDB будет загружен в вашу систему в виде установочного файла с именем setup-couchdb-1.6.1_R16B02.exe. Запустите установочный файл и продолжите установку.

После установки откройте встроенный веб-интерфейс CouchDB, посетив следующие link: http://127.0.0.1:5984/. Если все пойдет хорошо, вы получите веб-страницу со следующим выводом.

{
   "couchdb":"Welcome","uuid":"c8d48ac61bb497f4692b346e0f400d60",
   "version":"1.6.1",
   "vendor":{
      "version":"1.6.1","name":"The Apache Software Foundation"
   }
}

Вы можете взаимодействовать с веб-интерфейсом CouchDB, используя следующий URL-адрес -

http://127.0.0.1:5984/_utils/

Это показывает вам индексную страницу Futon, которая является веб-интерфейсом CouchDB.

Установка CouchDB в системах Linux

Для многих систем, адаптированных под Linux, они предоставляют CouchDB внутри себя. Чтобы установить этот CouchDB, следуйте инструкциям.

В Ubuntu и Debian вы можете использовать -

sudo aptitude install couchdb

В Gentoo Linux доступен ebuild CouchDB -

sudo emerge couchdb

Если в вашей системе Linux нет CouchDB, следуйте следующему разделу, чтобы установить CouchDB и его зависимости.

Установка зависимостей CouchDB

Ниже приведен список зависимостей, которые должны быть установлены, чтобы получить CouchDB в вашей системе.

  • Erlang OTP
  • ICU
  • OpenSSL
  • Mozilla SpiderMonkey
  • GNU Make
  • Коллекция компиляторов GNU
  • libcurl
  • help2man
  • Python для документов
  • Питон Сфинкс

Чтобы установить эти зависимости, введите в терминале следующие команды. Здесь мы используем Centos 6.5, и следующие команды установят необходимое программное обеспечение, совместимое с Centos 6.5.

$sudo yum install autoconf
$sudo yum install autoconf-archive
$sudo yum install automake
$sudo yum install curl-devel
$sudo yum install erlang-asn1
$sudo yum install erlang-erts
$sudo yum install erlang-eunit
$sudo yum install erlang-os_mon
$sudo yum install erlang-xmerl
$sudo yum install help2man
$sudo yum install js-devel
$sudo yum install libicu-devel
$sudo yum install libtool
$sudo yum install perl-Test-Harness

Note −Для всех этих команд вам нужно использовать sudo. Следующая процедура преобразует обычного пользователя в sudoer.

  • Войдите как root в админке

  • открыто sudo файл, используя следующую команду -

visudo
  • Затем отредактируйте, как показано ниже, чтобы предоставить существующему пользователю права sudoer -
Hadoop All=(All) All , and press esc : x to write the changes to the file.

После загрузки всех зависимостей в вашей системе загрузите CouchDB, следуя приведенным инструкциям.

Скачивание CouchDB

Программный фонд Apache не предоставляет полный файл .tar для CouchDB, поэтому вам придется установить его из источника.

Создайте новый каталог для установки CouchDB, перейдите в такой созданный каталог и загрузите исходный код CouchDB, выполнив следующие команды:

$ cd
$ mkdir CouchDB
$ cd CouchDB/
$ wget
http://www.google.com/url?q=http%3A%2F%2Fwww.apache.org%2Fdist%2Fcouchdb%2Fsource%2F1.6.1%2Fapache-couchdb-1.6.1.tar.gz

Это загрузит исходный файл CouchDB в вашу систему. Теперь разархивируйтеapache-couchdb-1.6.1.tar.gz как показано ниже.

$ tar zxvf apache-couchdb-1.6.1.tar.gz

Настройка CouchDB

Чтобы настроить CouchDB, сделайте следующее:

  • Перейдите в домашнюю папку CouchDB.
  • Войдите как суперпользователь.
  • Настройте, используя приглашение ./configure, как показано ниже -
$ cd apache-couchdb-1.6.1
$ su
Password:
# ./configure --with-erlang=/usr/lib64/erlang/usr/include/

Он дает вам следующий результат, аналогичный показанному ниже, с заключительной строкой, говорящей: You have configured Apache CouchDB, time to relax.

# ./configure --with-erlang=/usr/lib64/erlang/usr/include/

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking how to create a ustar tar archive... gnutar
………………………………………………………..
……………………….
config.status: creating var/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: creating src/snappy/google-snappy/config.h
config.status: src/snappy/google-snappy/config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands

You have configured Apache CouchDB, time to relax.

Run `make && sudo make install' to install.

Установка CouchDB

Теперь введите следующую команду, чтобы установить CouchDB в вашей системе.

# make && sudo make install

Он устанавливает CouchDB в вашу систему с заключительной строкой: You have installed Apache CouchDB, time to relax.

Запуск CouchDB

Чтобы запустить CouchDB, перейдите в домашнюю папку CouchDB и используйте следующую команду -

$ cd apache-couchdb-1.6.1
$ cd etc
$ couchdb start

Он запускает CouchDB и дает следующий вывод: -

Apache CouchDB 1.6.1 (LogLevel=info) is starting.
Apache CouchDB has started. Time to relax.
[info] [lt;0.31.0gt;] Apache CouchDB has started on http://127.0.0.1:5984/
[info] [lt;0.112.0gt;] 127.0.0.1 - - GET / 200
[info] [lt;0.112.0gt;] 127.0.0.1 - - GET /favicon.ico 200

Проверка

Поскольку CouchDB - это веб-интерфейс, попробуйте ввести в браузере следующий URL-адрес домашней страницы.

http://127.0.0.1:5984/

Он производит следующий вывод -

{
   "couchdb":"Welcome",
   "uuid":"8f0d59acd0e179f5e9f0075fa1f5e804",
   "version":"1.6.1",
   "vendor":{
      "name":"The Apache Software Foundation",
      "version":"1.6.1"
   }
}

Утилита cURL

Утилита cURL - это способ связи с CouchDB.

Это инструмент для передачи данных с сервера или на сервер с использованием одного из поддерживаемых протоколов (HTTP, HTTPS, FTP, FTPS, TFTP, DICT, TELNET, LDAP или FILE). Команда предназначена для работы без взаимодействия с пользователем. cURL предлагает множество полезных трюков, таких как поддержка прокси, аутентификация пользователя, загрузка ftp, HTTP-сообщение, SSL (https :) соединения, куки, возобновление передачи файлов и многое другое.

Утилита cURL доступна в таких операционных системах, как UNIX, Linux, Mac OS X и Windows. Это утилита командной строки, с помощью которой пользователь может получить доступ к протоколу HTTP прямо из командной строки. В этой главе вы узнаете, как использовать утилиту cURL.

Использование утилиты cURL

Вы можете получить доступ к любому веб-сайту с помощью утилиты cURL, просто набрав cURL, а затем адрес веб-сайта, как показано ниже -

curl www.tutorialspoint.com/

По умолчанию утилита cURL возвращает исходный код запрошенной страницы. Он отображает этот код в окне терминала.

Параметры утилиты cURL

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

Следующий код показывает некоторую часть справки cURL.

$ curl --help
Usage: curl [options...] <url>
Options: (H) means HTTP/HTTPS only, (F) means FTP only
      --anyauth Pick "any" authentication method (H)
   -a/--append Append to target file when uploading (F/SFTP)
      --basic Use HTTP Basic Authentication (H)
      --cacert <file> CA certificate to verify peer against (SSL)
-d/--data <data> HTTP POST data (H)
      --data-ascii <data> HTTP POST ASCII data (H)
      --data-binary <data> HTTP POST binary data (H)
      --data-urlencode <name=data/name@filename> HTTP POST data
urlencoded (H)
      --delegation STRING GSS-API delegation permission
      --digest Use HTTP Digest Authentication (H)
      --disable-eprt Inhibit using EPRT or LPRT (F)
      --disable-epsv Inhibit using EPSV (F)

   -F/--form <name=content> Specify HTTP multipart POST data (H)
      --form-string <name=string> Specify HTTP multipart POST data (H)
      --ftp-account <data> Account data to send when requested by server
(F)
      --ftp-alternative-to-user <cmd> String to replace "USER [name]" (F)
      --ftp-create-dirs Create the remote dirs if not present (F)
      --ftp-method [multi cwd/no cwd/single cwd] Control CWD usage (F)
      --ftp-pasv Use PASV/EPSV instead of PORT (F)

   -G/--get Send the -d data with a HTTP GET (H)

   -H/--header <line> Custom header to pass to server (H)
   -I/--head Show document info only
   -h/--help This help text
      --hostpubmd5 <md5> Hex encoded MD5 string of the host public key.
(SSH)
   -0/--http1.0 Use HTTP 1.0 (H)
      --ignore-content-length Ignore the HTTP Content-Length header
   -i/--include Include protocol headers in the output (H/F)

   -M/--manual Display the full manual

   -o/--output <file> Write output to <file> instead of stdout
      --pass <pass> Pass phrase for the private key (SSL/SSH)
      --post301 Do not switch to GET after following a 301
redirect (H)
      --post302 Do not switch to GET after following a 302
redirect (H)
   -O/--remote-name Write output to a file named as the remote file
      --remote-name-all Use the remote file name for all URLs
   -R/--remote-time Set the remote file's time on the local output
   -X/--request <command> Specify request command to use
      --retry <num> Retry request <num> times if transient problems
occur
      --retry-delay <seconds> When retrying, wait this many seconds
between each
      --retry-max-time <seconds> Retry only within this period
   -T/--upload-file <file> Transfer <file> to remote site
      --url <URL> Set URL to work with
   -B/--use-ascii Use ASCII/text transfer

При общении с CouchDB широко использовались некоторые опции утилиты cURL. Ниже приведены краткие описания некоторых важных опций утилиты cURL, в том числе используемых CouchDB.

-X флаг

(HTTP) Задает настраиваемый метод запроса, используемый при взаимодействии с HTTP-сервером. Указанный запрос используется вместо метода, который в противном случае использовался (по умолчанию GET). Прочтите спецификацию HTTP 1.1 для получения подробностей и пояснений.

(FTP) Задает настраиваемую команду FTP для использования вместо LIST при составлении списков файлов с помощью ftp.

-ЧАС

(HTTP) Дополнительный заголовок используется при получении веб-страницы. Обратите внимание, что если вы добавляете настраиваемый заголовок с тем же именем, что и один из внутренних, который будет использовать cURL, ваш внешний заголовок будет использоваться вместо внутреннего. Это позволяет вам выполнять даже более сложную работу, чем обычно делает cURL. Вы не должны заменять установленные внутри заголовки, не зная точно, что вы делаете. Замена внутреннего заголовка на заголовок без содержимого в правой части двоеточия предотвратит появление этого заголовка.

cURL гарантирует, что каждый заголовок, который вы добавляете / заменяете, будет отправлен с правильным маркером конца строки. Ни вам не следует добавлять это как часть содержимого заголовка, ни добавлять новые строки или символы возврата каретки, чтобы беспорядок.

См. Также параметры -A / - user-agent и -e / - referer.

Этот параметр можно использовать несколько раз для добавления / замены / удаления нескольких заголовков.

-d флаг

Используя этот флаг cURL, вы можете отправлять данные вместе с HTTP-запросом POST на сервер, как если бы они были заполнены пользователем в форме и отправлены.

Example

Предположим, существует веб-сайт, и вы хотите войти на него или отправить некоторые данные на веб-сайт, используя флаг -d утилиты cURL, как показано ниже.

curl -X PUT http://mywebsite.com/login.html -d userid=001 -d password=tutorialspoint

Он отправляет фрагмент сообщения, который выглядит как "userid=001&password=tutorialspoint". Точно так же вы также можете отправлять документы (JSON), используя флаг -d.

-o флаг

Используя этот флаг, cURL записывает вывод запроса в файл.

Example

В следующем примере показано использование -o флаг утилиты cURL.

$ curl -o example.html www.tutorialspoint.com/index.htm 
% Total % Received % Xferd Average Speed Time Time Time Current 
      Dload Upload Total Spent Left Speed
100 81193 0 81193 0 0 48168 0 --:--:-- 0:00:01 --:--:--
58077

Он получает исходный код домашней страницы tutorialspoint.com, создает файл с именем example.com и сохраняет вывод в файле с именем example.html.

Ниже приведен снимок example.html.

-O

Этот флаг похож на –o, единственное отличие состоит в том, что с этим флагом был создан новый файл с тем же именем, что и запрошенный URL, и исходный код запрошенного URL будет скопирован в него.

Example

В следующем примере показано использование -O флаг утилиты cURL.

$ curl -O www.tutorialspoint.com/index.htm
% Total % Received % Xferd Average Speed Time Time Time Current
      Dload Upload Total Spent Left
Speed
100 81285 0 81285 0 0 49794 0 --:--:-- 0:00:01 --:--:--
60077

Он создает новый файл с именем index.htm и сохраняет в нем исходный код индексной страницы tutorialspoint.com.

Привет, CouchDB

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

curl http://127.0.0.1:5984/

Это дает вам документ JSON, как показано ниже, где CouchDB указывает такие детали, как номер версии, имя поставщика и версия программного обеспечения.

$ curl http://127.0.0.1:5984/
{
   "couchdb" : "Welcome",
   "uuid" : "8f0d59acd0e179f5e9f0075fa1f5e804",
   "version" : "1.6.1",
   "vendor" : {
      "name":"The Apache Software Foundation",
      "version":"1.6.1"
   }
}

Список всех баз данных

Вы можете получить список всех созданных баз данных, отправив запрос на получение вместе со строкой "_all_dbs string ". Ниже приводится синтаксис для получения списка всех баз данных в CouchDB.

curl -X GET http://127.0.0.1:5984/_all_dbs

Он дает вам список всех баз данных в CouchDB, как показано ниже.

$ curl -X GET http://127.0.0.1:5984/_all_dbs
[ "_replicator" , "_users" ]

Создание базы данных

Вы можете создать базу данных в CouchDB, используя cURL с заголовком PUT, используя следующий синтаксис:

$ curl -X PUT http://127.0.0.1:5984/database_name

пример

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

$ curl -X PUT http://127.0.0.1:5984/my_database
{"ok":true}

Проверка

Убедитесь, что база данных создана, перечислив все базы данных, как показано ниже. Здесь вы можете увидеть название вновь созданной базы данных,"my_database" в списке

$ curl -X GET http://127.0.0.1:5984/_all_dbs

[ "_replicator " , "_users" , "my_database" ]

Получение информации о базе данных

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

пример

В качестве примера получим информацию о базе данных с именем my_databaseкак показано ниже. Здесь вы можете получить в ответ информацию о своей базе данных.

$ curl -X GET http://127.0.0.1:5984/my_database

{
   "db_name" : "my_database",
   "doc_count" : 0,
   "doc_del_count" : 0,
   "update_seq" : 0,
   "purge_seq" : 0,
   "compact_running" : false,
   "disk_size" : 79,
   "data_size" : 0,
   "instance_start_time" : "1423628520835029",
   "disk_format_version" : 6,
   "committed_update_seq" : 0
 }

Футон

Futon - это встроенный веб-интерфейс администрирования CouchDB. Он предоставляет простой графический интерфейс, с помощью которого вы можете взаимодействовать с CouchDB. Это наивный интерфейс, обеспечивающий полный доступ ко всем функциям CouchDB. Ниже приводится список этих функций -

Databases −
  • Создает базы данных.
  • Уничтожает базы данных.
Documents −
  • Создает документы.
  • Обновляет документы.
  • Редактирует документы.
  • Удаляет документы.

Запуск Futon

Убедитесь, что CouchDB запущен, а затем откройте следующий URL-адрес в браузере -

http://127.0.0.1:5984/_utils/

Если вы откроете этот URL-адрес, он отобразит домашнюю страницу Futon, как показано ниже -

  • В левой части этой страницы вы можете увидеть список всех текущих баз данных CouchDB. На этой иллюстрации у нас есть база данных с именемmy_databaseвместе с системными базами данных _replicator и _user.

  • С правой стороны вы можете увидеть следующее -

    • Tools - В этом разделе вы можете найти Configuration для настройки CouchDB, Replicator для выполнения репликаций и Status для проверки статуса CouchDB и последних изменений, внесенных в CouchDB.

    • Documentation - В этом разделе содержится полная документация по последней версии CouchDB.

    • Diagnostics - Под этим вы можете проверить установку CouchDB.

    • Recent Databases - Под ним вы можете найти названия недавно добавленных баз данных.

Используя заголовки HTTP-запросов, вы можете общаться с CouchDB. Посредством этих запросов мы можем извлекать данные из базы данных, сохранять данные в базе данных в форме документов, а также просматривать и форматировать документы, хранящиеся в базе данных.

Форматы HTTP-запросов

При взаимодействии с базой данных мы будем использовать разные форматы запросов, такие как получение, заголовок, публикация, размещение, удаление и копирование. Для всех операций в CouchDB входные данные и структуры выходных данных будут в форме объекта JavaScript Object Notation (JSON).

Ниже приведены различные форматы запросов протокола HTTP, используемые для связи с CouchDB.

  • GET- Этот формат используется для получения определенного предмета. Чтобы получить разные товары, вам нужно отправить определенные шаблоны URL. В CouchDB, используя этот запрос GET, мы можем получать статические элементы, документы и конфигурацию базы данных, а также статистическую информацию в форме документов JSON (в большинстве случаев).

  • HEAD - Метод HEAD используется для получения HTTP-заголовка запроса GET без тела ответа.

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

  • PUT - Используя запрос PUT, вы можете создавать новые объекты, базы данных, документы, представления и проектные документы.

  • DELETE - Используя запрос DELETE, вы можете удалять документы, представления и проектные документы.

  • COPY - Используя метод КОПИРОВАНИЯ, вы можете копировать документы и объекты.

Заголовки HTTP-запросов

Заголовки HTTP должны быть предоставлены, чтобы получить правильный формат и кодировку. При отправке запроса на сервер CouchDB вы можете отправлять заголовки запросов Http вместе с запросом. Ниже приведены различные заголовки запросов Http.

  • Content-type- Этот заголовок используется для указания типа содержимого данных, которые мы предоставляем серверу вместе с запросом. В основном тип контента, который мы отправляем вместе с запросом, будет типом MIME или JSON (application / json). Настоятельно рекомендуется использовать Content-type в запросе.

  • Accept- Этот заголовок используется для указания сервера, списка типов данных, которые клиент может понять, чтобы сервер отправлял свой ответ с использованием этих типов данных. Как правило, здесь вы можете отправить список типов данных MIME, которые принимает клиент, через двоеточие.

    Хотя использование Accept в запросах CouchDB не требуется, настоятельно рекомендуется убедиться, что возвращаемые данные могут быть обработаны клиентом.

Заголовки ответа

Это заголовки ответа, отправленного сервером. Эти заголовки предоставляют информацию о контенте, отправленном сервером в качестве ответа.

  • Content-type- Этот заголовок определяет MIME-тип данных, возвращаемых сервером. Для большинства запросов возвращаемый тип MIME - text / plain.

  • Cache-control- Этот заголовок предлагает клиенту обработать информацию, отправленную сервером. CouchDB в основном возвращает обязательную повторную проверку, которая указывает, что информация должна быть повторно проверена, если это возможно.

  • Content-length - Этот заголовок возвращает длину содержимого, отправленного сервером, в байтах.

  • Etag - Этот заголовок используется для отображения редакции документа или представления.

Коды состояния

Ниже приводится табличная форма кода состояния, отправляемого заголовком http, и его описание.

Sr.No. Код состояния и описание
1

200 − OK

Этот статус будет выдан после успешного выполнения запроса.

2

201 − Created

Этот статус будет выдан при создании документа.

3

202 − Accepted

Этот статус будет выдан, когда запрос будет принят.

4

404 − Not Found

Этот статус будет выдан, когда сервер не сможет найти запрошенный контент.

5

405 − Resource Not Allowed

Этот статус выдается, когда используемый тип HTTP-запроса недействителен.

6

409 − Conflict

Этот статус выдается всякий раз, когда возникает конфликт обновления.

7

415 − Bad Content Type

Этот статус указывает на то, что запрошенный тип контента не поддерживается сервером.

8

500 − Internal Server Error

Этот статус выдается всякий раз, когда данные, отправленные в запросе, недействительны.

Пути URL-адресов HTTP

Существуют определенные URL-адреса, с помощью которых вы можете напрямую взаимодействовать с базой данных. Ниже приводится табличный формат таких URL-адресов.

Sr.No. URL и операция
1

PUT /db

Этот URL-адрес используется для создания новой базы данных.

2

GET /db

Этот URL используется для получения информации о существующей базе данных.

3

PUT /db/document

Этот URL-адрес используется для создания документа / обновления существующего документа.

4

GET /db/document

Этот URL используется для получения документа.

5

DELETE /db/document

Этот URL-адрес используется для удаления указанного документа из указанной базы данных.

6

GET /db/_design/design-doc

Этот URL-адрес используется для получения определения проектного документа.

7

GET /db/_design/designdoc/_view/view-name

Этот URL-адрес используется для доступа к представлению, имени представления из проектного документа из указанной базы данных.

База данных - это самая внешняя структура данных в CouchDB, где хранятся ваши документы. Вы можете создать эти базы данных, используя утилиту cURL, предоставляемую CouchDB, а также Futon, веб-интерфейс CouchDB.

Создание базы данных с помощью утилиты cURL

Вы можете создать базу данных в CouchDB, отправив HTTP-запрос на сервер, используя метод PUT через утилиту cURL. Ниже приводится синтаксис для создания базы данных -

$ curl -X PUT http://127.0.0.1:5984/database name

С помощью −Xмы можем указать используемый метод HTTP-запроса. В этом случае мы используем метод PUT. Когда мы используем операцию / метод PUT, содержимое URL-адреса указывает имя объекта, который мы создаем с помощью HTTP-запроса. Здесь мы должны отправить имя базы данных, используя запрос на размещение в URL-адресе для создания базы данных.

пример

Используя указанный выше синтаксис, если вы хотите создать базу данных с именем my_database, вы можете создать его следующим образом

curl -X PUT http://127.0.0.1:5984/my_database
{
   "ok":true
}

В ответ сервер вернет вам документ JSON с содержимым “ok” - true означает, что операция прошла успешно.

Проверка

Убедитесь, что база данных создана, перечислив все базы данных, как показано ниже. Здесь вы можете увидеть имя вновь созданной базы данных," my_database " в списке.

$ curl -X GET http://127.0.0.1:5984/_all_dbs

[ "_replicator " , " _users " , " my_database " ]

Создание базы данных с использованием Futon

Чтобы создать базу данных, откройте http://127.0.0.1:5984/_utils/. Вы получите обзорную / индексную страницу CouchDB, как показано ниже.

На этой странице вы можете увидеть список баз данных в CouchDB, кнопка выбора «Создать базу данных» слева.

Теперь щелкните ссылку создания базы данных. Вы можете увидеть всплывающее окноCreate New Databasesзапрашивает имя базы данных для новой базы данных. Выберите любое имя, соответствующее указанным критериям. Здесь мы создаем еще одну базу данных с именем tutorials_point. Нажмите кнопку создания, как показано на следующем снимке экрана.

Удаление базы данных с помощью утилиты cURL

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

$ curl -X DELETE http://127.0.0.1:5984/database name

С помощью −Xмы можем указать собственный метод HTTP-запроса, который мы используем при взаимодействии с HTTP-сервером. В этом случае мы используем метод DELETE. Отправьте URL-адрес на сервер, указав в нем базу данных, которую нужно удалить.

пример

Предположим, что в CouchDB есть база данных с именем my_database2. Используя приведенный выше синтаксис, если вы хотите удалить его, вы можете сделать это следующим образом:

$ curl -X DELETE http://127.0.0.1:5984/my_database2
{
   "ok" : true
}

В ответ сервер вернет вам документ JSON с содержимым “ok” - true означает, что операция прошла успешно.

Проверка

Убедитесь, что база данных удалена, перечислив все базы данных, как показано ниже. Здесь вы можете увидеть имя удаленной базы данных,"my_database" нет в списке.

$ curl -X GET http://127.0.0.1:5984/_all_dbs

[ "_replicator " , " _users " ]

Удаление базы данных с помощью Futon

Чтобы удалить базу данных, откройте http://127.0.0.1:5984/_utils/ URL-адрес, по которому вы получите страницу обзора / индекса CouchDB, как показано ниже.

Здесь вы можете увидеть три базы данных, созданные пользователями. Давайте удалим базу данных с именем tutorials_point2. Чтобы удалить базу данных, выберите одну из списка баз данных и щелкните по ней, что приведет к странице обзора выбранной базы данных, где вы сможете увидеть различные операции с базами данных. На следующем снимке экрана показано то же самое -

Среди них можно найти Delete Databaseвариант. Нажав на нее, вы увидите всплывающее окно с вопросом, уверены ли вы! Нажмите «Удалить», чтобы удалить выбранную базу данных.

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

Каждый документ в CouchDB имеет уникальный идентификатор. Вы можете выбрать свой собственный идентификатор, который должен быть в виде строки. Как правило, используется UUID (универсально уникальный идентификатор идентификатора), который представляет собой случайные числа, которые имеют наименьшую вероятность создания дубликата. Они предпочтительны во избежание столкновений.

Создание документа с помощью утилиты cURL

Вы можете создать документ в CouchDB, отправив HTTP-запрос на сервер, используя метод PUT через утилиту cURL. Ниже приводится синтаксис для создания документа.

$ curl -X PUT http://127.0.0.1:5984/database name/"id" -d ' { document} '

С помощью −X, мы можем указать собственный метод запроса HTTP, который мы используем при взаимодействии с HTTP-сервером. В этом случае мы используем метод PUT. Когда мы используем метод PUT, содержимое URL-адреса указывает имя объекта, который мы создаем с помощью HTTP-запроса. Здесь мы должны отправить следующее -

  • Имя базы данных, в которой мы создаем документ.

  • Идентификатор документа.

  • Данные документа. −dопция используется для отправки данных / документа через HTTP-запрос. Во время написания документа просто введите пары «поле-значение», разделенные двоеточием, в квадратных скобках, как показано ниже -

{
   Name : Raju
   age : 23
   Designation : Designer
}

пример

Используя указанный выше синтаксис, если вы хотите создать документ с идентификатором 001 в базе данных с именем my_database, вы можете создать его, как показано ниже.

$ curl -X PUT http://127.0.0.1:5984/my_database/"001" -d
'{ " Name " : " Raju " , " age " :" 23 " , " Designation " : " Designer " }'

{"ok":true,"id":"001","rev":"1-1c2fae390fa5475d9b809301bbf3f25e"}

Ответ CouchDB на этот запрос содержит три поля -

  • "ok", означает, что операция прошла успешно.

  • "id", в котором хранится идентификатор документа и

  • "rev",это указывает идентификатор редакции. Каждый раз, когда вы редактируете (обновляете или изменяете) документ,_revзначение будет сгенерировано CouchDB. Если вы хотите обновить или удалить документ, CouchDB ожидает, что вы включите_revполе ревизии, которую вы хотите изменить. Когда CouchDB примет изменение, он сгенерирует новый номер версии. Этот механизм обеспечивает контроль параллелизма.

Проверка

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

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id": "001",
   "_rev": "1-3fcc78daac7a90803f0a5e383f4f1e1e",
   "Name": "Raju",
   "age": 23,
   "Designation": "Designer"
}

Создание документа с использованием Futon

Чтобы создать документ, откройте http://127.0.0.1:5984/_utils/ URL, чтобы получить страницу обзора / индекса CouchDB, как показано ниже.

Выберите базу данных, в которой вы хотите создать документ. Откройте страницу обзора базы данных и выберитеNew Document вариант, как показано ниже.

Когда вы выбираете New Documentвариант, CouchDB создает новый документ базы данных, присваивая ему новый идентификатор. Вы можете редактировать значение идентификатора и назначать собственное значение в виде строки. На следующем рисунке мы создали новый документ с идентификатором 001.

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

Добавить поле в документ

Чтобы добавить поле в документ, нажмите Add Fieldвариант. После создания базы данных вы можете добавить в нее поле, используя эту опцию. Нажав на нее, вы получите пару текстовых полей, а именно:Field, value.Вы можете редактировать эти значения, нажимая на них. Отредактируйте эти значения и введите желаемую пару «поле-значение». Нажмите зеленую кнопку, чтобы сохранить эти значения.

На следующем рисунке мы создали три поля: «Имя», «Возраст» и «Назначение сотрудника».

Сохранить документ

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

Обновление документов с помощью cURL

Вы можете обновить документ в CouchDB, отправив HTTP-запрос на сервер, используя метод PUT через утилиту cURL. Ниже приведен синтаксис обновления документа.

curl -X PUT http://127.0.0.1:5984/database_name/document_id/ -d '{ "field" : "value", "_rev" : "revision id" }'

пример

Предположим, что есть документ с идентификатором 001 в базе данных с именем my_database. Вы можете удалить это, как показано ниже.

Прежде всего, получите идентификатор редакции документа, который нужно обновить. Вы можете найти_rev документа в самом документе, поэтому получите документ, как показано ниже.

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id" : "001",
   "_rev" : "2-04d8eac1680d237ca25b68b36b8899d3 " ,
   "age" : "23"
}

Используйте идентификатор ревизии _rev из документа, чтобы обновить документ. Здесь мы обновляем возраст с 23 до 24 лет.

$ curl -X PUT http://127.0.0.1:5984/my_database/001/ -d
' { " age " : " 24 " , " _rev " : " 1-1c2fae390fa5475d9b809301bbf3f25e " } '

{ " ok " : true , " id " : " 001 " , " rev " : " 2-04d8eac1680d237ca25b68b36b8899d3 " }

Проверка

Чтобы проверить документ, снова получите документ, используя запрос GET, как показано ниже.

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   " _id " : " 001 ",
   " _rev " : " 2-04d8eac1680d237ca25b68b36b8899d3 " ,
   " age " : " 23 "
 }
Note

Ниже приведены некоторые важные моменты, которые следует учитывать при обновлении документа.

  • URL-адрес, который мы отправляем в запросе, содержащий имя базы данных и идентификатор документа.

  • Обновление существующего документа аналогично обновлению всего документа. Вы не можете добавить поле в существующий документ. Вы можете записать в базу данных только совершенно новую версию документа с тем же идентификатором документа.

  • Мы должны указать номер версии как часть запроса JSON.

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

Обновление документов с помощью Futon

Чтобы удалить документ, откройте http://127.0.0.1:5984/_utils/ URL, чтобы получить страницу обзора / индекса CouchDB, как показано ниже.

Выберите базу данных, в которой существует обновляемый документ, и щелкните по ней. Здесь мы обновляем документ в базе данных с именемtutorials_point. Вы получите список документов в базе данных, как показано ниже.

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

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

Удаление документа с помощью утилиты cURL

Вы можете удалить документ в CouchDB, отправив HTTP-запрос на сервер, используя метод DELETE через утилиту cURL. Ниже приводится синтаксис для удаления документа.

curl -X DELETE http : // 127.0.0.1:5984 / database name/database id?_rev id

С помощью −X,мы можем указать собственный метод HTTP-запроса, который мы используем при взаимодействии с HTTP-сервером. В этом случае мы используем метод Delete. /database_name/database_id/Недостаточно удалить базу данных . Вы должны передать идентификатор последней версии через URL-адрес. Упоминать атрибуты любой структуры данных"?" используется.

пример

Предположим, в базе данных есть документ с именем my_databaseс идентификатором документа 001. Чтобы удалить этот документ, вы должны получить идентификатор версии документа. Получите данные документа, как показано ниже.

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   " _id " : " 001 ",
   " _rev " : " 2-04d8eac1680d237ca25b68b36b8899d3 " ,
   " age " : " 23 "
}

Теперь укажите идентификатор версии удаляемого документа, идентификатор документа и имя базы данных, к которой принадлежит документ, как показано ниже -

$ curl -X DELETE http://127.0.0.1:5984/my_database/001?rev=1-
3fcc78daac7a90803f0a5e383f4f1e1e

{"ok":true,"id":"001","rev":"2-3a561d56de1ce3305d693bd15630bf96"}

Проверка

Чтобы проверить, удален ли документ, попробуйте получить документ с помощью GETметод. Поскольку вы загружаете удаленный документ, это даст вам сообщение об ошибке, как показано ниже -

$ curl -X GET http://127.0.0.1:5984/my_database/001
{"error":"not_found","reason":"deleted"}

Удаление документа с помощью Futon

Прежде всего, проверьте документы в базе данных. Ниже приведен снимок базы данных с именемtutorials_point.

Как видите, база данных состоит из трех документов. Чтобы удалить любой из документов, скажите003, сделайте следующее -

  • Щелкните документ, вы увидите страницу, показывающую содержимое выбранного документа в виде пар поля-значения.

  • Эта страница также содержит четыре варианта, а именно Save Document, Add Field, Upload Attachment, Delete Document.

  • Нажмите на Delete Document вариант.

  • Вы получите диалоговое окно с сообщением "Are you sure you want to delete this document?" Нажмите «Удалить», чтобы удалить документ.

Прикрепление файлов с помощью cURL

Вы можете прикреплять файлы к CouchDB как к электронной почте. Файл содержит метаданные, такие как имя, и включает его MIME-тип и количество байтов, которые содержит вложение. Чтобы прикрепить файлы к документу, вам необходимо отправить запрос PUT на сервер. Ниже приводится синтаксис для прикрепления файлов к документу -

$ curl -vX PUT http://127.0.0.1:5984/database_name/database_id
/filename?rev=document rev_id --data-binary @filename -H "Content-Type:
type of the content"

Запрос имеет различные варианты, которые описаны ниже.

  • --data-binary@ - Эта опция указывает cURL читать содержимое файла в теле HTTP-запроса.

  • -H - Эта опция используется для указания типа содержимого файла, который мы собираемся загрузить.

пример

Прикрепим файл с именем boy.jpg, в документ с id 001, в базе данных с именем my_databaseотправив запрос PUT в CouchDB. Перед этим вы должны получить данные документа с идентификатором001 получить его текущий rev id, как показано ниже.

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id": "001",
   "_rev": "1-967a00dff5e02add41819138abb3284d"
}

Теперь используя _rev значение, отправьте запрос PUT на сервер CouchDB, как показано ниже.

$ curl -vX PUT http://127.0.0.1:5984/my_database/001/boy.jpg?rev=1-
967a00dff5e02add41819138abb3284d --data-binary @boy.jpg -H "ContentType:
image/jpg"

Проверка

Чтобы проверить, загружено ли вложение, загрузите содержимое документа, как показано ниже:

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id": "001",
   "_rev": "2-4705a219cdcca7c72aac4f623f5c46a8",
   "_attachments": {
      "boy.jpg": {
         "content_type": "image/jpg",
         "revpos": 2,
         "digest": "md5-9Swz8jvmga5mfBIsmCxCtQ==",
         "length": 91408,
         "stub": true
      }
   }
}

Прикрепление файлов с помощью Futon

Загрузить вложение

Используя эту опцию, вы можете загрузить новое вложение, такое как файл, изображение или документ, в базу данных. Для этого нажмите наUpload Attachmentкнопка. Появится диалоговое окно, в котором вы можете выбрать файл для загрузки. Выберите файл и нажмите наUpload кнопка.

Загруженный файл будет отображаться в поле _attachments. Позже вы сможете увидеть файл, щелкнув по нему.