CouchDB - Guía rápida

El sistema de gestión de bases de datos proporciona un mecanismo para el almacenamiento y recuperación de datos. Hay tres tipos principales de sistemas de gestión de bases de datos, a saber, RDBMS (sistemas de gestión de bases de datos relacionales), OLAP (sistemas de procesamiento analítico en línea) y NoSQL.

RDBMS

RDBMS significa Sistema de gestión de bases de datos relacionales. RDBMS es la base de SQL y de todos los sistemas de bases de datos modernos como MS SQL Server, IBM DB2, Oracle, MySQL y Microsoft Access.

Un sistema de gestión de bases de datos relacionales (RDBMS) es un sistema de gestión de bases de datos (DBMS) que se basa en el modelo relacional introducido por EF Codd.

Los datos en RDBMS se almacenan en objetos de base de datos llamados tables. La tabla es una colección de entradas de datos relacionados y consta de columnas y filas. Almacena solo datos estructurados.

OLAP

El servidor de procesamiento analítico en línea (OLAP) se basa en el modelo de datos multidimensionales. Permite a los administradores y analistas obtener una perspectiva de la información a través de un acceso rápido, consistente e interactivo a la información.

Bases de datos NoSQL

Una base de datos NoSQL (a veces denominada No solo SQL) es una base de datos que proporciona un mecanismo para almacenar y recuperar datos distintos de las relaciones tabulares utilizadas en las bases de datos relacionales. Estas bases de datos no tienen esquemas, admiten una replicación sencilla, tienen una API simple, eventualmente son consistentes y pueden manejar grandes cantidades de datos (big data).

El objetivo principal de una base de datos NoSQL es tener lo siguiente:

  • Simplicidad de diseño,
  • Escalado horizontal y
  • Mayor control sobre la disponibilidad.

Las bases de datos NoSQL utilizan diferentes estructuras de datos en comparación con las bases de datos relacionales. Acelera algunas operaciones en NoSQL. La idoneidad de una base de datos NoSQL determinada depende del problema que deba resolver. Estas bases de datos almacenan tanto datos estructurados como datos no estructurados como archivos de audio, archivos de video, documentos, etc. Estas bases de datos NoSQL se clasifican en tres tipos y se explican a continuación.

Key-value Store- Estas bases de datos están diseñadas para almacenar datos en pares clave-valor y estas bases de datos no tendrán ningún esquema. En estas bases de datos, cada valor de datos consta de una clave indexada y un valor para esa clave.

Ejemplos: BerkeleyDB, Cassandra, DynamoDB, Riak.

Column Store- En estas bases de datos, los datos se almacenan en celdas agrupadas en columnas de datos, y estas columnas se agrupan en familias de columnas. Estas familias de columnas pueden contener cualquier número de columnas.

Ejemplos: BigTable, HBase e HyperTable.

Document Store- Son las bases de datos desarrolladas sobre la idea básica de almacenes clave-valor donde los "documentos" contienen datos más complejos. Aquí, a cada documento se le asigna una clave única, que se utiliza para recuperar el documento. Estos están diseñados para almacenar, recuperar y administrar información orientada a documentos, también conocida como datos semiestructurados.

Ejemplos: CouchDB y MongoDB.

¿Qué es CouchDB?

CouchDB es una base de datos de código abierto desarrollada por la fundación de software Apache. La atención se centra en la facilidad de uso, abarcando la web. Es una base de datos de almacenamiento de documentos NoSQL.

Utiliza JSON, para almacenar datos (documentos), script java como lenguaje de consulta para transformar los documentos, protocolo http para que api acceda a los documentos, consultar los índices con el navegador web. Es una aplicación multimaestro lanzada en 2005 y se convirtió en un proyecto de apache en 2008.

¿Por qué CouchDB?

  • CouchDB tiene una API REST basada en HTTP, que ayuda a comunicarse fácilmente con la base de datos. Y la estructura simple de los recursos y métodos HTTP (GET, PUT, DELETE) son fáciles de entender y usar.

  • Como almacenamos datos en la estructura flexible basada en documentos, no hay necesidad de preocuparse por la estructura de los datos.

  • Los usuarios cuentan con un potente mapeo de datos, que permite consultar, combinar y filtrar la información.

  • CouchDB proporciona una replicación fácil de usar, mediante la cual puede copiar, compartir y sincronizar los datos entre bases de datos y máquinas.

Modelo de datos

  • La base de datos es la estructura / contenedor de datos más externo en CouchDB.

  • Cada base de datos es una colección de documentos independientes.

  • Cada documento mantiene sus propios datos y un esquema autónomo.

  • Los metadatos del documento contienen información de revisión, lo que permite fusionar las diferencias ocurridas mientras las bases de datos estaban desconectadas.

  • CouchDB implementa control de simultaneidad de múltiples versiones, para evitar la necesidad de bloquear el campo de la base de datos durante las escrituras.

