CouchDB: bases de dades NoSQL
Reading time: 4 – 6 minutes
Abans de parlar de CouchDB, si no heu sentit a parlar mai de les bases de dades NoSQL, és important que sapigueu que no són bases de dades ralacionals, ni orientades a objectes. Sinó que es basen en un paradigme diferet, són orientades a documents.
Doncs bé, CouchDB és un projecte de la fundació Apache i és OpenSource, és clar. Algunes de les seves característiques són:
- RESTful API
- schema-less document store (document=JSON format w/binary support like attachments)
- multi-version-concurrency-control model
- user-defined query structured as map/reduce (javascript, python, C, etc)
- incremental index update mechanism
- multi-master replication
- easily distributable
- update validation
- programat amb erlang
- web based basic admin features
- binding for python, C, .NET, PHP, Ruby, etc.
- pros: retrieve information, cons: insert data
Actualment estic estudiant si usar aquest producte en un dels projectes que estic treballant. De fet, encara no tinc clar si aplica al 100% a les necessitats que tinc en el projecte però a priori s’ajusta prou bé. Perquè no penseu que això és una raresa que no coneix ningú informar-vos que Ubuntu One usa couchDB com a backend, pels que no conegueu el servei jo el vaig descobrir gràcies a l’article d’Ars Technica: Code tutorial: make your application sync with Ubuntu One.
Inicialment volia fer un manual de les funcions bàsiques de CouchDB però degut al munt de documentació que he trobat he pensat que era una tonteria re-inventar la roda, així doncs a continuació faré una ressenya de les fonts d’informació que he usat per coneixer aquesta base de dades:
- CouchDB Implementation: descripció molt detallada i no massa extensa de com funciona per dintre aquest sistema de BBDD especialment dedicada al Pau. Destaco aquest paràgraf:
- Serie d’articles del blog RVZ: una pequeña introducción I, II, III y IV.
- Llibre: CouchDB: The Definitive Guide, consultable online en format HTML.
- CouchDB.es, sobre CouchDB y NoSQL.
CouchDB is a “document-oriented” database where document is a JSON string (with an optional binary attachment). The underlying structure is composed of a “storage” as well as multiple “view indexes”. The “storage” is used to store the documents and the “view indexes” is used for query processing.
Enllaços orientats a les consultes:
- Secció ‘Finding Your Data With Views‘ del llibre: CouchDB: The Definitive Guide
- Wiki del projecte,
- Simulador de consultes via map/reduce per CouchDB: Interactive CouchDB
- via Damien Katz blog (creador de CouchDB)
Abans d’acabar comentar que personalmentel que més m’ha costat d’entendre de tot plegat és el tema map/reduce especialment la part de reduce, ja que no acabava de veure al 100% com funcionava i quina finalitat tenia. Potser l’error més gran que he comès és intentar buscar un paral·lelísme directe entre SQL i NoSQL. Sota el meu punt de vista no són tecnologies substitutories, més aviat complementaries ja que cada una s’ajusta a un tipus de solucions diferents. Per tant, abans que res recomano que confronteu la vostre problemàtica amb cada un dels paradigmes: orientat a objectes, bbdd relacionals i orientat a documents.