Click here to load reader
Upload
sven-s-porst
View
117
Download
5
Embed Size (px)
DESCRIPTION
Kurze Vorstellung von CouchDB in der Großen Entwicklerrunde der SUB Göttingen zum Thema NoSQL Datenbanken im Februar 2012.
Citation preview
CouchDBEinführung in CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io
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 CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io
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 CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io
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 CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io
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 CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io
Ü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 CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io
Views
• ermöglichen systematischen Zugriff aufdie Dokumente
• Map / Reduce
• konzeptuell zunächst ungewohnt
• werden in sogenannten »Design Dokumenten« in der Datenbank abgelegt
Einführung in CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io
Map
• Dokument wird als Variable doc übergeben
• Daten schreiben mit der Funktion emit
• Beispiel:
function (doc) {
emit(doc.request, doc.urgency);
}
Einführung in CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io
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 CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io
Abfragehttp://localhost:5984/
pazpar2-log/
_design/log/_view/inits
? startkey=[1327705875000]
& group=true
& group_level=2
Host
DB
View
ab wo?
gruppieren
Einführung in CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io
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 CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io
Verfügbarkeit
• Manuelle Installation aufwendig
• Linux: Pakete für Ubuntu, ältere für SuSE
• Mac: Homebrew, älter: CouchDBX
• Windows
Einführung in CouchDBZurücklehnen und entspannen!
Thomas Schrader (@slogmen) 12/2010
http://slog.io