NoSQL - Mongo, Couch und Co
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

NoSQL - Mongo, Couch und Co

on

  • 3,268 views

Slides vom Webmontag Paderborn, 8.4.2013 zum Thema NoSQL-Datenbanken

Slides vom Webmontag Paderborn, 8.4.2013 zum Thema NoSQL-Datenbanken

Statistics

Views

Total Views
3,268
Views on SlideShare
3,266
Embed Views
2

Actions

Likes
1
Downloads
12
Comments
0

1 Embed 2

http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

NoSQL - Mongo, Couch und Co Presentation Transcript

  • 1. NOSQL?MONGO, COUCH & CO. Michael Whittaker Webmontag Paderborn 8. April 2013
  • 2. ERFAHRUNGEN
  • 3. NOSQL
  • 4. NO SQL?
  • 5. NOT ONLY SQL
  • 6. WHY NOT ONLY SQL?
  • 7. „BigData“?Millionen (PetaBytes) User? unstrukturiert CODD 1970Realtime CommodityAnalytics? Hardware?
  • 8. Atomic Consistent ACIDIsolated Durable
  • 9. Basic Soft-StateAvailability BASE Eventual Consistent
  • 10. DB-TYPENRelationen / SQL Graphen BigTable / Dokumente / Spaltenbasiert Objekte
  • 11. SQL / RELATIONALES SCHEMAMitglieder } ID Name Mail 1 Max Mustermann max@mustermann.de Relation/ 2 Sandra Musterfrau sandra@musterfrau.de Tabelle 3 Peter Müller peter@mueller.de
  • 12. SQL / RELATIONALES SCHEMA Max ist mit Sandra und Peter befreundet Freundschaften Mitglied1_ID Mitglied2_ID Max‘ ID 1 2 Sandra Max 1 3 Peter
  • 13. OBJEKTGRAPHmax@... peter@... Mitglied Freund Mitglied Max Freund Peter Mitglied sandra@... Sandra
  • 14. IST DAS NICHT...
  • 15. IST DAS NICHT...FAST EIN ER-DIAGRAMM? kann das so nicht direkt in die DB?
  • 16. GRAPHDATENBANKEN NEO4J
  • 17. DOKUMENTENORIENTIERTE DATENBANKEN
  • 18. {name: „Mongo“, type: „DB“}
  • 19. BSON-DOKUMENTE IN COLLECTIONS {    "_id": {        "$oid": "5056259d…000012",    },    "email": "max@mustermann.de",    "name": "Max Mustermann" }
  • 20. BSON-DOKUMENTE IN COLLECTIONS {    "_id": {        "$oid": "5056259d…000011",    },    "email": "max@mustermann.de",    "name": "Max Mustermann", "friend_ids": ["5056259d…000012", "5056259d…000013"] } Referenz auf IDs
  • 21. BSON-DOKUMENTE IN COLLECTIONS {    "_id": {        "$oid": "5056259d…000011",    },    "email": "max@mustermann.de",    "name": "Max Mustermann", "friend_ids": ["5056259d…000012", "5056259d…000013"], "addresses": [{        "street": "Warburger Str. 100", "coords": [12.34, 23.45] }, … ] }
  • 22. MONGODB QUERY{  > db.members.find( { "name": "Max Mustermann" } )  > db.members.find( { "name": /max.*/i } )  > db.members.find( { "friend_ids ": { $size: 0 } } )  > db.members.find( { "friend_ids ": { $elemMatch: "50…11" } } )
  • 23. ZUGRIFFMongoDB-ServerTreiberCREATE TABLE …
  • 24. MONGOS STÄRKENGeschwindigkeitJSON-Im/-Export / Hot BackupsQueries und Indizes (Geospatial, verschachtelt, ...)Konsistenz
  • 25. MONGODB USERS
  • 26. JSON DOKUMENTE IN COUCHDB {    "_id": "member_5056259d…000011",    "type": "member",    "email": "max@mustermann.de",    "name": "Max Mustermann", "friend_ids": ["member_505…012", "member_505…013"], "addresses": [{        "street": "Warburger Str. 100", "coords": [12.34, 23.45] }, … ] } http://localhost:5984/test/member_5056259d…000011
  • 27. COUCHDB VIEWS (JS MAPREDUCE){  function(doc) { if (doc.type === "member" && doc.name.test(/max.*/i)){ emit(doc.name, doc) } }
  • 28. COUCHDB VIEWS{  function(doc) { if (doc.type === "member" && doc.addresses && doc.addresses.length > 0){ emit(doc.name, doc.addresses[0][street]) } } http://localhost:5984/test/_design/names_with_street?key=Max+Mustermann
  • 29. ZUGRIFFCouchDB-ServerHTTP / Treiber (Wrapper)Views definieren
  • 30. COUCHDBS STÄRKENBuilt for the Web – HTTP/JSON CouchAppVersionierungViews / Indizes / MapReduceHigh Availability
  • 31. COUCHDB USERS
  • 32. KEY-VALUE STORES
  • 33. KEY-VALUE STORESSPEICHERN WERTE MIT EINEM SCHLÜSSEL AB
  • 34. memcached
  • 35. MEMCACHED speichert beliebige Zeichenketten im RAM ab weitverbreitet, „memcache-Protokoll“ (Telnet) oft für Distributed Caching genutzt{  > set max_mustermann.street "Warburger Strasse 100" > get max_mustermann.street
  • 36. REDIS speichert Zeichenketten, Zahlen, Arrays und Mengen im RAM* ab „Datenstruktur-Server“ rasend schnell Replikation / Failover{ > set max_mustermann.profile_views 1 > incr max_mustermann.profile_views # => 2
  • 37. blog.nahurst.com/visual-guide-to-nosql-systems
  • 38. LINKSNeo4J: neo4j.orgMongoDB: mongodb.org (try.mongodb.org)CouchDB: couchdb.apache.org (couchapp.org)Couchbase: couchbase.comMemcached: memcached.orgRedis: redis.ioCassandra: cassandra.apache.orgRiak: basho.com/riak/GemStone/S: gemstone.com/products/gemstoneCassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vsNeo4j vs Hypertable vs ElasticSearch vs Accumulo vs VoltDB vs Scalaris comparison:kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
  • 39. DAS WAR‘S :-)MichaelWhi online:post@michael-whittaker.demichael-whittaker.detwitter.com/MichaelWhigithub.com/MichaelWhi Folien von heute