Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages...

25
Einführung zu CouchDB Jonathan Giroux – 11. GPN

Transcript of Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages...

Page 1: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Einführung zu CouchDB

Jonathan Giroux – 11. GPN

Page 2: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Links

● http://couchdb.apache.org/● http://guide.couchdb.org/● http://www.youtube.com/watch?v=ESDBM9-U804

(CouchDB at GoogleTechTalks)

Page 3: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Datenbanken

● Relationale Datenbank

Usersid name42 Alice43 Bob

Messagesid user body replyTo1337 43 Hi! Want to go to

party tonight?!NULL

1338 42 No way, you nerdz.

1337

Page 4: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Datenbanken

● Auch andere Datenmodelle

Document databases

Graph databases

Key-Value stores

Object oriented databases

BigTable clones

...

Page 5: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Was brauchen wir?

from http://www.sixhills-consulting.com/

Page 6: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

CouchDB

● Document oriented● Schema free● Database● HTTP server

Page 7: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Dokument

from http://guide.couchdb.org/

Page 8: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Schema (free)

● JSON structure

{name = “Vorlesung ...”,date = “2011/3/14”,time = “14:00:00”,repeat = “weekly”,repeat_until = “2011/7/11”

}

{name = “GPN11”,date = “2011/6/23”,duration = [4, “day”]

}

Page 9: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

API

● RESTful● Database methods, document methods,

server configuration, authentication(link)

Page 10: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Multi-Version Concurrency Control

Zeit

Rev 1 Rev 1 Rev 2

Neue Rev

Schreiben

Lesen

Page 11: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Views

● Map

● emit(key, value);

map(doc)

doc

doc

doc

key-value

key-value

key-value

key-value

Page 12: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Views

● Reduce (optional)

● return value;● return [value, value, …]; (Vorsicht!)

key-value

key-value

key-value

key-valuereduce(keys, values) value

Page 13: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Beispiel

● Image database

Page 14: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Cache

Page 15: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Rereduce

● reduce = function(keys, values, rereduce)

key-value

key-valuereduce

key-value

key-valuereduce

reduce value

rereduce = true

rereduce = false(keys = null)

Page 16: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Diverse Dokument-Typen

● Duck typing– “type”: “xxx”– “is_xxx”: true

● JOIN?– Cache– View collation (link)

Page 17: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Design document

● Views

● _attachments

(link)

Page 18: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Shows, lists

Page 19: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

3 layers

HTML...

Python, Ruby...

CouchDB

Page 20: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Security

● Users● Roles● Validation functions

● Per-User read?

● HTTPS?

Page 21: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Replication

Page 22: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Clustering

● Lounge

Lounge

A G C L

Page 23: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

CouchApp

● Beispiel: git://github.com/jchris/sofa.git

Page 24: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Auch auf den Smartphones

from http://www.h-online.com/

Page 25: Einführung zu CouchDB · Datenbanken Relationale Datenbank Users id name 42 Alice 43 Bob Messages id user body replyTo 1337 43 Hi! Want to go to party tonight?! NULL 1338 42 No way,

Danke!