Apache CouchDB
Apache CouchDB has started. Time to relax.
Maes Benjamin Brimeux Benoit
Sommaire
• CouchDB qu’est ce que c’est ?
• Le modèle de cohérence
• DEMO
CouchDB qu’est ce que c’est ?
• Base de données NoSQL
• Permet le stockage de documents
• Architecture Distribuée
• Réplication des données
• Multi-plateformes
CouchDB qu’est ce que c’est ?
Le stockage de documents
• Seulement des ajouts de fichiers
• Stocker sous le format JSON
• Accès par l’API HTTP RESTful
• Visualisation grâce à Javascript
– et des fonctions MAP REDUCE
CouchDB qu’est ce que c’est ?
Le système de persistance
• Le système de commit garantie a 100% toutes les transactions
• Les données déjà présentes ne seront jamais écrasées (append-only)
• Aucun processus d’arrêt
• Aucune commande de maintenance nécessaire (un système sans problèmes)
CouchDB qu’est ce que c’est ?
Le système de persistance
• Les documents sont sérialisés
• L’accès en lecture n’attend pas la fin de l’accès en écriture
– Même sur le même fichier
• Multiversion concurrency control (MVCC)
– système de contrôle des accès concurrents
CouchDB qu’est ce que c’est ?
Le système de persistance
• 2 étapes de commit :
– Etape 1 : Les documents et index associées mis à jour sont « flush » sur le disque (append to file)
– Etape 2 : La mise à jour de l’en-tête de la base de données est écrite dans 2 « chunks » identique et consécutif pour constituer les 4
premier Ko du fichier
• Gestion des erreurs
– Cas 1 : les « flushs » partiel sont simplement ignorés – Cas 2 : La copie survivante est utilisée
CouchDB qu’est ce que c’est ?
Le système de persistance
CouchDB qu’est ce que c’est ?
Le système de replication
• Système distribué basé sur le Peer-to-Peer
• Réplications partielles autorisées
• Les Peers accèdent et mettent à jour la même donnée tant qu’ils sont déconnectés
CouchDB qu’est ce que c’est ?
La résolutions des conflits de réplications
• Les documents en conflits sont répliqués
• Après réplication un document est marqué comme le
« gagnant » par un algorithme déterministe
– Le même choix sera fait par tout les peers
• Les autres révisions sont marquées « _deleted » et seront supprimées pendant la compaction des
données
• Il existe un historique des révisions et des conflits
Le modèle de Cohérence
Le théorème CAP
• Cohérence (ou consistance des données) (Consistency en anglais): tous les nœuds du système voient exactement les mêmes données au même moment ;
• Disponibilité (Availability en anglais) : garantie que toutes les requêtes reçoivent une réponse;
• Tolérance au partitionnement (Partition Tolerance en anglais) : aucune panne moins importante qu'une coupure totale du réseau ne doit empêcher le système de répondre correctement (ou encore : en cas de morcellement en sous-réseaux, chacun doit pouvoir fonctionner de manière autonome)
Le modèle de Cohérence
Le théorème CAP
Le modèle de Cohérence
Cohérence Locale
- Absence de verrouillage (MVCC)
Le modèle de Cohérence
Validation
• CouchDB permet la création de formulaire de validation pour les documents
• Des Fonctions Javascript (du même genre que MapReduce ) sont utilisées pour la validation
Demo CRUD
Réferences
• CouchDB the Definitive guide
– http://guide.couchdb.org/editions/1/fr/
• CouchDB Documentation
– http://docs.couchdb.org/en/2.0.0/