View
0
Download
0
Category
Preview:
Citation preview
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
info@oio.de Version:
NoSQL Datenbanken
am Beispiel von
CouchDB
OIO - Hauskonferenz 2011
1.0
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
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 3
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH
!SQL 4
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH
http://www.google.de/trends?q=nosql
5
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 6
map.put(“ort“, “Mannheim“)
value = map.get(“ort“)
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 7
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 8
FlockDB
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 9
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 10
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH
NoSQL im Einsatz
11
Dynamo
BigTable
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH
Cluster of unreliable commodity Hardware DataBase
12
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
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 14
{
"firstname": "Thomas",
"lastname": "Bayer",
"city": "Bonn",
"email": thomas.bayer@oio.de
}
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 15
{
"firstname": "Thomas",
"lastname": "Bayer",
"city": "Bonn",
"email": [ "thomas.bayer@oio.de",
"thomas.bayer@predic8.de" ]
}
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 16
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 17
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH 18
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":mndy@mcdonnell.com
}
19
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':
'mndy@mcdonnell.com'}" -H "Content-Type:
application/json"
http://192.168.56.101:5984/my_friends/
{"ok":true,"id":”5","rev":“1"}
20
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': 'mandy@mcdonnell.com'}"
-H "Content-Type: application/json"
http://192.168.56.101:5984/my_friends/3
{"ok":true,"id":“3","rev":“2"}
21
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
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
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
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH
POST /offer/786
25
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH
kill -9 423
26
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
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
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH
Multi Version Concurrency Control
• Optimistic Locking
• Keine Versionskontrolle
29
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
NoSQL Datenbanken am Beispiel von CouchDB © 2011 Orientation in Objects GmbH
Fazit
• Einfache Entwicklung
• Robust
• Replication
• Built of/for the Web
31
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
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
info@oio.de
? ?
? ?
? Fragen ?
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
info@oio.de
Vielen Dank für ihre
Aufmerksamkeit !
Recommended