Einführung in CouchDB

CouchDB

Zurücklehnen und entspannen!
http://slog.io
Thomas Schrader (@slogmen) 12/2010
REST-Interface
• API über http GET, PUT, POST, DELETE
• Browser und curl sind unsere Freunde:
➜ curl http://localhost:5984/demo/1dc6eece6526ad34c376a04dad0019e2
{"_id": "1dc6eece6526ad34c376a04dad0019e2",
"_rev": "1-09ef435d312bbc80136ec750025a44d1",
"urgency": "3",
"request": "init"}

Einführung in CouchDB
Zurücklehnen und entspannen!
Dokument anlegen
➜ curl -X POST -H 'Content-Type: application/json'
-d '{"request": "init", "urgency": 3}'
http://name:pw@localhost:5984/demo

HTTP/1.1 201 Created
{"ok": true,
"id": "5fe5c3d8731379a5d0b4d4ae0e0046da",
"rev": "1-09ef435d312bbc80136ec750025a44d1"}

Einführung in CouchDB
Zurücklehnen und entspannen!
Dokument mit ID
➜ curl -X POST -H 'Content-Type: application/json'
-d '{"request": "init", "urgency": 3}'
http://name:pw@localhost:5984/demo/very-urgent

HTTP/1.1 201 Created
{"ok": true,
"id": "very-urgent",
"rev": "1-09ef435d312bbc80136ec750025a44d1"}

Einführung in CouchDB
Zurücklehnen und entspannen!
Konflikt
➜ curl -X PUT -H 'Content-Type: application/json'
-d '{"request": "init", "urgency": 10}'
http://name:pw@localhost:5984/demo/very-urgent

HTTP/1.1 409 Conflict
{"error": "conflict",
"reason": "Document update conflict."}

Einführung in CouchDB
Zurücklehnen und entspannen!
Überschreiben
➜ curl -X PUT -H 'Content-Type: application/json'
-d '{"request": "init", "urgency": 10,
"_rev": "1-09ef435d312bbc80136ec750025a44d1" }'
http://name:pw@localhost:5984/demo/very-urgent

HTTP/1.1 201 Created
{"ok": true,
"id": "very-urgent",
"rev": "2-d13bda084accd9c47ecd176b9fe164b3"}

Einführung in CouchDB
Zurücklehnen und entspannen!
Views
• ermöglichen systematischen Zugriff auf
die Dokumente

• Map / Reduce
• konzeptuell zunächst ungewohnt
• werden in sogenannten »Design

Dokumenten« in der Datenbank abgelegt

Einführung in CouchDB
Zurücklehnen und entspannen!
Map
• Dokument wird als Variable doc übergeben
• Daten schreiben mit der Funktion emit
• Beispiel:
function (doc) {
emit(doc.request, doc.urgency);
}
Einführung in CouchDB
Zurücklehnen und entspannen!
Reduce
• optional
• zum Zusammenfassen von Dokumenten mit
demselbem Map-Ergebnis: muß einen Array
von Werten zu einem Wert reduzieren

• muß technische Bedingungen erfüllen
• vordefiniert: _count, _sum
Einführung in CouchDB
Zurücklehnen und entspannen!
Abfrage
http://localhost:5984/

Host

pazpar2-log/

DB

_design/log/_view/inits

View

?	

 startkey=[1327705875000]

ab wo?

&	

 group=true

gruppieren

&	

 group_level=2
Einführung in CouchDB
Zurücklehnen und entspannen!
Nützlich
• Dokumente mit Attachments
• Mehr View Features: _list, _show
• Weboberfläche unter _utils
• couchapp für Design Dokumente
• O’Reilly Buch: guide.couchdb.org
• Wiki: wiki.apache.org/couchdb/
Einführung in CouchDB
Zurücklehnen und entspannen!
Verfügbarkeit
• Manuelle Installation aufwendig
• Linux: Pakete für Ubuntu, ältere für SuSE
• Mac: Homebrew, älter: CouchDBX
• Windows
Einführung in CouchDB
Zurücklehnen und entspannen!