Características de CouchDB: Reducir el contenido

Almacenamiento de documento

CouchDB es una base de datos NoSQL de almacenamiento de documentos. Proporciona la posibilidad de almacenar documentos con nombres únicos, y también proporciona una API llamada RESTful HTTP API para leer y actualizar (agregar, editar, eliminar) documentos de base de datos.

En CouchDB, los documentos son la unidad principal de datos y también incluyen metadatos. Los campos de documento tienen un nombre único y contienen valores de diferentes tipos (texto, número, booleano, listas, etc.), y no hay un límite establecido para el tamaño del texto o el recuento de elementos.

Las actualizaciones de documentos (agregar, editar, eliminar) siguen a Atomicity, es decir, se guardarán por completo o no se guardarán en absoluto. La base de datos no tendrá ningún documento parcialmente guardado o editado.

Estructura del documento Json

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

Propiedades ACID

CouchDB contiene propiedades ACID como una de sus características.

Coherencia: cuando los datos en CouchDB se confirmaron una vez, estos datos no se modificarán ni se sobrescribirán. Por lo tanto, CouchDB asegura que el archivo de la base de datos siempre estará en un estado consistente.

Las lecturas de CouchDB utilizan un modelo de control de concurrencia de múltiples versiones (MVCC), por lo que el cliente verá una instantánea coherente de la base de datos desde el principio hasta el final de la operación de lectura.

Siempre que se actualiza un documento, CouchDB descarga los datos en el disco y el encabezado de la base de datos actualizada se escribe en dos partes consecutivas e idénticas para formar los primeros 4k del archivo, y luego se descarga sincrónicamente en el disco. Las actualizaciones parciales durante la descarga se descartarán.

Si la falla ocurrió mientras se confirmaba el encabezado, quedará una copia superviviente de los encabezados idénticos anteriores, lo que garantiza la coherencia de todos los datos previamente comprometidos. Excepto en el área del encabezado, las comprobaciones de coherencia o las reparaciones después de un accidente o un corte de energía nunca son necesarias.

Compactación

Siempre que el espacio en el archivo de la base de datos se desperdicie por encima de cierta extensión, todos los datos activos se copiarán (clonarán) en un nuevo archivo. Cuando el proceso de copia haya finalizado por completo, el archivo antiguo se descartará. Todo esto se realiza mediante proceso de compactación. La base de datos permanece en línea durante la compactación y todas las actualizaciones y lecturas pueden completarse con éxito.

Puntos de vista

Los datos en CouchDB se almacenan en documentos semiestructurados que son flexibles con estructuras implícitas individuales, pero es un modelo de documento simple para el almacenamiento y el intercambio de datos. Si queremos ver nuestros datos de muchas formas diferentes, necesitamos una forma de filtrar, organizar e informar sobre los datos que no se han descompuesto en tablas.

Para resolver este problema, CouchDB proporciona un modelo de vista. Las vistas son el método de agregar e informar sobre los documentos en una base de datos, y se crean a pedido para agregar, unir e informar sobre los documentos de la base de datos. Dado que las vistas se crean de forma dinámica y no afectan al documento subyacente, puede tener tantas representaciones de vista diferentes de los mismos datos como desee.

Historia

  • CouchDB fue escrito en lenguaje de programación Erlang.
  • Fue iniciado por Damien Katz en 2005.
  • CouchDB se convirtió en un proyecto de Apache en 2008.

La versión actual de CouchDB es 1.61.

Este capítulo le enseña cómo instalar CouchDB en sistemas Windows y Linux.

Instalación de CouchDB en Windows

Descarga CouchDB

El sitio web oficial de CouchDB es https://couchdb.apache.org. Si hace clic en el enlace dado, puede obtener la página de inicio del sitio web oficial de CouchDB como se muestra a continuación.

Si hace clic en el botón de descarga, lo llevará a una página donde se proporcionan enlaces de descarga de CouchDB en varios formatos. La siguiente instantánea ilustra lo mismo.

Elija el enlace de descarga para los sistemas Windows y seleccione uno de los espejos proporcionados para iniciar la descarga.

Instalación de CouchDB

CouchDB se descargará a su sistema en forma de archivo de configuración llamado setup-couchdb-1.6.1_R16B02.exe. Ejecute el archivo de instalación y continúe con la instalación.

Después de la instalación, abra la interfaz web incorporada de CouchDB visitando lo siguiente link: http://127.0.0.1:5984/. Si todo va bien, esto le dará una página web, que tendrá el siguiente resultado.

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

Puede interactuar con la interfaz web de CouchDB utilizando la siguiente URL:

http://127.0.0.1:5984/_utils/

Esto le muestra la página de índice de Futon, que es la interfaz web de CouchDB.

Instalación de CouchDB en sistemas Linux

Para muchos de los sistemas con sabor a Linux, proporcionan CouchDB internamente. Para instalar este CouchDB siga las instrucciones.

En Ubuntu y Debian puede usar -

