CouchDB est un projet de l'ASF (Apache Software Foundation).
Il s'agit d'une base de données avec une interface RestFul - JSON. Comme j'adore tout ce qui exploite pleinement HTTP, je me penche depuis quelques temps sur couchDB, notamment pour la participation à la création d'un frontEnd PHP pour Zend Framework : Zend_Couch (nom temporaire)
Qu'est ce couchDB ?
Comment ça s'utilise ? De manière RESTFul, orienté document. Voyons ca.
Déja l'installation, on peut difficilement faire plus simple si on passe par un gestionnaire de paquets comme aptitude de Ubuntu :
julien@julien:~$ aptitude install couchdb
Le service est démarré, il écoute via HTTP sur le port 5984 par défaut.
Attention, la magie HTTP va commencer.
Créons une base de données :
julien@julien:~$ curl -X PUT http://localhost:5984/membres/ {"ok":true}
La base de données existe-t-elle réellement ? On va vérifier :
julien@julien:~$ curl -X GET http://localhost:5984/membres/ {"db_name":"membres","doc_count":0,"doc_del_count":0,"update_seq":0,"compact_running":false,"disk_size":4096}
Bien, on va commencer par créer un jeu de données. Créons un utilisateur :
julien@julien:~$ curl -X POST http://localhost:5984/membres/ -H "Content-Type: application/json" -d "{\"name\":\"julien\",\"age\":\"26\",\"address\":\"Paris\"}" {"ok":true,"id":"f9177159ee3d82d969f5337ffad9d406","rev":"362692096"}
Sympa ! surtout que couchDB regorge de petites astuces, je ne vais pas toutes les citer, mais par exemple il a attribué un numéro automatique à ce nouveau membre, dans une colonne "privée" appelée "_id". Il sait aussi gérer les révisions à la manière d'un système de versionning type SVN ou Git.
Aller, on récupère ce membre ?
julien@julien:~$ curl -X GET http://localhost:5984/membres/f9177159ee3d82d969f5337ffad9d406 {"_id":"f9177159ee3d82d969f5337ffad9d406","_rev":"362692096","name":"julien","age":"26","address":"Paris"}
Yeah ! Détruisons la base :
julien@julien:~$ curl -v -X DELETE http://localhost:5984/membres/ {"ok":true}
Au passage, je peux avoir un aperçu de mon serveur en HTML si je le souhaite, via l'URL http://localhosy:5984/_utils/ et il existe encore tout un tas d'astuces de ce type réunies dans la doc officielle.
Pourquoi utiliser couchDB, dans quels cas ? Et bien un de ces auteurs vous répondra sans doute mieux que moi, mais pour des architectures plutôt petites, souvent interrogées, devant être scalables et partageables, c'est parfait !
Il existe d'ailleurs un livre sur le sujet.
Page d'intro à CouchDB
Wiki et documentation opérationnelle
Implémentation en PHP
Note : pour tous ceux qui se demandent encore ce que c'est que REST et un service RESTful, vous avez là une réponse très précise : un service orienté ressource qui brille par l'absence d'authentification et d'identification des clients, et via lequel HTTP et notamment les verbes HTTP sont très largement exploités à leur pleine puissance (avec tous les en-têtes qui vont bien en accord avec HTTP). En général, la représentation des ressources se fait via XML, mais JSON peut aussi tout à fait être adapté, ou encore HTML. J'adore décidément ces architectures !
Vous devez être identifié pour poster un commentaire.
Copyright © 2000-2012 - www.developpez.com