Mostofreddy

Top five: Razones para elegir CouchDB

Comentarios 0 Tags , , Categorias Base de Datos

{lang: 'es-419'}

En el sitio nosql, publicaron este top 5 de las razones de porque usar CouchDB

  • CouchDB Stores Data in Documents – CouchDB manages data in the form of JSON documents.
  • Data is Unique and Never Overwritten - when a piece of data is written to a CouchDB document, it will have completely unique identification and will never be overwritten.
  • CouchDB Makes Replication Easy and Efficient – CouchDB databases can replicate from one to another, in a sort of “Master-Master” configuration.  This way, any CouchDB database can accept data as well as replicate that data to any other CouchDB database quickly.
  • Interact With CouchDB Over HTTP Using RESTful – the protocol of CouchDB is RESTful over HTTP.
  • CouchDB Has Own Webserver – Anyone who has messed around with an LAMP system knows that Apache can hog a ton of memory.  Since CouchDB uses has it’s own webserver, you can save a lot of memory by avoiding Apache all together.

Presentaciones sobre CouchDB

Comentarios 0 Tags , Categorias Base de Datos

{lang: 'es-419'}



Tutorial CouchDB: creando bases de datos

Comentarios 2 Tags , Categorias Base de Datos

{lang: 'es-419'}

Siguiendo con los post sobre CouchDB (CouchDB – base de datos documental, Comenzando con CouchDB, CouchDB (I) – Instalación) ahora hablare sobre como usar couchdb.

En este primer post veremos como crear una base de datos, como acceder a ella, ingresarle datos y otras cosas mas. Es indispensable que tengan algún conocimiento de cUrl, REST y JSON ya que se utiliza estas herramientas para comunicarse con la base de datos couchdb

Crear una base de datos

Para crear una base de datos utilizamos el método PUT


curl -X PUT http://127.0.0.1:5984/users

//si esta todo ok devuelve
{"ok":true}

//si hubo error
{"error":"file_exists","reason":"The database could not be created, the file already exists."}

Si no leyeron los post anteriores, recuerden que CouchDB al ser una base de datos documental no posee una estructura de datos fija y estática como si las tienen las bases de datos relacionales, por lo cual los documentos que se creen dentro de la base de datos “usuarios” podrian tener distinto formato como veremos a continuación

Borrar una base de datos

<pre>curl -X DELETE http://127.0.0.1:5984/perms

<pre>//si esta todo ok devuelve
{"ok":true}

//si hubo error
{"error":"not_found","reason":"missing"}</pre>
</pre>

Agregar documentos a una base de datos


curl -X PUT http://127.0.0.1:5984/users/mostofreddy -d '{"firstName":"Federico","lastName":"Lozada Mosto","nick":"mostofreddy"}'

curl -X PUT http://127.0.0.1:5984/users/homero -d  '{"firstName":"Homero","lastName":"Simpson","age":"36","city":"Sprinfield"}'

Como ven, son dos documentos que corresponden a la misma base pero tienen estructura distinta.

Devolver todas las bases de datos


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

Obtener los datos básicos


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

//nos devuelve en formato JSON

{
"db_name":"user",
"doc_count":0,
"doc_del_count":0,
"update_seq":0,
"purge_seq":0,
"compact_running":false,
"disk_size":79,
"instance_start_time":"1273033142185846",
"disk_format_version":5
}

Copiar de un documento a otro


curl -X COPY http://127.0.0.1:5984/users/mostofreddy -H "Destination: flozadamosto"

Obtener todos los documentos de una base de datos


curl -X GET http://127.0.0.1:5984/users/_all_docs

//nos devuelve en formato JSON

{
    "total_rows":2,
    "offset":0,
    "rows":[
        {"id":"mostofreddy","key":"mostofreddy","value":{"rev":"1-967a00dff5e02add41819138abb3284d"}},
        {"id":"homero","key":"homero","value":{"rev":"1-32273fce7b3c666c9a28ee3d5731d963"}}
        ]
}

Obtener todos lso documentos  pero en ordenados por id de documento en forma descendente


curl -X GET http://127.0.0.1:5984/users/_all_docs?descending=true

Obtener todos lso documentos  limitando la cantidad devuelta


curl -X GET http://127.0.0.1:5984/users/_all_docs?descending=true\&limit=1

Obtener todos los documentos pero recuperando tambien toda la información de los documentos


curl -X GET http://127.0.0.1:5984/contacts/_all_docs?include_docs=true

{
    "total_rows":4,
    "offset":0,
    "rows":[
        {"id":"mostofreddy","key":"mostofreddy","value":{"rev":"1-32273fce7b3c666c9a28ee3d5731d963"},"doc":{"_id":"mostofreddy","_rev":"1-32273fce7b3c666c9a28ee3d5731d963","firstName":"Federico","lastName":"Lozada Mosto","nick":"mostofreddy"}},
        {"id":"homero","key":"homero","value":{"rev":"1-32273fce7b3c666c9a28ee3d5731d963"},"doc":{"_id":"homero","_rev":"1-32273fce7b3c666c9a28ee3d5731d963","firstName":"Homero","lastName":"Simpsons","age":"36","city":"Sprinfield"}}
        ]
}