sudo aptitude install couchdb

En Gentoo Linux hay un ebuild CouchDB disponible -

sudo emerge couchdb

Si su sistema Linux no tiene CouchDB, siga la siguiente sección para instalar CouchDB y sus dependencias.

Instalación de dependencias de CouchDB

A continuación se muestra la lista de dependencias que se instalarán para obtener CouchDB en su sistema.

  • Erlang OTP
  • ICU
  • OpenSSL
  • Mozilla SpiderMonkey
  • Marca GNU
  • Colección de compiladores GNU
  • libcurl
  • help2man
  • Python para documentos
  • Esfinge pitón

Para instalar estas dependencias, escriba los siguientes comandos en la terminal. Aquí estamos usando Centos 6.5 y los siguientes comandos instalarán el software requerido compatible con 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 −Para todos estos comandos, debe usar sudo. El siguiente procedimiento convierte a un usuario normal en un sudoer.

  • Inicie sesión como root en el usuario administrador

  • Abierto sudo archivo usando el siguiente comando -

visudo
  • Luego edite como se muestra a continuación para darle a su usuario existente los privilegios de sudoer -
Hadoop All=(All) All , and press esc : x to write the changes to the file.

Después de descargar todas las dependencias en su sistema, descargue CouchDB siguiendo las instrucciones dadas.

Descargando CouchDB

La base de software Apache no proporcionará el archivo .tar completo para CouchDB, por lo que debe instalarlo desde la fuente.

Cree un nuevo directorio para instalar CouchDB, busque dicho directorio creado y descargue la fuente CouchDB ejecutando los siguientes comandos:

$ 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

Esto descargará el archivo fuente CouchDB en su sistema. Ahora descomprime elapache-couchdb-1.6.1.tar.gz Como se muestra abajo.

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

Configuración de CouchDB

Para configurar CouchDB, haga lo siguiente:

  • Busque la carpeta de inicio de CouchDB.
  • Inicie sesión como superusuario.
  • Configure usando el indicador ./configure como se muestra a continuación:
$ cd apache-couchdb-1.6.1
$ su
Password:
# ./configure --with-erlang=/usr/lib64/erlang/usr/include/

Le da el siguiente resultado similar al que se muestra a continuación con una línea final que dice: 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.

Instalación de CouchDB

Ahora escriba el siguiente comando para instalar CouchDB en su sistema.

# make && sudo make install

Instala CouchDB en su sistema con una línea final que dice: You have installed Apache CouchDB, time to relax.

Iniciar CouchDB

Para iniciar CouchDB, busque la carpeta de inicio de CouchDB y use el siguiente comando:

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

Inicia CouchDB dando la siguiente salida: -

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

Verificación

Dado que CouchDB es una interfaz web, intente escribir la siguiente URL de la página de inicio en el navegador.

http://127.0.0.1:5984/

Produce la siguiente salida:

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

Utilidad cURL

La utilidad cURL es una forma de comunicarse con CouchDB.

Es una herramienta para transferir datos desde o hacia un servidor, utilizando uno de los protocolos soportados (HTTP, HTTPS, FTP, FTPS, TFTP, DICT, TELNET, LDAP o FILE). El comando está diseñado para funcionar sin interacción del usuario. cURL ofrece una gran cantidad de trucos útiles como soporte de proxy, autenticación de usuario, carga de ftp, publicación HTTP, conexiones SSL (https :), cookies, resumen de transferencia de archivos y más.

La utilidad cURL está disponible en sistemas operativos como UNIX, Linux, Mac OS X y Windows. Es una utilidad de línea de comandos mediante la cual el usuario puede acceder al protocolo HTTP directamente desde la línea de comandos. Este capítulo le enseña cómo utilizar la utilidad cURL.

Usando la utilidad cURL

Puede acceder a cualquier sitio web utilizando la utilidad cURL simplemente escribiendo cURL seguido de la dirección del sitio web como se muestra a continuación:

curl www.tutorialspoint.com/

De forma predeterminada, la utilidad cURL devuelve el código fuente de la página solicitada. Muestra este código en la ventana del terminal.

Opciones de la utilidad cURL

La utilidad cURL proporciona varias opciones con las que trabajar, y puede verlas en la ayuda de la utilidad cURL.

El siguiente código muestra una parte de la ayuda de 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/[email protected]> 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

Al comunicarse con CouchDB, se utilizaron ampliamente ciertas opciones de la utilidad cURL. A continuación se muestran breves descripciones de algunas opciones importantes de la utilidad cURL, incluidas las utilizadas por CouchDB.

-Bandera X

(HTTP) Especifica un método de solicitud personalizado que se utiliza al comunicarse con el servidor HTTP. La solicitud especificada se usa en lugar del método que de otro modo se usa (que por defecto es GET). Lea la especificación HTTP 1.1 para obtener detalles y explicaciones.

(FTP) Especifica un comando FTP personalizado para usar en lugar de LIST cuando se hacen listas de archivos con ftp.