CouchDB

  • 1.
    Einführung in CouchDB CouchDB Zurücklehnenund entspannen! http://slog.io Thomas Schrader (@slogmen) 12/2010
  • 2.
    REST-Interface • API überhttp GET, PUT, POST, DELETE • Browser und curl sind unsere Freunde: ➜ curl http://localhost:5984/demo/1dc6eece6526ad34c376a04dad0019e2 {"_id": "1dc6eece6526ad34c376a04dad0019e2", "_rev": "1-09ef435d312bbc80136ec750025a44d1", "urgency": "3", "request": "init"} Einführung in CouchDB Zurücklehnen und entspannen!
  • 3.
    Dokument anlegen ➜ curl-X POST -H 'Content-Type: application/json' -d '{"request": "init", "urgency": 3}' http://name:pw@localhost:5984/demo HTTP/1.1 201 Created {"ok": true, "id": "5fe5c3d8731379a5d0b4d4ae0e0046da", "rev": "1-09ef435d312bbc80136ec750025a44d1"} Einführung in CouchDB Zurücklehnen und entspannen!
  • 4.
    Dokument mit ID ➜curl -X POST -H 'Content-Type: application/json' -d '{"request": "init", "urgency": 3}' http://name:pw@localhost:5984/demo/very-urgent HTTP/1.1 201 Created {"ok": true, "id": "very-urgent", "rev": "1-09ef435d312bbc80136ec750025a44d1"} Einführung in CouchDB Zurücklehnen und entspannen!
  • 5.
    Konflikt ➜ curl -XPUT -H 'Content-Type: application/json' -d '{"request": "init", "urgency": 10}' http://name:pw@localhost:5984/demo/very-urgent HTTP/1.1 409 Conflict {"error": "conflict", "reason": "Document update conflict."} Einführung in CouchDB Zurücklehnen und entspannen!
  • 6.
    Überschreiben ➜ curl -XPUT -H 'Content-Type: application/json' -d '{"request": "init", "urgency": 10, "_rev": "1-09ef435d312bbc80136ec750025a44d1" }' http://name:pw@localhost:5984/demo/very-urgent HTTP/1.1 201 Created {"ok": true, "id": "very-urgent", "rev": "2-d13bda084accd9c47ecd176b9fe164b3"} Einführung in CouchDB Zurücklehnen und entspannen!
  • 7.
    Views • ermöglichen systematischenZugriff auf die Dokumente • Map / Reduce • konzeptuell zunächst ungewohnt • werden in sogenannten »Design Dokumenten« in der Datenbank abgelegt Einführung in CouchDB Zurücklehnen und entspannen!
  • 8.
    Map • Dokument wirdals Variable doc übergeben • Daten schreiben mit der Funktion emit • Beispiel: function (doc) { emit(doc.request, doc.urgency); } Einführung in CouchDB Zurücklehnen und entspannen!
  • 9.
    Reduce • optional • zumZusammenfassen von Dokumenten mit demselbem Map-Ergebnis: muß einen Array von Werten zu einem Wert reduzieren • muß technische Bedingungen erfüllen • vordefiniert: _count, _sum Einführung in CouchDB Zurücklehnen und entspannen!
  • 10.
    Abfrage http://localhost:5984/ Host pazpar2-log/ DB _design/log/_view/inits View ? startkey=[1327705875000] ab wo? & group=true gruppieren & group_level=2 Einführung in CouchDB Zurücklehnen und entspannen!
  • 11.
    Nützlich • Dokumente mitAttachments • Mehr View Features: _list, _show • Weboberfläche unter _utils • couchapp für Design Dokumente • O’Reilly Buch: guide.couchdb.org • Wiki: wiki.apache.org/couchdb/ Einführung in CouchDB Zurücklehnen und entspannen!
  • 12.
    Verfügbarkeit • Manuelle Installationaufwendig • Linux: Pakete für Ubuntu, ältere für SuSE • Mac: Homebrew, älter: CouchDBX • Windows Einführung in CouchDB Zurücklehnen und entspannen!