Presentation CouchDB - Toulibre -...

30
Presentation CouchDB - Toulibre

Transcript of Presentation CouchDB - Toulibre -...

Page 1: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Presentation CouchDB - Toulibre

Page 2: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Qui sommes nous ?

• Etudiants à SUPINFO (3 et 4ème années)

• Membre du laboratoire Linux

• A la découverte de CouchDB

Page 3: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

NOSQL

• Pourquoi ?

• "Tout ce qui n'est pas relationnel"

• BigTable, Cassandra, MongoDB, CouchDB et autres. (une 40aine)

• Documents (CouchDB)

• Clefs / Valeurs (Cassandra)

• Tables larges (BigTable)

Page 4: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

CouchDB - Historique

• 2005, Damien Katz parles de CouchDB pour la première fois

• 2 ans de developpements bénévole

• 2007, Réécriture du projet C++/XML => Erlang/JSON

• 2008, Un projet Apache (sous GPL avant)

• 2010, Un projet en pleine évolution, des contributeurs, une certaine stabilité

Page 5: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

CouchDB - Architecture

• HTTP (un protocole): Les 4 verbes (POST/PUT/GET/DELETE)

• REST (Un style d'architecture utilisé pour le web)

• JSON (Format de données)

• Javascript* (ou PHP, Ruby, Python, Erlang ...)

Page 6: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

CouchDB - Les avantages

• Proche de l'utilisateur (une plateforme web locale)

• Offline par defaut

• Réplication master/master (décentralisation)

• Dénormalisation (schemaless)

• Reliability

• Relax !

Page 7: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

CouchDB - Concepts

• Documents

• Vues

• Show functions

Page 8: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Documents

curl -X GET [...]/toulibre/presentation-couchdb{ "_id":"presentation-couchdb", "lieu":"17 rue Bellegarde, Toulouse.", "date":[2010,6,23], "population":["geeks","barbus"], "doc_type": "presentation", "_attachments":{ "mixli-200908-rollei-1280.jpg":{ "stub":true, "content_type":"image/jpeg", "length":92456, "revpos":3 } }}

Page 9: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Vues

• Filtrer les documents que l'on souhaites afficher

• Aggregation

• Map/Reduce

Page 10: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Map

function(doc){ if (doc.doc_type == "presentation"){ for(var pop in doc.population){ emit (doc.population[pop], doc._id); } }}

$ curl -X GET [...]/toulibre/_design/views/_view/population?reduce=false{"total_rows":5,"offset":0,"rows":[{"id":"presentation-couchdb","key":"barbus","value":"presentation-couchdb"},{"id":"presentation-django","key":"developpeurs","value":"presentation-django"},{"id":"presentation-couchdb","key":"geeks","value":"presentation-couchdb"},{"id":"presentation-django","key":"geeks","value":"presentation-django"},{"id":"presentation-django","key":"pythoneux","value":"presentation-django"}]}

Page 11: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Reduce

function(keys, values, rereduce){ return values.length;}

$ curl -X GET [...]/toulibre/_design/views/_view/events{"rows":[{"key":null,"value":5}]}

Page 12: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Group

$ curl -X GET [...]/toulibre/_design/views/_view/events?group=true{"rows":[{"key":"barbus","value":1},{"key":"developpeurs","value":1},{"key":"geeks","value":2},{"key":"pythoneux","value":1}]}

Page 13: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Jointures

• Parce que c'est quand même bien pratique !

• ?include_documents=true

Page 14: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Révisions

{ "_id":"presentation-couchdb", "_rev":"1-b4393d7a1154b7d36bedaf98d554f191", "lieu":"17 rue Bellegarde, Toulouse.", "date":[2010,6,23], "population":["geeks","barbus"], "doc_type": "presentation" }

Page 15: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour
Page 16: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour
Page 17: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour
Page 18: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour
Page 19: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour
Page 20: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour
Page 21: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour
Page 22: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour
Page 23: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Conflits

$ curl -X GET [...]/toulibre/presentation-couchdb?conflicts=true{ "_id":"presentation-couchdb", "_rev":"4-8b26eda2beaa962201198034b40b6570", "lieu":"17 rue Bellegarde, Toulouse.", "date":[2010,6,23], "population":["geeks","barbus"], "doc_type":"presentation", "_conflicts":["3-57890f2aebfbff10103467bf5fbc7053"]}

Page 24: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Couchapps

• Avoir une application hebergée dans CouchDB

• La base de donnée est un serveur Web

• Un des objectifs de CouchDB

Page 25: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Futon

• Navigation

• Vues

• Révisions

Page 26: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Et une application concrète ?

• Gestion de notes

• Aplication Web (en django)

• Application android

• Surement une future Couchapp

Page 27: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Le futur de CouchDB

• Geolocalisation

• Gestion de OAuth pour l'authentification

• Embarqué

Page 28: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Ressources

• Wikipedia !

• http://books.couchdb.org

• http://couch.io (c'est une couchapp!)

• http://dropit.notmyidea.org (notre documentation)

• http://github.com/ametaireau/ & http://github.com/arnaudbos

Page 29: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Merci !

• Christophe Narbonne : [email protected]

• Arnaud Bos : [email protected]

• Alexis Metaireau : [email protected]

Page 30: Presentation CouchDB - Toulibre - files.lolnet.orgfiles.lolnet.org/alexis/rst-presentations/couchdb/couchdb.pdf · CouchDB - Historique • 2005, Damien Katz parles de CouchDB pour

Licence

• Présentation sous licence CC-Attribution-ShareAlike

• http://creativecommons.org/licenses/by-sa/2.5/