-H

(HTTP) Se utiliza un encabezado adicional al obtener una página web. Tenga en cuenta que si agrega un encabezado personalizado que tiene el mismo nombre que uno de los internos que usaría cURL, su encabezado establecido externamente se usará en lugar del interno. Esto le permite hacer un trabajo aún más complicado de lo que normalmente haría cURL. No debe reemplazar los encabezados establecidos internamente sin saber perfectamente lo que está haciendo. Reemplazar un encabezado interno con uno sin contenido en el lado derecho de los dos puntos evitará que aparezca ese encabezado.

cURL asegura que cada encabezado que agregue / reemplace se envíe con el marcador de final de línea adecuado. Ni debe agregar eso como parte del contenido del encabezado ni agregar nuevas líneas o retornos de carro a las cosas de desorden.

Consulte también las opciones -A / - user-agent y -e / - referer.

Esta opción se puede usar varias veces para agregar / reemplazar / eliminar múltiples encabezados.

-d bandera

Con este indicador de cURL, puede enviar datos junto con la solicitud HTTP POST al servidor, como si el usuario la hubiera llenado en el formulario y enviado.

Example

Suponga que hay un sitio web y desea iniciar sesión en él o enviar algunos datos al sitio web utilizando el indicador –d de la utilidad cURL como se muestra a continuación.

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

Envía un fragmento de publicación que parece "userid=001&password=tutorialspoint". Del mismo modo, también puede enviar documentos (JSON) utilizando el indicador -d.

-o bandera

Con este indicador, cURL escribe la salida de la solicitud en un archivo.

Example

El siguiente ejemplo muestra el uso de -o bandera de la utilidad 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

Esto obtiene el código fuente de la página de inicio de tutorialspoint.com, crea un archivo llamado example.com y guarda la salida en el archivo llamado example.html.

A continuación se muestra la instantánea del example.html.

-O

Esta bandera es similar a –o, la única diferencia es que con esta bandera, se creó un nuevo archivo con el mismo nombre que la URL solicitada y se copiará en él el código fuente de la URL solicitada.

Example

El siguiente ejemplo muestra el uso de -O bandera de la utilidad 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

Crea un nuevo archivo con el nombre index.htm y guarda en él el código fuente de la página de índice de tutorialspoint.com.

Hola CouchDB

Puede acceder a la página de inicio de CouchDB enviando una solicitud GET a la instancia de CouchDB instalada. En primer lugar, asegúrese de haber instalado CouchDB en su entorno Linux y de que se esté ejecutando correctamente, y luego use la siguiente sintaxis para enviar una solicitud de obtención a la instancia de CouchDB.

curl http://127.0.0.1:5984/

Esto le brinda un documento JSON como se muestra a continuación, donde CouchDB especifica los detalles como el número de versión, el nombre del proveedor y la versión del software.

$ 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"
   }
}

Lista de todas las bases de datos

Puede obtener la lista de todas las bases de datos creadas enviando una solicitud de obtención junto con la cadena "_all_dbs string ". A continuación se muestra la sintaxis para obtener la lista de todas las bases de datos en CouchDB.

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

Le brinda la lista de todas las bases de datos en CouchDB como se muestra a continuación.

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

Crear una base de datos

Puede crear una base de datos en CouchDB usando cURL con encabezado PUT usando la siguiente sintaxis:

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

Ejemplo

Como ejemplo, utilizando la sintaxis dada anteriormente, cree una base de datos con el nombre my_database Como se muestra abajo.

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

Verificación

Verifique si la base de datos está creada, enumerando todas las bases de datos como se muestra a continuación. Aquí puede observar el nombre de la base de datos recién creada,"my_database" en la lista

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

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

Obtener información de la base de datos

Puede obtener la información sobre la base de datos mediante la solicitud de obtención junto con el nombre de la base de datos. A continuación se muestra la sintaxis para obtener la información de la base de datos.

Ejemplo

Como ejemplo, obtengamos la información de la base de datos denominada my_databaseComo se muestra abajo. Aquí puede obtener la información sobre su base de datos como respuesta.

$ 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

Futon es la interfaz de administración integrada y basada en web de CouchDB. Proporciona una interfaz gráfica simple con la que puede interactuar con CouchDB. Es una interfaz ingenua y proporciona acceso completo a todas las funciones de CouchDB. A continuación se muestra la lista de esas características:

Databases −
  • Crea bases de datos.
  • Destruye bases de datos.
Documents −
  • Crea documentos.
  • Actualiza documentos.
  • Edita documentos.
  • Elimina documentos.

Futón inicial

Asegúrese de que CouchDB se esté ejecutando y luego abra la siguiente URL en el navegador:

http://127.0.0.1:5984/_utils/

