Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade


Redis
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
›   SET note1:title "Mittag"
›   SET note1:message "nicht vergessen"

›   KEYS note1:*
›   GET note1:title
›   DEL note1:title note1:message
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
http://bit.ly/ISv9f6
2013-03-23 - NoSQL Spartakiade
R venDB
 a
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
›
›
›
›
    ›
›
›
2013-03-23 - NoSQL Spartakiade
›
›
›
2013-03-23 - NoSQL Spartakiade
›
    ›
    ›
›
using (var documentStore = new EmbeddableDocumentStore{
                           RunInMemory = true}.Initialize())
{
    using (var session = documentStore.OpenSession())
    {
        // Run complex test scenarious
    }
}
›
›


›
›
›
Ayende Rahien on the HTTP API - http://ravendb.net/documentation/docs-http-api-restful
›
  ›
  ›

C:>curl -X GET http://localhost:8080/docs/Categories/1 -i
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
ETag: 00000000-0000-0200-0000-000000000004
{
       "Name" : "Normal Importance",
       "Color" : "green"
}
2013-03-23 - NoSQL Spartakiade
var notes = session                      var notes = session.Advanced
.Query<Note>()                           .LuceneQuery<Note>()
.Where(n => n.Category == "Important")   .Where("Category:Important")
.ToArray();                              .ToArray();
MongoDB
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
CODASYL model                   SQL               Agile becoming more   Google            MongoDB initial
   published                  invented                    popular        BigTable             release




IBM’s                                     Oracle                   Brewer’s      Amazon
 IMS                  INGRES             founded                   CAP born      Dynamo




1966    1969   1970    1973     1974     1977      1985   1990’s     2000     2004    2007 2008 2009


                                                                                  10gen        NoSQL
       Codd publishes                     Term “object-oriented                  founded      Movement
   relational model paper                   database” appears
           in 1970                                                                   Apache Cassandra
                                                                                       initial release
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
›
›
›
2013-03-23 - NoSQL Spartakiade
–
›   use WebNote
›   db.Notes.save(
       {
         Title: 'Mittag',
         Message: 'nicht vergessen‘
       }
    );




›   db.Notes.save
–

for(i=0; i<1000; i++) {
     ['quiz', 'essay', 'exam'].forEach(function(name) {
        var score = Math.floor(Math.random() * 50) + 50;
        db.scores.save({student: i, name: name, score:
   score});
     });
   }
   db.scores.count();
–

›   db.Notes.find();
›   db.Notes.find({ Title: /Test/i });
›   db.Notes.find(
      { "Categories.Color": "red"}).limit(1);
–
›   db.Notes.update({Title: 'Test'},
                    {'$set': {Categories: []}});

›   db.Notes.update({Title: 'Test'},
                    {'$push': {
                                Categories:
                                {Color: 'Red'}
                              }
                    });
–
›   db.dropDatabase();
›   db.Notes.drop();
›   db.Notes.remove();
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
Consistency
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
Hands ON!
2013-03-23 - NoSQL Spartakiade
use digg
db.stories.findOne();
2013-03-23 - NoSQL Spartakiade
›   use digg;
›   db.people.update({name: 'Smith'},
                     {'$set': {interests: []}});
›    db.people.update({name: 'Smith'},
                     {'$push': {interests: ['chess']}});
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
var map = function() {
   emit(this.user.name, {diggs: this.diggs,
   posts: 0});
};
var reduce = function(key, values) {
   var diggs = 0;
   var posts = 0;
   values.forEach(function(doc) {
                diggs += doc.diggs;
                posts += 1;
   });
   return {diggs: diggs, posts: posts};
};
db.stories.mapReduce(map, reduce, {out:
  'digg_users'});


db.digg_users.find();
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
JaWOHL!
Schema
 Design
2013-03-23 - NoSQL Spartakiade
http://bsonspec.org

2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
> 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 } } )
2013-03-23 - NoSQL Spartakiade
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"
      }
    ]
}
2013-03-23 - NoSQL Spartakiade
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 } );
2013-03-23 - NoSQL Spartakiade
// Jedes Produkt verlinkt die IDs der Kategorien
products:
      { _id: 10, name: "Destination Moon",
        category_ids: [ 20, 30 ] }
