12

Click here to load reader

CouchDB

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

Page 1: CouchDB

CouchDBEinführung in CouchDBZurücklehnen und entspannen!

Thomas Schrader (@slogmen) 12/2010

http://slog.io

Page 2: CouchDB

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

Page 3: CouchDB

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

Page 4: CouchDB

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

Page 5: CouchDB

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

Page 6: CouchDB

Ü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

Page 7: CouchDB

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

Page 8: CouchDB

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

Page 9: CouchDB

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

Page 10: CouchDB

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

Page 11: CouchDB

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

Page 12: CouchDB

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