Apache CouchDB et GeoCouch :
Concepts, API et exemples

UE « Systèmes d'Information Tactiques »
Master 2 Génie Logiciel
ISTIC, Université de Rennes 1
Année 2014-2015, second semestre

Emmanuel Caruyer
CR CNRS
Emmanuel.Caruyer@irisa.fr

Logo Université de Rennes 1

Plan du cours

Apache CouchDB

GeoCouch : Extension SIG à CouchDB

Apache CouchDB

Apache CouchDB

Logo de Apache CouchDB.

Un SGBD innovant

Un système ouvert et pensé Web

Optimisé pour une disponibilité maximale

Représentation des données - I

Notion de document auto-suffisant

Documents représentés sous forme JSON

{
   "_id": "173fce259fccf5959b44c44811002e5c",
   "_rev": "2-c2fbcf4c6dc9d5af03fbb5f0a32c6cfd",
   "type": "building",
   "location": [
       48.115454,
       -1.638554
   ],
   "name": "12A"
}
    

Représentation des données - II

Une gestion des documents sans schéma

{
   "_id": "173fce259fccf5959b44c44811002e5c",
   "_rev": "2-c2fbcf4c6dc9d5af03fbb5f0a32c6cfd",
   "type": "batiment",
   "location": [
       48.115454,
       -1.638554
   ],
   "name": "12A"
}
    

Représentation des données - II

Une gestion des documents sans schéma

{
   "_id": "173fce259fccf5959b44c44811002e5c",
   "_rev": "2-c2fbcf4c6dc9d5af03fbb5f0a32c6cfd",
   "type": "batiment",
   "location": [
       48.115454,
       -1.638554
   ],
   "name": "12A",
   "instituts": [
       "ISTIC", 
       "IRISA",
       "Inria Rennes - Bretagne Atlantique"
   ]
}
    

API HTTP

Pour toutes les opérations « CRUD »

Réponses et messages envoyés au format JSON

  > GET http://127.0.0.1:5984/_all_dbs
  < ["_users", "univ-rennes1"]

Interface d'administration Futon

Capture d'écran de l'interface d'administration Futon.

http://127.0.0.1:5984/_utils/

Les vues : Utilisation de Map/Reduce

Extraction des données avec la fonction Map

Aggrégation des résultats avec la fonction Reduce

Les vues - Exemple

{
  ...,
  "batiment": "12A",
  "etage": 1,
  "salle": 157,
  "postes": 21
}

Lister des salles par nombre de postes croissant

function(doc) {
  if(doc.salle && doc.postes) {
    emit(doc.postes, doc.salle);
  }
}

Les vues - Exemple

{
  ...,
  "batiment": "12A",
  "etage": 1,
  "salle": 157,
  "postes": 21
}

Lister des salles par nombre de postes croissant regroupées par batiment

function(doc) {
  if(doc.batiment && doc.salle && doc.postes) {
    emit([doc.batiment, doc.postes], doc.salle);
  }
}

Les vues - Création et interrogation

Les vues sont crées dans des design documents

Interrogation des vues

Pièces jointes

Un document peut contenir une ou plusieurs pièces jointes

Interrogation des vues

CouchDB - Récapitulatif

Un système de gestion de bases de données NoSQL

L'accent mis sur la disponibilité du service

Système de requête puissant et efficace

Pour aller plus loin

http://guide.couchdb.org/editions/1/fr/

GeoCouch : Une extension SIG à CouchDB

Questions ?