Si abre esta url, muestra la página de inicio de Futon como se muestra a continuación:

  • En el lado izquierdo de esta página puede observar la lista de todas las bases de datos actuales de CouchDB. En esta ilustración, tenemos una base de datos llamadamy_database, junto con bases de datos definidas por el sistema _replicator y _user.

  • En el lado derecho puede ver lo siguiente:

    • Tools - En esta sección puedes encontrar Configuration para configurar CouchDB, Replicator para realizar réplicas, y Status para verificar el estado de CouchDB y las modificaciones recientes realizadas en CouchDB.

    • Documentation - Esta sección contiene la documentación completa para la versión reciente de CouchDB.

    • Diagnostics - Debajo de esto puede verificar la instalación de CouchDB.

    • Recent Databases - Debajo puede encontrar los nombres de las bases de datos agregadas recientemente.

Usando encabezados de solicitud HTTP, puede comunicarse con CouchDB. A través de estas solicitudes, podemos recuperar datos de la base de datos, almacenar datos en la base de datos en forma de documentos y podemos ver y formatear los documentos almacenados en una base de datos.

Formatos de solicitud HTTP

Mientras nos comunicamos con la base de datos, usaremos diferentes formatos de solicitud como obtener, encabezar, publicar, colocar, eliminar y copiar. Para todas las operaciones en CouchDB, los datos de entrada y las estructuras de datos de salida estarán en forma de objeto JavaScript Object Notation (JSON).

A continuación, se muestran los diferentes formatos de solicitud del protocolo HTTP que se utilizan para comunicarse con CouchDB.

  • GET- Este formato se utiliza para obtener un artículo específico. Para obtener diferentes elementos, debe enviar patrones de URL específicos. En CouchDB utilizando esta solicitud GET, podemos obtener elementos estáticos, documentos y configuración de bases de datos e información estadística en forma de documentos JSON (en la mayoría de los casos).

  • HEAD - El método HEAD se utiliza para obtener el encabezado HTTP de una solicitud GET sin el cuerpo de la respuesta.

  • POST- La solicitud de publicación se utiliza para cargar datos. En CouchDB mediante la solicitud POST, puede establecer valores, cargar documentos, establecer valores de documentos y también puede iniciar ciertos comandos de administración.

  • PUT - Con la solicitud PUT, puede crear nuevos objetos, bases de datos, documentos, vistas y documentos de diseño.

  • DELETE - Con la solicitud DELETE, puede eliminar documentos, vistas y documentos de diseño.

  • COPY - Usando el método COPY, puede copiar documentos y objetos.

Encabezados de solicitud HTTP

Deben proporcionarse encabezados HTTP para obtener el formato y la codificación correctos. Mientras envía la solicitud al servidor CouchDB, puede enviar encabezados de solicitud Http junto con la solicitud. A continuación se muestran los diferentes encabezados de solicitud Http.

  • Content-type- Este encabezado se utiliza para especificar el tipo de contenido de los datos que proporcionamos al servidor junto con la solicitud. Principalmente, el tipo de contenido que enviamos junto con la solicitud será tipo MIME o JSON (aplicación / json). Se recomienda encarecidamente utilizar Content-type en una solicitud.

  • Accept- Este encabezado se usa para especificar el servidor, la lista de tipos de datos que el cliente puede entender, de modo que el servidor envíe su respuesta usando esos tipos de datos. Generalmente aquí, puede enviar la lista de tipos de datos MIME que acepta el cliente, separados por dos puntos.

    Aunque no es necesario utilizar Aceptar en las consultas de CouchDB, se recomienda encarecidamente asegurarse de que el cliente pueda procesar los datos devueltos.

Encabezados de respuesta

Estos son los encabezados de la respuesta enviada por el servidor. Estos encabezados brindan información sobre el contenido enviado por el servidor como respuesta.

  • Content-type- Este encabezado especifica el tipo MIME de los datos devueltos por el servidor. Para la mayoría de las solicitudes, el tipo MIME devuelto es text / plain.

  • Cache-control- Este encabezado sugiere al cliente sobre el tratamiento de la información enviada por el servidor. CouchDB principalmente devuelve el must-revalidate, lo que indica que la información debe revalidarse si es posible.

  • Content-length - Este encabezado devuelve la longitud del contenido enviado por el servidor, en bytes.

  • Etag - Este encabezado se utiliza para mostrar la revisión de un documento o una vista.

Códigos de estado

A continuación se muestra la forma tabular del código de estado enviado por el encabezado http y la descripción del mismo.

No Señor. Código de estado y descripción
1

200 − OK

Este estado se emitirá cuando una solicitud se complete con éxito.

2

201 − Created

Este estado se emitirá cuando se cree un documento.

3

202 − Accepted

Este estado se emitirá cuando se acepte una solicitud.

4

404 − Not Found

Este estado se emitirá cuando el servidor no pueda encontrar el contenido solicitado.

5

405 − Resource Not Allowed

Este estado se emite cuando el tipo de solicitud HTTP utilizado no es válido.

6

409 − Conflict