// 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 ] }
// 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 } )
2013-03-23 - NoSQL Spartakiade
// 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"}
// 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 } )
// 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}})
2013-03-23 - NoSQL Spartakiade
Software Tests
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade




More Related Content

2013-03-23 - NoSQL Spartakiade

  • 16. Redis
  • 24. SET note1:title "Mittag" › SET note1:message "nicht vergessen" › KEYS note1:* › GET note1:title › DEL note1:title note1:message
  • 35.
  • 36. › › ›
  • 38.
  • 41. › › ›
  • 42. using (var documentStore = new EmbeddableDocumentStore{ RunInMemory = true}.Initialize()) { using (var session = documentStore.OpenSession()) { // Run complex test scenarious } }
  • 44. Ayende Rahien on the HTTP API - http://ravendb.net/documentation/docs-http-api-restful
  • 45. › › › C:>curl -X GET http://localhost:8080/docs/Categories/1 -i HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 ETag: 00000000-0000-0200-0000-000000000004 { "Name" : "Normal Importance", "Color" : "green" }
  • 47. var notes = session var notes = session.Advanced .Query<Note>() .LuceneQuery<Note>() .Where(n => n.Category == "Important") .Where("Category:Important") .ToArray(); .ToArray();
  • 54. CODASYL model SQL Agile becoming more Google MongoDB initial published invented popular BigTable release IBM’s Oracle Brewer’s Amazon IMS INGRES founded CAP born Dynamo 1966 1969 1970 1973 1974 1977 1985 1990’s 2000 2004 2007 2008 2009 10gen NoSQL Codd publishes Term “object-oriented founded Movement relational model paper database” appears in 1970 Apache Cassandra initial release
  • 59. – › use WebNote › db.Notes.save( { Title: 'Mittag', Message: 'nicht vergessen‘ } ); › db.Notes.save
  • 60. – for(i=0; i<1000; i++) { ['quiz', 'essay', 'exam'].forEach(function(name) { var score = Math.floor(Math.random() * 50) + 50; db.scores.save({student: i, name: name, score: score}); }); } db.scores.count();
  • 61. – › db.Notes.find(); › db.Notes.find({ Title: /Test/i }); › db.Notes.find( { "Categories.Color": "red"}).limit(1);
  • 62. – › db.Notes.update({Title: 'Test'}, {'$set': {Categories: []}}); › db.Notes.update({Title: 'Test'}, {'$push': { Categories: {Color: 'Red'} } });
  • 63. – › db.dropDatabase(); › db.Notes.drop(); › db.Notes.remove();
  • 84. use digg; › db.people.update({name: 'Smith'}, {'$set': {interests: []}}); › db.people.update({name: 'Smith'}, {'$push': {interests: ['chess']}});
  • 88. var map = function() { emit(this.user.name, {diggs: this.diggs, posts: 0}); };
  • 89. var reduce = function(key, values) { var diggs = 0; var posts = 0; values.forEach(function(doc) { diggs += doc.diggs; posts += 1; }); return {diggs: diggs, posts: posts}; };
  • 90. db.stories.mapReduce(map, reduce, {out: 'digg_users'}); db.digg_users.find();
  • 97.
  • 108. > 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 } } )
  • 110. 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" } ] }
  • 112. 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 } );
  • 114. // Jedes Produkt verlinkt die IDs der Kategorien products: { _id: 10, name: "Destination Moon", category_ids: [ 20, 30 ] }
  • 115. // 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 ] }
  • 116. // 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 } )
  • 118. // 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"}
  • 119. // 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 } )
  • 120. // 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}})
  • 128. ” J.B. Rainsberger
  • 131.
  • 136. using (var documentStore = new EmbeddableDocumentStore{ RunInMemory = true}.Initialize()) { using (var session = documentStore.OpenSession()) { // Run complex test scenarious } }
  • 139. using (var runner = MongoDbRunner.Start()) { var collection = new MongoClient(runner.ConnectionString) .GetServer() .GetDatabase("TestDatabase") .GetCollection<TestDocument>("TestCollection"); // Run complex test scenarious }