NoSql – CouchDB

image_pdf

Introducción

CouchDB es una BBDD NoSql (si tienes dudas sobre NoSql  es recomendable visitar el siguiente post Bases de Datos NoSql) de documentos en formato JSON. Dichos documentos se referencian por una clave única _id a los cuales se puede acceder por HTTP y gestionar mediante javascript. Esta programado Erlang, un lenguaje de programación muy robusto, fiable y multiplataforma, que se ejecuta sobre una máquina virtual de alto rendimiento.

Claves y revisiones

Ambos campos tienen que ser únicos, no pueden estar duplicados entre otros documentos en la misma base de datos.

  • _id (clave): es el identificador único e inequivoco del documento (DocID)
  • _rev(revisión): es un identificador del documento para tratar su historico. Es decir, de cada documento se guardan revisiones para poder acceder a anteriores versiones de dicho documento.

Revisiones

Cada vez que modificamos un documento en CouchDB se crea una nueva revisión de este. En principo esto nos permite acceder a anteriores versiones del documento, pero puede llegar a ser un lastre. Por esa razón podemos compactar el documento, al hacerlo tansolo quedará disponible la última revisión.

En CouchDB podemos hacer consultas directas por identificador y por revisión, podemos obtener todas las revisiones activas de un documento (si existieran) y podríamos consultar información sobre las mismas.

A partir de la versión v 0.11 se puede especificar el número de revisiones:

curl -X PUT -d "200" http://localhost:5984/test/_revs_limit

Para compactar la base de datos y así eliminar las revisiones antiguas:

curl -X POST http://localhost:5984/nombre_base_de_datos/_compact

Vistas

CouchDB permite la creación de vistas, que son el mecanismo que permite la combinación de documentos para retornar valores de varios documentos, es decir, CouchDB permite la realización de las operaciones JOIN típicas de SQL.

Replicación

La replicación entrebases de datos nos permite duplicar datos con la seguridad de no perderlos. Hay que tener en cuenta que al guardar revisiones de los documentos siempre dispondremos de todas las revisiones. Es decir, pongamos que en tenemos una base de datos bbdd1 y otra bbdd2 y cambiamos un documento común doc1, después de la replicación tendremos las revisiones de los documentos anteriores y las revisiones de los nuevos documentos en las dos bases de datos. Es nos asegura consistente persistencia de datos.

Para habilitar la replicación activa entre dos bases de datos (cada vez que hay un cambio automaticamente las bases de datos se replican) tansolo debemos ejecutar el siguiente comando:

curl -X POST http://localhost:5984/_replicate -d '{"source":"db", "target":"db-replica", "continuous":true}'

Resolución de conflictos

En CouchDB la detección y resolución de conflictos esta automatizada. En el caso de que un documento se intente actualizar en distintos nodos se guardaran las distintas versiones  y poniendo como la versión más reciente la ganadora. Para solventar conflictos, CouchDB permite gestionar las versiones, pudiendo borrar veriones erroneas o reordenarlas por fecha.


Instalación

Tan simple como ejecutar en la consola:

sudo apt-get install couchdb

Luego podemos comprobar en un navegador si CouchDB ha arrancado correctamentte  accediendo a la  siguiente

url http://localhost:5984/

, en caso de que todo funcione correctamente  recibiremos una respuesta web similar a esta dependiendo de la versión de CouchDB:

{"couchdb":"Welcome","version":"0.10.0"}

Comandos básicos mediante curl

En primera instancia deberemos instalar curl:

 sudo apt-get install curl

Para visualizar todas las bases de datos:

curl http://localhost:5984/_all_dbs

Crear una base de datos:

curl -X PUT http://localhost:5984/test

Crear un nuevo documento:

curl -X PUT http://localhost:5984/test/8765rftded6c29495e54cc05947f18c8af -d '{"SO":"Linux","Distro":"Debian"}'

Borrar la base de datos:

curl -X DELETE http://localhost:5984/test

Futon

Futon es una aplicativo web muy intuitivo y fácil de usar, por lo que no explicaré como realizar las operaciones antes descritas con curl , para gestionar bases de datos y sus documentos en CouchDB.

Para acceder a él tansolo debemos acceder mediante navegador web  a la siguiente url:

http://localhost:5984/_utils/

Observaciones

Llegados a este punto ya tenemos un concepto básico sobre las bases de datos NoSql y la utilización de un gestor, CouchDB. El próximo post sobre este tema estará en el apartado de programación, donde se expondrá un ejemplo de acceso a CouchDB mediante PHP.

Fuentes

Ruben

Un comentario en “NoSql – CouchDB
  1. Bubbi dice:

    At last! Soemone who understands! Thanks for posting!

1 Pings/Trackbacks para "NoSql – CouchDB"

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.