Este estado se emite siempre que hay algún conflicto de actualización.

7

415 − Bad Content Type

Este estado indica que el servidor no admite el tipo de contenido solicitado.

8

500 − Internal Server Error

Este estado se emite cuando los datos enviados en la solicitud no son válidos.

Rutas de URL HTTP

Hay ciertas rutas de URL con las que puede interactuar directamente con la base de datos. A continuación se muestra el formato tabular de dichas rutas de URL.

No Señor. URL y operación
1

PUT /db

Esta URL se utiliza para crear una nueva base de datos.

2

GET /db

Esta URL se utiliza para obtener información sobre la base de datos existente.

3

PUT /db/document

Esta URL se utiliza para crear un documento / actualizar un documento existente.

4

GET /db/document

Esta URL se utiliza para obtener el documento.

5

DELETE /db/document

Esta URL se utiliza para eliminar el documento especificado de la base de datos especificada.

6

GET /db/_design/design-doc

Esta URL se utiliza para obtener la definición de un documento de diseño.

7

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

Esta URL se utiliza para acceder a la vista, nombre-vista del documento de diseño de la base de datos especificada.

La base de datos es la estructura de datos más externa en CouchDB donde se almacenan sus documentos. Puede crear estas bases de datos utilizando la utilidad cURL proporcionada por CouchDB, así como Futon, la interfaz web de CouchDB.

Crear una base de datos usando la utilidad cURL

Puede crear una base de datos en CouchDB enviando una solicitud HTTP al servidor utilizando el método PUT a través de la utilidad cURL. A continuación se muestra la sintaxis para crear una base de datos:

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

Utilizando −Xpodemos especificar el método de solicitud HTTP personalizado que se utilizará. En este caso, estamos usando el método PUT. Cuando usamos la operación / método PUT, el contenido de la URL especifica el nombre del objeto que estamos creando usando la solicitud HTTP. Aquí tenemos que enviar el nombre de la base de datos usando la solicitud de colocación en la url para crear una base de datos.

Ejemplo

Usando la sintaxis dada anteriormente si desea crear una base de datos con el nombre my_database, puedes crearlo de la siguiente manera

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

Como respuesta, el servidor le devolverá un documento JSON con contenido “ok” - true indicando que la operación fue exitosa.

Verificación

Verifique si la base de datos está creada, enumerando todas las bases de datos como se muestra a continuación. Aquí puede observar el nombre de una base de datos recién creada," my_database " en la lista.

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

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

Creando una base de datos usando Futon

Para crear una base de datos, abra el http://127.0.0.1:5984/_utils/. Obtendrá una página de resumen / índice de CouchDB como se muestra a continuación.

En esta página, puede ver la lista de bases de datos en CouchDB, un botón de opción Crear base de datos en el lado izquierdo.

Ahora haga clic en el enlace crear base de datos. Puedes ver una ventana emergenteCreate New Databasespreguntando por el nombre de la base de datos para la nueva base de datos. Elija cualquier nombre siguiendo los criterios mencionados. Aquí estamos creando otra base de datos con el nombre tutorials_point. Haga clic en el botón crear como se muestra en la siguiente captura de pantalla.

Eliminar una base de datos mediante la utilidad cURL

Puede eliminar una base de datos en CouchDB enviando una solicitud al servidor usando el método DELETE a través de la utilidad cURL. A continuación se muestra la sintaxis para crear una base de datos:

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

Utilizando −Xpodemos especificar un método de solicitud personalizado de HTTP que estamos usando, mientras nos comunicamos con el servidor HTTP. En este caso, estamos usando el método DELETE. Envíe la URL al servidor especificando la base de datos que se eliminará en él.

Ejemplo

Suponga que hay una base de datos llamada my_database2 en CouchDB. Usando la sintaxis dada anteriormente si desea eliminarla, puede hacerlo de la siguiente manera:

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

Como respuesta, el servidor le devolverá un documento JSON con contenido “ok” - true indicando que la operación fue exitosa.

Verificación

Verifique si la base de datos se elimina enumerando todas las bases de datos como se muestra a continuación. Aquí puede observar el nombre de la base de datos eliminada,"my_database" no está en la lista.

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

[ "_replicator " , " _users " ]

Eliminar una base de datos usando Futon

Para eliminar una base de datos, abra el http://127.0.0.1:5984/_utils/ url donde obtendrá una página de resumen / índice de CouchDB como se muestra a continuación.

Aquí puede ver tres bases de datos creadas por usuarios. Eliminemos la base de datos llamada tutorials_point2. Para eliminar una base de datos, seleccione una de la lista de bases de datos y haga clic en ella, lo que lo llevará a la página de descripción general de la base de datos seleccionada, donde podrá ver las diversas operaciones en las bases de datos. La siguiente captura de pantalla muestra lo mismo:

Entre ellos puedes encontrar Delete Databaseopción. Al hacer clic en él, aparecerá una ventana emergente que le preguntará si está seguro. Haga clic en eliminar para eliminar la base de datos seleccionada.

