Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

NoSQL - Mongo, Couch und Co

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 42 Anzeige

Weitere Verwandte Inhalte

Aktuellste (20)

Anzeige

NoSQL - Mongo, Couch und Co

  1. 1. NOSQL? MONGO, COUCH & CO. Michael Whittaker Webmontag Paderborn 8. April 2013
  2. 2. ERFAHRUNGEN
  3. 3. NOSQL
  4. 4. NO SQL?
  5. 5. NOT ONLY SQL
  6. 6. WHY NOT ONLY SQL?
  7. 7. „BigData“? Millionen (PetaBytes) User? unstrukturiert CODD 1970 Realtime Commodity Analytics? Hardware?
  8. 8. Atomic Consistent ACID Isolated Durable
  9. 9. Basic Soft-State Availability BASE Eventual Consistent
  10. 10. DB-TYPEN Relationen / SQL Graphen BigTable / Dokumente / Spaltenbasiert Objekte
  11. 11. SQL / RELATIONALES SCHEMA Mitglieder } 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. 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. 13. OBJEKTGRAPH max@... peter@... Mitglied Freund Mitglied Max Freund Peter Mitglied sandra@... Sandra
  14. 14. IST DAS NICHT...
  15. 15. IST DAS NICHT... FAST EIN ER-DIAGRAMM? kann das so nicht direkt in die DB?
  16. 16. GRAPHDATENBANKEN NEO4J
  17. 17. DOKUMENTENORIENTIERTE DATENBANKEN
  18. 18. {name: „Mongo“, type: „DB“}
  19. 19. BSON-DOKUMENTE IN COLLECTIONS {     "_id": {         "$oid": "5056259d…000012",     },     "email": "max@mustermann.de",     "name": "Max Mustermann" }
  20. 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. 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. 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. 23. ZUGRIFF MongoDB-Server Treiber CREATE TABLE …
  24. 24. MONGOS STÄRKEN Geschwindigkeit JSON-Im/-Export / Hot Backups Queries und Indizes (Geospatial, verschachtelt, ...) Konsistenz
  25. 25. MONGODB USERS
  26. 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. 27. COUCHDB VIEWS (JS MAPREDUCE) {   function(doc) { if (doc.type === "member" && doc.name.test(/max.*/i)){ emit(doc.name, doc) } }
  28. 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. 29. ZUGRIFF CouchDB-Server HTTP / Treiber (Wrapper) Views definieren
  30. 30. COUCHDBS STÄRKEN Built for the Web – HTTP/JSON CouchApp Versionierung Views / Indizes / MapReduce High Availability
  31. 31. COUCHDB USERS
  32. 32. KEY-VALUE STORES
  33. 33. KEY-VALUE STORES SPEICHERN WERTE MIT EINEM SCHLÜSSEL AB
  34. 34. memcached
  35. 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. 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. 37. blog.nahurst.com/visual-guide-to-nosql-systems
  38. 38. LINKS Neo4J: neo4j.org MongoDB: mongodb.org (try.mongodb.org) CouchDB: couchdb.apache.org (couchapp.org) Couchbase: couchbase.com Memcached: memcached.org Redis: redis.io Cassandra: cassandra.apache.org Riak: basho.com/riak/ GemStone/S: gemstone.com/products/gemstone Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vs Neo4j vs Hypertable vs ElasticSearch vs Accumulo vs VoltDB vs Scalaris comparison: kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
  39. 39. DAS WAR‘S :-) MichaelWhi online: post@michael-whittaker.de michael-whittaker.de twitter.com/MichaelWhi github.com/MichaelWhi Folien von heute

×