Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Einführung CouchDB

Einführung CouchDB

Ich habe 2010 begonnen mich im Rahmen einer Projektarbeit für mein Studium mit CouchDB zu beschäftigen. Diese Folien entstanden zu einem Vortrag über CouchDB, den ich glücklicher Weise mehrfach halten durfte.

Thomas Schrader

December 15, 2010
Tweet

More Decks by Thomas Schrader

Other Decks in Technology

Transcript

  1. Übersicht • Bestandsaufnahme • Ansatz • Geschichte • Technologien •

    Features • Skalierbarkeit • Kurz & Gut • Fazit
  2. Relationale Datenbanken • in den 70iger Jahren entwickelt • für

    große Rechenanlagen • komplexe Replikation • unflexible, aufwendige Schemas • SQL?
  3. NoSQL • Not only SQL • nicht relationale Datenbanken •

    Graph-Datenbanken • Key-/Value-Datenbanken • Tabellen (BigTable) • Dokumentenorientierte Datenbanken
  4. Ansatz Url Title Description http://www.heise.de Heise Online Seite für IT-News

    http://couchdb.org CouchDB Heimat der Dokumentenorientierten Datenbank CouchDB http://fh-trier.de FH Trier Die Fachhochschule in Trier
  5. Ansatz • Schlüssel-/Wert Paare • Verzicht auf Schemas: mehr Flexibilität,

    einfaches Design • Passt zu Denkweise für Objekte in modernen Objektorientierten Sprachen
  6. Geschichte • frühe Doc-DB in Lotus Notes • Damien Katz,

    Entwickler bei Lotus • CouchDB wird seit 2005 entwickelt • 2008-2009 Entwicklung von IBM gefördert • 02/2008 Incubator der Apache Software Foundation • 11/2008 vollwertiges Apache Projekt • Apache Software License 2.0, OpenSource!
  7. REST • beschreibt eine Architektur • Representational State Transfer •

    Ressourcen, über URI identifizierbar • einheitliche Schnittstelle
  8. HTTP (CRUD) • Create POST /db/ • Retrieve GET /db/docid

    • Update PUT /db/docid • Delete DELETE /db/docid
  9. verteilte Konsistenz C A P Wähle 2 RDBMS (MySQL, Postgres,

    ...) BigTable, MongoDB, MemcacheDB, BerkeleyDB CouchDB, Cassandra, SimpleDB CAP Theorem
  10. MapReduce { "id": 1, "date": 20101201, "checkout": 100 } {

    "id": 2, "date": 20101201, "checkout": 42 } { "id": 3, "date": 20101201, "checkout": 23 } { "id": 4, "date": 20101201, "checkout": 10 }
  11. MapReduce { "id": 1, "date": 20101201, "checkout": 100 } {

    "id": 2, "date": 20101201, "checkout": 42 } { "id": 3, "date": 20101201, "checkout": 23 } { "id": 4, "date": 20101201, "checkout": 10 } 100 42 23 10
  12. MapReduce { "id": 1, "date": 20101201, "checkout": 100 } {

    "id": 2, "date": 20101201, "checkout": 42 } { "id": 3, "date": 20101201, "checkout": 23 } { "id": 4, "date": 20101201, "checkout": 10 } 100 42 23 10 142 33
  13. MapReduce { "id": 1, "date": 20101201, "checkout": 100 } {

    "id": 2, "date": 20101201, "checkout": 42 } { "id": 3, "date": 20101201, "checkout": 23 } { "id": 4, "date": 20101201, "checkout": 10 } 100 42 23 10 142 33 175
  14. Replikation • Offline per default • es gibt viele Realitäten

    • Event-gesteuert • Konfliktbehandlung
  15. Skalierbarkeit • horizontal: • Partitionierung (Sharding) mit CouchDB Lounge oder

    BigCouch • vertikal: • Verteilen der Last auf viele Rechner • jemand eine Idee?
  16. CouchDB • in CouchDB geht es nicht um Relationen •

    genügt nicht hohen Konsistenzanforderungen (ebay ...) aber: • Robust • flexibel • niedrige Lernkurve
  17. „Let me tell you something: Django may be built for

    the Web, but CouchDB is built of the Web. I’ve never seen software that so completely embraces the philosophies behind HTTP.“ Jacob Kaplan-Moss http://jacobian.org/writing/of-the-web/
  18. Quellen • CouchDB, The Definitive Guide O‘REILLY 2010 • „Umsetzung

    einer verteilten Anwendung mit der dokumentenorientierten Datenbank CouchDB“, Lena Herrmann Juli 2010 • Chaosradio Express 125 http://chaosradio.ccc.de/cre125.html • Vortrag Jan Lehnardt NoSQL Berlin • Vortrag Karl Glatz Oktober 2009 • Vortrag David Coallier, University Limerick 2010