Los documentos son la estructura de datos central de CouchDB. El contenido de la base de datos se almacenará en forma de Documentos en lugar de tablas. Puede crear estos documentos utilizando la utilidad cURL proporcionada por CouchDB, así como Futon. Este capítulo cubre las formas de crear un documento en una base de datos.

Cada documento en CouchDB tiene una identificación única. Puede elegir su propia identificación que debe tener la forma de una cadena. Generalmente, se usa UUID (Universal Unique IDentifier), que son números aleatorios que tienen menos posibilidades de crear un duplicado. Se prefieren para evitar colisiones.

Crear un documento usando la utilidad cURL

Puede crear un documento en CouchDB enviando una solicitud HTTP al servidor usando el método PUT a través de la utilidad cURL. A continuación se muestra la sintaxis para crear un documento.

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

Utilizando −X, podemos especificar un método de solicitud personalizado de HTTP que estamos usando, mientras nos comunicamos con el servidor HTTP. En este caso, estamos usando el método PUT. Cuando usamos el método PUT, el contenido de la url especifica el nombre del objeto que estamos creando usando la solicitud HTTP. Aquí tenemos que enviar lo siguiente:

  • El nombre del nombre de la base de datos en la que estamos creando el documento.

  • La identificación del documento.

  • Los datos del documento. −dLa opción se usa para enviar los datos / documentos a través de una solicitud HTTP. Mientras escribe un documento, simplemente ingrese sus pares Campo-Valor separados por dos puntos, entre corchetes de flores como se muestra a continuación:

{
   Name : Raju
   age : 23
   Designation : Designer
}

Ejemplo

Usando la sintaxis dada anteriormente si desea crear un documento con id 001 en una base de datos con nombre my_database, puede crearlo como se muestra a continuación.

$ 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"}

La respuesta de CouchDB a esta solicitud contiene tres campos:

  • "ok", indicando que la operación fue exitosa.

  • "id", que almacena la identificación del documento y

  • "rev",esto indica la identificación de la revisión. Cada vez que revisa (actualiza o modifica) un documento,_revEl valor será generado por CouchDB. Si desea actualizar o eliminar un documento, CouchDB espera que incluya el_revcampo de la revisión que desea cambiar. Cuando CouchDB acepta el cambio, generará un nuevo número de revisión. Este mecanismo asegura el control de concurrencia.

Verificación

Si desea ver el documento creado, puede obtenerlo utilizando el documento como se muestra a continuación.

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

Creando un documento usando Futon

Para crear un documento, abra el http://127.0.0.1:5984/_utils/ url para obtener una página de resumen / índice de CouchDB como se muestra a continuación.

Seleccione la base de datos en la que desea crear el documento. Abra la página Descripción general de la base de datos y seleccioneNew Document opción como se muestra a continuación.

Cuando selecciona el New Documentopción, CouchDB crea un nuevo documento de base de datos, asignándole una nueva identificación. Puede editar el valor de la identificación y puede asignar su propio valor en forma de cadena. En la siguiente ilustración, hemos creado un nuevo documento con una identificación 001.

En esta página, puede observar tres opciones: guardar documento, agregar campo y cargar adjunto.

Agregar campo al documento

Para agregar un campo al documento, haga clic en Add Fieldopción. Después de crear una base de datos, puede agregarle un campo usando esta opción. Al hacer clic en él, obtendrá un par de cuadros de texto, a saber,Field, value.Puede editar estos valores haciendo clic en ellos. Edite esos valores y escriba el par de campo-valor que desee. Haga clic en el botón verde para guardar estos valores.

En la siguiente ilustración, hemos creado tres campos Nombre, edad y Designación del empleado.

Guardar documento

Puede guardar los cambios realizados en el documento haciendo clic en esta opción. Después de guardar, una nueva identificación_rev se generará como se muestra a continuación.

Actualizar documentos usando cURL

Puede actualizar un documento en CouchDB enviando una solicitud HTTP al servidor usando el método PUT a través de la utilidad cURL. A continuación se muestra la sintaxis para actualizar un documento.

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

Ejemplo

Suponga que hay un documento con id 001 en la base de datos llamada my_database. Puede eliminar esto como se muestra a continuación.

En primer lugar, obtenga el ID de revisión del documento que se actualizará. Puedes encontrar el_rev del documento en el propio documento, por lo tanto, obtenga el documento como se muestra a continuación.

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

Utilice id de revisión _rev del documento para actualizar el documento. Aquí estamos actualizando la edad de 23 a 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 " }

Verificación

Para verificar el documento, obtenga el documento nuevamente usando la solicitud GET como se muestra a continuación.

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

