2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

104

description

 

Transcript of 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

Page 1: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 2: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 3: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 4: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 5: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 6: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 7: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 8: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 9: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 10: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 11: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 12: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 13: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 14: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 15: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

› SET note1:title "Mittag"

› SET note1:message "nicht vergessen"

› KEYS note1:*

› GET note1:title

› DEL note1:title note1:message

Page 16: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 17: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 18: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

http://bit.ly/ISv9f6

Page 19: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 20: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 21: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 22: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 23: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 24: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 25: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 26: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 27: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 28: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 29: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 30: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 31: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 32: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 33: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 34: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

››

Page 35: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 36: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 37: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 38: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 39: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 40: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 41: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 42: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 43: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 44: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 45: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 46: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 47: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 48: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 49: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 50: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 51: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 52: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 53: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 54: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 55: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 56: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 57: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

http://bsonspec.org

Page 58: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 59: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 60: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 61: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 62: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 63: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

› use WebNote

› db.Notes.save( { Title: 'Mittag', Message: 'nicht vergessen‘ } );

› db.Notes.save

Page 64: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

› db.Notes.find();

› db.Notes.find({ Title: /Test/i });

› db.Notes.find( { "Categories.Color": "red"}).limit(1);

Page 65: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

› db.Notes.update({Title: 'Test'}, {'$set': {Categories: []}});

› db.Notes.update({Title: 'Test'}, {'$push': {

Categories: {Color: 'Red'} }

});

Page 66: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

› db.dropDatabase();

› db.Notes.drop();

› db.Notes.remove();

Page 67: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 68: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 69: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 70: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 71: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 72: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 73: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

NULL NULL

NULL NULL

NULL

Page 74: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

> db.shapes.find()

› { _id: "1", type: "c", area: 3.14, radius: 1}

› { _id: "2", type: "s", area: 4, length: 2}

› { _id: "3", type: "r", area: 10, length: 5, width: 2}

// Shapes mit radius > 0 finden

> db.shapes.find( { radius: { $gt: 0 } } )

Page 75: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 76: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

blogs: { author : “Johannes", date : ISODate("2011-09-18T09:56:06.298Z"), comments : [ { author : “Klaus", date : ISODate("2011-09-19T09:56:06.298Z"), text : “toller Artikel" } ] }

Page 77: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 78: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

blogs: { _id: 1000, author: “Johannes", date: ISODate("2011-09-18"), comments: [ {comment : 1)} ]}

comments : { _id : 1, blog: 1000, author : “Klaus", date : ISODate("2011-09-19")} > blog = db.blogs.find({ text: "Destination Moon" }); > db.comments.find( { blog: blog._id } );

Page 79: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 80: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

// Jedes Produkt verlinkt die IDs der Kategorien

products: { _id: 10, name: "Destination Moon", category_ids: [ 20, 30 ] }

Page 81: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

// Jedes Produkt verlinkt die IDs der Kategorien

products: { _id: 10, name: "Destination Moon", category_ids: [ 20, 30 ] }

// Jede Kategorie verlinkt die IDs der Produkte

categories:

{ _id: 20, name: "adventure",

product_ids: [ 10, 11, 12 ] }

categories:

{ _id: 21, name: "movie",

product_ids: [ 10 ] }

Page 82: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

// Jedes Produkt verlinkt die IDs der Kategorien

products: { _id: 10, name: "Destination Moon", category_ids: [ 20, 30 ] }

// Jede Kategorie verlinkt die IDs der Produkte

categories:

{ _id: 20, name: "adventure",

product_ids: [ 10, 11, 12 ] }

categories:

{ _id: 21, name: "movie",

product_ids: [ 10 ] }

// Alle Kategorien für ein Produkt

> db.categories.find( { product_ids: 10 } )

Page 83: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 84: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

// Jedes Produkt verlinkt die IDs der Kategorien

products: { _id: 10, name: "Destination Moon", category_ids: [ 20, 30 ] }

// Kategorien beinhalten keine Assoziationen

categories:

{ _id: 20,

name: "adventure"}

Page 85: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

// Jedes Produkt verlinkt die IDs der Kategorien

products: { _id: 10, name: "Destination Moon", category_ids: [ 20, 30 ] }

// Kategorien beinhalten keine Assoziationen

categories:

{ _id: 20,

name: "adventure"}

// Alle Produkte für eine Kategorie

> db.products.find( { category_ids: 20 } )

Page 86: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

// Jedes Produkt verlinkt die IDs der Kategorien

products: { _id: 10, name: "Destination Moon", category_ids: [ 20, 30 ] }

// Kategorien beinhalten keine Assoziationen

categories:

{ _id: 20,

name: "adventure"}

// Alle Produkte für eine Kategorie

> db.products.find( { category_ids: 20 } )

// Alle Kategorien für ein Produkt product

> product = db.products.find( { _id: some_id } )

> db.categories.find({_id: {$in : product.category_ids}})

Page 87: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 88: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 89: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 90: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 91: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 92: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 93: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 94: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 95: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 98: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

›››

Page 99: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

›››

Page 100: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

››

Page 101: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

Page 102: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Page 103: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB

IBM’s IMS

Codd publishes relational model paper

in 1970

1966 1969 1970 1985 2000 2004 2007

Agile becoming more popular

1990’s 2009

CODASYL model published

Term “object-oriented database” appears

Brewer’s CAP born

Google BigTable

Amazon Dynamo

Apache Cassandra initial release

2008

MongoDB initial release

1973 1974

INGRES

SQL invented

1977

Oracle founded

10gen founded

NoSQL Movement

Page 104: 2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB