Article complet: Vous connaissez CouchDB ?

09/07/2009

Permalink 17:58:30, Catégories: Dev web généraliste, 562 mots   French (FR) , julien pauli

Vous connaissez CouchDB ?

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 ?

  • Un serveur de base de données orienté document (relationnel dans un sens, mais pas objet), accessible via une API JSON RESTful
  • Distribué, robuste et à réplication incrémentale. Détection de conflit gérée
  • Requêtable et indexable, langage de requête Javascript

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 !

Social Bookmarking:

                                     

Commentaires:

Connectez-vous pour vous abonner à cet article:

Flux de commentaires pour cet article : Atom 1.0  RSS 2.0
Commentaire de: Yoteco [Membre]
Salut,

CouchDB a en effet l'air très intéressant. Si je ne me trompe pas, il me semble que l'équipe de développement d'eZ Publish est entrain de sérieusement s'intéresser à ce type de base de données.

Je serais tout de même curieux de voir comment cette base de données tient la charger :D
Permalien 09/07/2009 @ 20:20
Commentaire de: Laurentj2 [Membre]
>un service orienté ressource qui brille par l'absence d'authentification et d'identification des clients

Mais pas du tout mon cher julien ! HTTP possède un système d'authentification. Et donc peut très bien être utilisé en REST/RESTfull !
Permalien 10/07/2009 @ 10:39
Commentaire de: julien pauli [Membre] · http://www.anaska.com
Oui je sais bien qu'il existe des sytèmes d'authentification sous HTTP , mais les services RESTful ne requièrent aucune authentification et aucune manière d'identifier leurs clients.
Un service RESTful, dans les règles de l'art, doit toujours servir la même réponse à une requête donnée. Si la réponse change en fonction du client qui pose effectue la requête, alors ça n'est plus indépendant du client et plus RESTful.
C'est ce que je voulais dire, peut-être mal exprimé, certes.
Permalien 10/07/2009 @ 14:42
Commentaire de: moosh [Membre] · http://moosh.et.son.brol.be/blog/
un tuto qui m'a bien expliqué couchDB : http://www.unixgarden.com/index.php/web/couchdb-la-base-de-donnees-qui-change-tout
Permalien 09/02/2010 @ 23:02

Vous devez être identifié pour poster un commentaire.

Liste des blogs

Julien Pauli DevPHP blog

Developpement web PHP

Rechercher

<  Mai 2012  >
Lun Mar Mer Jeu Ven Sam Dim
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web