A continuación se presentan algunos puntos importantes que se deben tener en cuenta al actualizar un documento.

  • La URL que enviamos en la solicitud que contiene el nombre de la base de datos y la identificación del documento.

  • Actualizar un documento existente es lo mismo que actualizar todo el documento. No puede agregar un campo a un documento existente. Solo puede escribir una versión completamente nueva del documento en la base de datos con el mismo ID de documento.

  • Tenemos que proporcionar el número de revisión como parte de la solicitud JSON.

  • A cambio, JSON contiene el mensaje de éxito, el ID del documento que se actualiza y la nueva información de revisión. Si desea actualizar la nueva versión del documento, debe citar este último número de revisión.

Actualización de documentos usando Futon

Para eliminar un documento, abra el http://127.0.0.1:5984/_utils/ url para obtener una página de resumen / índice de CouchDB como se muestra a continuación.

Seleccione la base de datos en la que existe el documento a actualizar y haga clic en ella. Aquí estamos actualizando un documento en la base de datos llamadotutorials_point. Obtendrá la lista de documentos en la base de datos como se muestra a continuación.

Seleccione un documento que desee actualizar y haga clic en él. Obtendrá el contenido de los documentos como se muestra a continuación.

Aquí, para actualizar la ubicación de Delhi a Hyderabad, haga clic en el cuadro de texto, edite el campo y haga clic en el botón verde para guardar los cambios como se muestra a continuación.

Eliminar un documento con la utilidad cURL

Puede eliminar un documento en CouchDB enviando una solicitud HTTP al servidor utilizando el método DELETE a través de la utilidad cURL. A continuación se muestra la sintaxis para eliminar un documento.

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

Utilizando −X,podemos especificar un método de solicitud personalizado de HTTP que estamos usando, mientras nos comunicamos con el servidor HTTP. En este caso, estamos usando el método Delete. Eliminar una base de datos /database_name/database_id/no es suficiente. Debe pasar la identificación de revisión reciente a través de la URL. Mencionar atributos de cualquier estructura de datos."?" se utiliza.

Ejemplo

Suponga que hay un documento en la base de datos llamado my_databasecon ID de documento 001. Para eliminar este documento, debe obtener la ID de rev. del documento. Obtenga los datos del documento como se muestra a continuación.

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

Ahora especifique la identificación de revisión del documento que se eliminará, la identificación del documento y el nombre de la base de datos a la que pertenece el documento, como se muestra a continuación:

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

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

Verificación

Para verificar si el documento se ha eliminado, intente recuperar el documento utilizando el GETmétodo. Dado que está recuperando un documento eliminado, esto le dará un mensaje de error como se muestra a continuación:

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

Eliminar un documento usando Futon

Primero que nada, verifique los documentos en la base de datos. A continuación se muestra la instantánea de la base de datos denominadatutorials_point.

Aquí puede observar, la base de datos consta de tres documentos. Para eliminar cualquiera de los documentos, diga003, haz lo siguiente -

  • Haga clic en el documento, obtendrá una página que muestra el contenido del documento seleccionado en forma de pares de campo-valor.

  • Esta página también contiene cuatro opciones a saber Save Document, Add Field, Upload Attachment, Delete Document.

  • Haga clic en Delete Document opción.

  • Obtendrá un cuadro de diálogo que dice "Are you sure you want to delete this document?" Haga clic en eliminar para eliminar el documento.

Adjuntar archivos usando cURL

Puede adjuntar archivos a CouchDB como un correo electrónico. El archivo contiene metadatos como el nombre e incluye su tipo MIME y la cantidad de bytes que contiene el adjunto. Para adjuntar archivos a un documento, debe enviar una solicitud PUT al servidor. A continuación se muestra la sintaxis para adjuntar archivos al documento:

$ 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"

La solicitud tiene varias opciones que se explican a continuación.

  • [email protected] - Esta opción le dice a cURL que lea el contenido de un archivo en el cuerpo de la solicitud HTTP.

  • -H - Esta opción se utiliza para mencionar el tipo de contenido del archivo que vamos a subir.

Ejemplo

Adjuntemos un archivo llamado boy.jpg, al documento con id 001, en la base de datos llamada my_databaseenviando una solicitud PUT a CouchDB. Antes de eso, debes obtener los datos del documento con id001 para obtener su corriente rev id como se muestra a continuación.

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

Ahora usando el _rev valor, envíe la solicitud PUT al servidor CouchDB como se muestra a continuación.

$ 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"

Verificación

Para verificar si el archivo adjunto está cargado, obtenga el contenido del documento como se muestra a continuación

$ 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
      }
   }
}

Adjuntar archivos usando Futon

Subir archivo adjunto

Con esta opción, puede cargar un nuevo archivo adjunto, como un archivo, imagen o documento, a la base de datos. Para hacerlo, haga clic en elUpload Attachmentbotón. Aparecerá un cuadro de diálogo donde puede elegir el archivo que desea cargar. Seleccione el archivo y haga clic en elUpload botón.

El archivo cargado se mostrará en el campo _attachments. Posteriormente podrá ver el archivo haciendo clic en él.