34
Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz 2011 1.0

NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: [email protected] NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected] Version:

NoSQL Datenbanken

am Beispiel von

CouchDB

OIO - Hauskonferenz 2011

1.0

Page 2: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Ihr Sprecher

2

Thomas Bayer

Programmierer

Schwerpunkte Funktionale Programmierung

REST SOA, XML

NoSQL Mobile Apps

Membrane

Page 3: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 3

Page 4: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

!SQL 4

Page 5: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

http://www.google.de/trends?q=nosql

5

Page 6: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 6

map.put(“ort“, “Mannheim“)

value = map.get(“ort“)

Page 7: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 7

Page 8: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 8

FlockDB

Page 9: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 9

Page 10: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 10

Page 11: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

NoSQL im Einsatz

11

Dynamo

BigTable

Page 12: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Cluster of unreliable commodity Hardware DataBase

12

Page 13: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

-module(ping_pong).

-export([ping/0, pong/0]).

ping() ->

Pong = spawn(ping_pong, pong, []),

Pong ! {self(), ping},

receive

pong ->

pong

end.

pong() ->

receive

{Ping, ping} ->

Ping ! pong

end.

Quelle: http://de.wikipedia.org/wiki/Erlang_(Programmiersprache)

13

Page 14: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 14

{

"firstname": "Thomas",

"lastname": "Bayer",

"city": "Bonn",

"email": [email protected]

}

Page 15: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 15

{

"firstname": "Thomas",

"lastname": "Bayer",

"city": "Bonn",

"email": [ "[email protected]",

"[email protected]" ]

}

Page 16: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 16

Page 17: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 17

Page 18: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 18

Page 19: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Abfragen einzelner Daten

curl -X GET http://192.168.56.101:5984/my_friends/3

{ "_id":“3",

"_rev":"1",

"firstname":"Mandy",

"lastname":"Mcdonnell",

"city":"Salem",

"email":[email protected]

}

19

Page 20: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Anlegen neuer Daten

curl -X POST -d "{'firstname':'Mandy', 'lastname':

'Mcdonnell', 'city': 'Salem', 'email':

'[email protected]'}" -H "Content-Type:

application/json"

http://192.168.56.101:5984/my_friends/

{"ok":true,"id":”5","rev":“1"}

20

Page 21: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Aktualisieren der Daten

curl -X PUT -d "{'_rev':'1-

52a806e1eead7d337ab0319197400fd5',

'firstname':'Mandy', 'lastname': 'Mcdonnell',

'city': 'Salem', 'email': '[email protected]'}"

-H "Content-Type: application/json"

http://192.168.56.101:5984/my_friends/3

{"ok":true,"id":“3","rev":“2"}

21

Page 22: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Löschen der Daten

curl -X DELETE http://192.168.56.101:5984/my_friends/3

{"ok":true,"id":“3","rev":“3"}

22

Page 23: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Updates

• GET, Modify, POST

• POST => neue Revision

• Keine Manipulation von bestehenden Daten

• POST kann sich mit GET überschneiden

23

Page 24: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

function(doc) {

var c = doc.name.split(".");

return emit(c[c.length -1] , doc.size);

}

24

Page 25: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

POST /offer/786

25

Page 26: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

kill -9 423

26

Page 27: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Replication

• N-Master

• Offline arbeiten und dann synchronisieren

• Konflikt Erkennung und Behebung

• Merge

27

Page 28: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Replication

• Nur in eine Richtung

• Überträgt Dokumente, die sich unterscheiden

• Jede Änderung wird mit DB Sequenznummer versehen

– Effiziente Replication

• Manuel oder Continuous

28

Page 29: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Multi Version Concurrency Control

• Optimistic Locking

• Keine Versionskontrolle

29

Page 30: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Konflikte

• Konflikte werden erkannt

• Alle Knoten lösen Konflikte gleich

– Wining/Losing Revision

• Merge analog zu Subversion

30

Page 31: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Fazit

• Einfache Entwicklung

• Robust

• Replication

• Built of/for the Web

31

Page 32: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH

Referenzen

• John Quinn, Presentation: NoSQL: Dealing with the Data Deluge

http://nosql.mypopescu.com/post/535275826/presentation-nosql-

dealing-with-the-data-deluge

• http://damienkatz.net/

• CouchDB: The definite Guide

– http://guide.couchdb.org/

• NoSQL Tutorial: CouchDB mit Java

– http://predic8.de/couchdb-tutorial.htm

32

Page 33: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]

? ?

? ?

? Fragen ?

Page 34: NoSQL Datenbanken am Beispiel von CouchDB · Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: info@oio.de NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]

Vielen Dank für ihre

Aufmerksamkeit !