Skip to content

CouchDB – Ejemplo de implementación

by Cristian Requena on mayo 25th, 2011

En este ejemplo se ha implementado un símil básico de Twitter para realizar las operaciones típicas de una base de datos. Gracias a la estructura DAO con la que se ha codificado se podrá reaprovechar para probar otras bases de datos, manteniendo una parte en común.

El diagrama de clases es el siguiente:

Análisis PFC

 

Como única inicialización de la base de datos, ha sido necesario crear dos documentos de diseño de CouchDB, que permiten la obtención de todos los tweets de un usuario y todos los tweets de un tag. Su código es el siguiente:

{
 "_id": "_design/tweets",
 "_rev": "1-c8aaf3665c01a82e0e31701f50424c4c",
 "language": "javascript",
 "views": {
 "tweetsByUser": {
 "map": "function(tweet) { if (tweet.tipo == 'tweet') { emit(tweet.username, tweet); } };"
 },
 "tweetsByTag": {
 "map": "function(tweet) { if (tweet.tipo == 'tweet') { for (var tag in tweet.tags) { emit(tweet.tags[tag], tweet); } } };"
 }
 }
}

Su funcionamiento, como se observa, es muy simple. La vista “tweetsByUser” retorna un conjunto clave/valor donde la clave es el nombre de usuario y el valor es el tweet, mientras que la vista “tweetsByTag” realiza un pequeño bucle por todos los tags que pueda tener un tweet, para luego retornarse con cada uno de ellos como clave.

Estas vistas son filtrables mediante la clave (por ello se retorna como tal el valor que se desea condicionar) y además, como que CouchDB las indexa, proveen de un acceso de consulta muy rápido.

El resto del código del ejemplo es bastante básico, ya que se basa en 50 threads que machacan la base de datos con creaciones, lecturas, modificaciones y borrados de documentos en paralelo. Asimismo se muestra el tiempo empleado en cada operación, que raramente supera los 20 ms.

El ejemplo está disponible en este enlace .

 

Para finalizar veremos un conjunto de capturas de pantalla con el proceso en ejecución, donde se observa el comportamiento de la base de datos en todo momento:

Estado inicial

Creación y modificación de tweets y usuarios

Base de datos con 14000+ documentos

Borrado de usuarios y finalización

2 Comments
  1. muchas gracias por el ejemplo

  2. Renzo permalink

    hola buen ejemplo recien me esto iniciando en la base de dato nosql con php y estoy viendo si usar couchdb o mongodb seria bueno si ponen mas ejemplos como este Gracias

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS