CouchDB

12

Click here to load reader

description

Kurze Vorstellung von CouchDB in der Großen Entwicklerrunde der SUB Göttingen zum Thema NoSQL Datenbanken im Februar 2012.

Transcript of CouchDB

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