C'est quoi couchDB

CouchDB est un serveur de base de données orienté Document et accessible via une API REST HTTP/JSON.
Sans schéma, sans tables, ce qui offre une flexibilité sans limite de vos documents.
Comment , simplement car couchDB est une base qui n'est pas relationnel , il n'y a donc pas de structure qui fige les documents .
Comment l'utiliser
CouchDB utilise le protocole HTTP , avec des entêtes en GET , PUT , POST , DELETE , COPY.
Avec une possibilité d'activer l'authentification HTTP pour restreindre les accès selon vos souhaits
Pour vous simplifier la vie , j'ai développé une librairie qui réuni les méthodes indispensables pour utiliser une base couchDB , cette librairie vous permettra les action suivantes :
* Création / suppression de bases * insertions de documents * suppressions .. * copie * déplacements * réplication * lecture * etc ..
Pour la documentation complète , voir le wiki .
oscar_couchDB
Nous allons quand même ici expliquer l'utilisation basic d'une base couchDB avec cette librairie
initialisation
Comme le précise la doc , il nous suffit d'inclure simplement la lib :
require_once 'Oscar_couchDB.php';
Nous allons ensuite récupérer une instance de la classe :
$Ocdb = Oscar_couchDB::getInstance();
Commençons par configurer l'accès au serveur principal , qui a comme adresse ip 10.0.0.220:
$Ocdb->set_host('10.0.0.220');
$Ocdb->set_port(5999);
Nous voilà fin prêt à attaquer ....
Commençons par créer notre table
if( ! $Ocdb->add("mabase") ){
echo "Échec à la création de la base de données";
}
Une fois notre base crée , nous allons pouvoir la remplir avec des documents , pour créer un document , il faut de nouveau faire appel à la méthode add().
$doc = array("NOM"=>"Document A","TYPE"=>"texte");
$retour = $Ocdb->add("mabase","0001",$doc);
if( $retour == false ){
echo "Erreur à la création du document , erreur : $retour";
}else{
echo "Document crée avec succès , <br>ID: ".$retour['id']."<br>REVISION: ".$retour['rev'].";
}
Comme vous l'aurez remarqué un document possède à sa création une révision , cela permet par exemple lors d'une modification non volontaire , de revenir en arrière .
Cependant , cela reste limité en temps , car si l'on compacte la base , seule la dernière révision est disponible .
Pour connaitre les révisions d'un document , vous pouvez faire appel à cette méthode :
$Ocdb->all_revs("mabase", "0001");
0001 étant l'id du document qui se doit d'être unique .
Et pour compacter la base pour un gain de place :
$Ocdb->compact_database('mabase');
Maintenant , comment récupérer notre enregistrement ?
Nous allons simplement utiliser la méthode get()
$mondocument = $Ocdb->get("mabase","0001");
Vous voilà avec un tableau $mondocument qui contient toutes les données que vous y avez entrées ainsi que son id et sa révision .
Pour lire une révision spécifique , il est possible de préciser celle-ci comme-ceci :
$mondocument = $Ocdb->get("mabase","0001",$revision);
Dans l'ordre des choses , nous allons supprimer ce document , voici la méthode :
$database = 'mabase'; $iddocument = '0001'; $revdoc = '1-872c3e4693b3e608148fb85b3f64df74'; $Ocdb->delete($database, $iddocument, $revdoc);
Ici la révision du document est obligatoire .
Voilà pour ces quelques exemples , il y a encore de nombreuses autres méthodes aussi simples les unes que les autres à utiliser , je vous laisse les découvrir via la documentation ici
replication
Il y a un point important , car c'est un avantage non négligeable de couchDB , la replication , qui est d'une simplicité étonnante .
Dans la librairie , il y a donc une méthode qui vous permet de répliquer vos données , de façon manuelle , mais aussi automatique , voici sa mise en place .
Commençons par paramétrer les coordonées des serveur A et B
$Ocdb->set_replication('10.0.0.220','10.0.0.221','5984','mabase','mabase_Repli');
Nous avons donc ici spécifié l'adresse du serveur source , suivi de celle du serveur cible , le port du serveur cible , la base de données source , et pour finir la base de données cible , qui n'est pas obligatoirement du même nom.
De plus si les base source/cible n'héxiste(s) pas , la librairie tentera de la/les créer .
Le réplication paramétrée , activons l'automatisme pour être certains que chaque action faite sur le serveur source soit immédiatement faite sur le serveur cible.
$Ocdb->auto_replique(TRUE);
Et voilà , plutôt simple non ?
Si le serveur cible n'est pas disponible , ce n'est pas grave , la réplication se faisant sur les logs binaire , il rattrapera automatiquement son retard lorsqu'il sera de nouveau disponible .
De plus , si le serveur source , tombe , vous pouvez attaquer directement sa réplication , en changeant les paramètres via set_replication , et lorsque le serveur sera de nouveau disponible , il se mettra automatiquement à jour , toujours grâce au logs binaires .
utile
Nous avons vue ici l'utilisation de quelques méthodes de la librairie Oscar_couchDB , mais il faut savoir que vous pouvez creer des vues en javascript qui vous permettent de faire des requêtes , filtres ect sur les documents en base , je vous donne un lien complet pour apprivoiser celà .
unixGarden
La librairie est disponible à plusieurs endroits :
* phpClasses * dans les libs de mon fw fw-oscar.fr

