NoSQL Datenbanken am Beispiel von CouchDB

Werbung
NoSQL Datenbanken
am Beispiel von
CouchDB
OIO - Hauskonferenz 2011
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
Version: 1.0
www.oio.de
[email protected]
Ihr Sprecher
Thomas Bayer
Programmierer
Schwerpunkte
Funktionale Programmierung
REST
SOA, XML
NoSQL
Mobile Apps
Membrane
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
2
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
3
!SQL
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
4
http://www.google.de/trends?q=nosql
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
5
map.put(“ort“, “Mannheim“)
value = map.get(“ort“)
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
6
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
7
FlockDB
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
8
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
9
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
10
NoSQL im Einsatz
Dynamo
BigTable
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
11
Cluster of unreliable commodity Hardware DataBase
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
12
-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)
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
13
{
"firstname": "Thomas",
"lastname": "Bayer",
"city": "Bonn",
"email": [email protected]
}
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
14
{
"firstname": "Thomas",
"lastname": "Bayer",
"city": "Bonn",
"email": [ "[email protected]",
"[email protected]" ]
}
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
15
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
16
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
17
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
18
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]
}
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
19
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"}
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
20
Aktualisieren der Daten
curl -X PUT -d "{'_rev':'152a806e1eead7d337ab0319197400fd5',
'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"}
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
21
Löschen der Daten
curl -X DELETE http://192.168.56.101:5984/my_friends/3
{"ok":true,"id":“3","rev":“3"}
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
22
Updates
•
•
•
•
GET, Modify, POST
POST => neue Revision
Keine Manipulation von bestehenden Daten
POST kann sich mit GET überschneiden
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
23
function(doc) {
var c = doc.name.split(".");
return emit(c[c.length -1] , doc.size);
}
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
24
POST /offer/786
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
25
kill -9 423
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
26
Replication
•
•
•
•
N-Master
Offline arbeiten und dann synchronisieren
Konflikt Erkennung und Behebung
Merge
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
27
Replication
• Nur in eine Richtung
• Überträgt Dokumente, die sich unterscheiden
• Jede Änderung wird mit DB Sequenznummer versehen
– Effiziente Replication
• Manuel oder Continuous
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
28
Multi Version Concurrency Control
• Optimistic Locking
• Keine Versionskontrolle
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
29
Konflikte
• Konflikte werden erkannt
• Alle Knoten lösen Konflikte gleich
– Wining/Losing Revision
• Merge analog zu Subversion
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
30
Fazit
•
•
•
•
Einfache Entwicklung
Robust
Replication
Built of/for the Web
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
31
Referenzen
• John Quinn, Presentation: NoSQL: Dealing with the Data Deluge
http://nosql.mypopescu.com/post/535275826/presentation-nosqldealing-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
© 2011 Orientation in Objects GmbH
NoSQL Datenbanken am Beispiel von CouchDB
32
? ? ?
?
?
Fragen ?
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
[email protected]
Vielen Dank für ihre
Aufmerksamkeit !
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
[email protected]
Herunterladen