presentation couchdb - toulibre -...
TRANSCRIPT
![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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/15.jpg)
![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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/16.jpg)
![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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/17.jpg)
![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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/18.jpg)
![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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/19.jpg)
![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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/20.jpg)
![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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/21.jpg)
![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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/22.jpg)
![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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051600/5a9b78e87f8b9aba4a8de39e/html5/thumbnails/30.jpg)
Licence
• Présentation sous licence CC-Attribution-ShareAlike
• http://creativecommons.org/licenses/by-sa/2.5/