SlideShare a Scribd company logo
{NoSQL-BootcamP}
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
{Intro}



case file 001
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
Daten




 2002   2004   2006   2008   2010   2012
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
Scale-up
Scale-out
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
Schemafrei
Anforderungen
an ein verteiltes System




                           Consistency
                                  Konsistenz




               Partition
                                           Availability
               Tolerance                       Verfügbarkeit
                Ausfalltoleranz
›
›
›
›
›
›
›
›
›
›
“Drum prüfe,
wer sich ewig bindet.”
Friedrich Schiller
›   
›   
›
›
›
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
{Redis}



case file 002
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
›   SET note1:title "Mittag"
›   SET note1:message "nicht vergessen"

›   KEYS note1:*
›   GET note1:title
›   DEL note1:title note1:message
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
http://bit.ly/ISv9f6
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
{RavenDB}



case file 003
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
›
    ›
    ›
›
›
›
    ›
›
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
›
    ›
›
    ›
    ›
›
    ›
›
›
›
    ›
    ›
›
    ›
    ›
    ›
›
    ›
    ›
›
›
›
›
›
›
“While being RESTful is a goal of the
HTTP API, it is secondary to the goal of
exposing easy to use and powerful
functionality”
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"
}
Classic Linq Style                       Lucene Style
var notes = session                      var notes = session.Advanced
.Query<Note>()                           .LuceneQuery<Note>()
.Where(n => n.Category == “Important")   .Where(“Category:Important")
.ToArray();                              .ToArray();
{MongoDB}



case file 004
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
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
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
›
›
›
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
–
›   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();
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
›
›
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
{PAUSE!}
Hands ON



case file 005
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
›
›
›
›
›
›
›   use digg
›   db.stories.findOne();
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
›   use digg;
›   db.people.update({name: 'Smith'},
                     {'$set': {interests: []}});
›    db.people.update({name: 'Smith'},
                     {'$push': {interests: ['chess']}});
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
map = function() {
  emit(this.user.name, {diggs: this.diggs,
  posts: 0});
}
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();
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
SIR,Yes,Sir!
Design
 Schema



case file 006
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
http://bsonspec.org

2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
NULL   NULL



NULL          NULL



NULL
> 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 } } )
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
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"
      }
    ]
}
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
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 } );
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
// 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 } )
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
// 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}})
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
Vielen
Dank!
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)
2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)

More Related Content

What's hot (20)

PDF
最近 node.js 來勢洶洶, 怎麼辦? 別怕, 我們也有秘密武器 RingoJS!
Liwei Chou
 
PPTX
Building a Location-based platform with MongoDB from Zero.
Ravi Teja
 
PDF
Drupal 7: What's In It For You?
karschsp
 
PDF
Getting Started with MongoDB
Michael Redlich
 
PDF
Intro to HTML5 Web Storage
dylanks
 
PDF
Database madness with_mongoengine_and_sql_alchemy
Jaime Buelta
 
PDF
DBIx::Class walkthrough @ bangalore pm
Sheeju Alex
 
PPTX
Django - sql alchemy - jquery
Mohammed El Rafie Tarabay
 
KEY
Practical Use of MongoDB for Node.js
async_io
 
PDF
Hive jdbc
Bennie Schut
 
PDF
How to use MongoDB with CakePHP
ichikaway
 
KEY
Sequel
Stoyan Zhekov
 
KEY
Node.js - As a networking tool
Felix Geisendörfer
 
PPTX
Sequelize
Tarek Raihan
 
PDF
Scalable vector ember
Matthew Beale
 
PDF
MySQL flexible schema and JSON for Internet of Things
Alexander Rubin
 
PDF
Node.js - A Quick Tour II
Felix Geisendörfer
 
PDF
20110514 mongo dbチューニング
Yuichi Matsuo
 
KEY
Geospatial Indexing and Querying with MongoDB
Grant Goodale
 
PPTX
Introduction to the new official C# Driver developed by 10gen
MongoDB
 
最近 node.js 來勢洶洶, 怎麼辦? 別怕, 我們也有秘密武器 RingoJS!
Liwei Chou
 
Building a Location-based platform with MongoDB from Zero.
Ravi Teja
 
Drupal 7: What's In It For You?
karschsp
 
Getting Started with MongoDB
Michael Redlich
 
Intro to HTML5 Web Storage
dylanks
 
Database madness with_mongoengine_and_sql_alchemy
Jaime Buelta
 
DBIx::Class walkthrough @ bangalore pm
Sheeju Alex
 
Django - sql alchemy - jquery
Mohammed El Rafie Tarabay
 
Practical Use of MongoDB for Node.js
async_io
 
Hive jdbc
Bennie Schut
 
How to use MongoDB with CakePHP
ichikaway
 
Node.js - As a networking tool
Felix Geisendörfer
 
Sequelize
Tarek Raihan
 
Scalable vector ember
Matthew Beale
 
MySQL flexible schema and JSON for Internet of Things
Alexander Rubin
 
Node.js - A Quick Tour II
Felix Geisendörfer
 
20110514 mongo dbチューニング
Yuichi Matsuo
 
Geospatial Indexing and Querying with MongoDB
Grant Goodale
 
Introduction to the new official C# Driver developed by 10gen
MongoDB
 

Viewers also liked (15)

PDF
2012-09-17 - WDC12: Node.js & MongoDB
Johannes Hoppe
 
PDF
2012-10-12 - NoSQL in .NET - mit Redis und Mongodb
Johannes Hoppe
 
PDF
2013 02-26 - Software Tests with Mongo db
Johannes Hoppe
 
PDF
2017 - NoSQL Vorlesung Mosbach
Johannes Hoppe
 
PPTX
Ria 09 trends_and_technologies
Johannes Hoppe
 
PPTX
DMDW Lesson 08 - Further Data Mining Algorithms
Johannes Hoppe
 
PPTX
DMDW Lesson 01 - Introduction
Johannes Hoppe
 
PPTX
DMDW Lesson 05 + 06 + 07 - Data Mining Applied
Johannes Hoppe
 
PPTX
DMDW Lesson 03 - Data Warehouse Theory
Johannes Hoppe
 
PPTX
DMDW Lesson 04 - Data Mining Theory
Johannes Hoppe
 
PDF
2011-12-13 NoSQL aus der Praxis
Johannes Hoppe
 
PDF
2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Johannes Hoppe
 
PDF
2012-05-14 NoSQL in .NET - mit Redis und MongoDB
Johannes Hoppe
 
PDF
2012-01-31 NoSQL in .NET
Johannes Hoppe
 
PPTX
Exkurs: Save the pixel
Johannes Hoppe
 
2012-09-17 - WDC12: Node.js & MongoDB
Johannes Hoppe
 
2012-10-12 - NoSQL in .NET - mit Redis und Mongodb
Johannes Hoppe
 
2013 02-26 - Software Tests with Mongo db
Johannes Hoppe
 
2017 - NoSQL Vorlesung Mosbach
Johannes Hoppe
 
Ria 09 trends_and_technologies
Johannes Hoppe
 
DMDW Lesson 08 - Further Data Mining Algorithms
Johannes Hoppe
 
DMDW Lesson 01 - Introduction
Johannes Hoppe
 
DMDW Lesson 05 + 06 + 07 - Data Mining Applied
Johannes Hoppe
 
DMDW Lesson 03 - Data Warehouse Theory
Johannes Hoppe
 
DMDW Lesson 04 - Data Mining Theory
Johannes Hoppe
 
2011-12-13 NoSQL aus der Praxis
Johannes Hoppe
 
2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Johannes Hoppe
 
2012-05-14 NoSQL in .NET - mit Redis und MongoDB
Johannes Hoppe
 
2012-01-31 NoSQL in .NET
Johannes Hoppe
 
Exkurs: Save the pixel
Johannes Hoppe
 
Ad

Similar to 2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler) (20)

PDF
Mongodb my
Alexey Gaziev
 
PDF
MongoDB
SPBRUBY
 
PDF
Latinoware
kchodorow
 
KEY
Schema Design with MongoDB
rogerbodamer
 
PDF
Using Spring with NoSQL databases (SpringOne China 2012)
Chris Richardson
 
KEY
MongoDB, PHP and the cloud - php cloud summit 2011
Steven Francia
 
PDF
SQL? NoSQL? NewSQL?!? What's a Java developer to do? - PhillyETE 2012
Chris Richardson
 
PDF
mongodb-introduction
Tse-Ching Ho
 
PDF
Intro to MongoDB and datamodeling
rogerbodamer
 
PPT
Building Your First MongoDB App ~ Metadata Catalog
hungarianhc
 
KEY
MongoDB - Ruby document store that doesn't rhyme with ouch
Wynn Netherland
 
PDF
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
MongoSF
 
PDF
10gen Presents Schema Design and Data Modeling
DATAVERSITY
 
KEY
Schema design
christkv
 
KEY
Taming NoSQL with Spring Data
Sergi Almar i Graupera
 
PPTX
Webinar: Building Your First Application with MongoDB
MongoDB
 
ODP
MongoDB & PHP
Sanjeev Shrestha
 
PPTX
Schema design mongo_boston
MongoDB
 
PDF
MongoDB at FrozenRails
Mike Dirolf
 
Mongodb my
Alexey Gaziev
 
MongoDB
SPBRUBY
 
Latinoware
kchodorow
 
Schema Design with MongoDB
rogerbodamer
 
Using Spring with NoSQL databases (SpringOne China 2012)
Chris Richardson
 
MongoDB, PHP and the cloud - php cloud summit 2011
Steven Francia
 
SQL? NoSQL? NewSQL?!? What's a Java developer to do? - PhillyETE 2012
Chris Richardson
 
mongodb-introduction
Tse-Ching Ho
 
Intro to MongoDB and datamodeling
rogerbodamer
 
Building Your First MongoDB App ~ Metadata Catalog
hungarianhc
 
MongoDB - Ruby document store that doesn't rhyme with ouch
Wynn Netherland
 
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
MongoSF
 
10gen Presents Schema Design and Data Modeling
DATAVERSITY
 
Schema design
christkv
 
Taming NoSQL with Spring Data
Sergi Almar i Graupera
 
Webinar: Building Your First Application with MongoDB
MongoDB
 
MongoDB & PHP
Sanjeev Shrestha
 
Schema design mongo_boston
MongoDB
 
MongoDB at FrozenRails
Mike Dirolf
 
Ad

More from Johannes Hoppe (18)

PDF
Einführung in Angular 2
Johannes Hoppe
 
PDF
MDC kompakt 2014: Hybride Apps mit Cordova, AngularJS und Ionic
Johannes Hoppe
 
PDF
2012-06-25 - MapReduce auf Azure
Johannes Hoppe
 
PDF
2013-06-25 - HTML5 & JavaScript Security
Johannes Hoppe
 
PDF
2013-06-24 - Software Craftsmanship with JavaScript
Johannes Hoppe
 
PDF
2013-06-15 - Software Craftsmanship mit JavaScript
Johannes Hoppe
 
PDF
2013 05-03 - HTML5 & JavaScript Security
Johannes Hoppe
 
PDF
2013-02-21 - .NET UG Rhein-Neckar: JavaScript Best Practices
Johannes Hoppe
 
PDF
2012-10-16 - WebTechCon 2012: HTML5 & WebGL
Johannes Hoppe
 
PDF
2012-09-18 - HTML5 & WebGL
Johannes Hoppe
 
PDF
2012-04-12 - AOP .NET UserGroup Niederrhein
Johannes Hoppe
 
PPTX
2011-06-27 - AOP - .NET User Group Rhein Neckar
Johannes Hoppe
 
PDF
DMDW 8. Student Presentation - Groovy to MongoDB
Johannes Hoppe
 
PPTX
DMDW 5. Student Presentation - Pentaho Data Integration (Kettle)
Johannes Hoppe
 
PPTX
DMDW 7. Student Presentation - Pentaho Data Integration (Kettle)
Johannes Hoppe
 
PPTX
DMDW 9. Student Presentation - Java to MySQL
Johannes Hoppe
 
PPTX
DMDW 11. Student Presentation - JAVA to MongoDB
Johannes Hoppe
 
PPTX
DMDW 1. Student Presentation - Access 2007
Johannes Hoppe
 
Einführung in Angular 2
Johannes Hoppe
 
MDC kompakt 2014: Hybride Apps mit Cordova, AngularJS und Ionic
Johannes Hoppe
 
2012-06-25 - MapReduce auf Azure
Johannes Hoppe
 
2013-06-25 - HTML5 & JavaScript Security
Johannes Hoppe
 
2013-06-24 - Software Craftsmanship with JavaScript
Johannes Hoppe
 
2013-06-15 - Software Craftsmanship mit JavaScript
Johannes Hoppe
 
2013 05-03 - HTML5 & JavaScript Security
Johannes Hoppe
 
2013-02-21 - .NET UG Rhein-Neckar: JavaScript Best Practices
Johannes Hoppe
 
2012-10-16 - WebTechCon 2012: HTML5 & WebGL
Johannes Hoppe
 
2012-09-18 - HTML5 & WebGL
Johannes Hoppe
 
2012-04-12 - AOP .NET UserGroup Niederrhein
Johannes Hoppe
 
2011-06-27 - AOP - .NET User Group Rhein Neckar
Johannes Hoppe
 
DMDW 8. Student Presentation - Groovy to MongoDB
Johannes Hoppe
 
DMDW 5. Student Presentation - Pentaho Data Integration (Kettle)
Johannes Hoppe
 
DMDW 7. Student Presentation - Pentaho Data Integration (Kettle)
Johannes Hoppe
 
DMDW 9. Student Presentation - Java to MySQL
Johannes Hoppe
 
DMDW 11. Student Presentation - JAVA to MongoDB
Johannes Hoppe
 
DMDW 1. Student Presentation - Access 2007
Johannes Hoppe
 

Recently uploaded (20)

PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Digital Circuits, important subject in CS
contactparinay1
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 

2012-08-29 - NoSQL Bootcamp (Redis, RavenDB & MongoDB für .NET Entwickler)

  • 6. Daten 2002 2004 2006 2008 2010 2012
  • 12. Anforderungen an ein verteiltes System Consistency Konsistenz Partition Availability Tolerance Verfügbarkeit Ausfalltoleranz
  • 17. “Drum prüfe, wer sich ewig bindet.” Friedrich Schiller
  • 18.  ›  › › ›
  • 29. SET note1:title "Mittag" › SET note1:message "nicht vergessen" › KEYS note1:* › GET note1:title › DEL note1:title note1:message
  • 37. › › ›
  • 38. › › › ›
  • 40. › › › ›
  • 41. › › ›
  • 42. › ›
  • 43. › › ›
  • 44. › › ›
  • 47. “While being RESTful is a goal of the HTTP API, it is secondary to the goal of exposing easy to use and powerful functionality” Ayende Rahien on the HTTP API - http://ravendb.net/documentation/docs-http-api-restful
  • 48. › › › 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" }
  • 49. Classic Linq Style Lucene Style var notes = session var notes = session.Advanced .Query<Note>() .LuceneQuery<Note>() .Where(n => n.Category == “Important") .Where(“Category:Important") .ToArray(); .ToArray();
  • 58. 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
  • 63. – › use WebNote › db.Notes.save( { Title: 'Mittag', Message: 'nicht vergessen‘ } ); › db.Notes.save
  • 64. – 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();
  • 65. – › db.Notes.find(); › db.Notes.find({ Title: /Test/i }); › db.Notes.find( { "Categories.Color": "red"}).limit(1);
  • 66. – › db.Notes.update({Title: 'Test'}, {'$set': {Categories: []}}); › db.Notes.update({Title: 'Test'}, {'$push': { Categories: {Color: 'Red'} } });
  • 67. – › db.dropDatabase(); › db.Notes.drop(); › db.Notes.remove();
  • 89. use digg › db.stories.findOne();
  • 91. use digg; › db.people.update({name: 'Smith'}, {'$set': {interests: []}}); › db.people.update({name: 'Smith'}, {'$push': {interests: ['chess']}});
  • 95. map = function() { emit(this.user.name, {diggs: this.diggs, posts: 0}); }
  • 96. reduce = function(key, values) { var diggs = 0; var posts = 0; values.forEach(function(doc) { diggs += doc.diggs; posts += 1; }); return {diggs: diggs, posts: posts}; }
  • 97. db.stories.mapReduce(map, reduce, {out: 'digg_users'}); db.digg_users.find();
  • 104.
  • 115. NULL NULL NULL NULL NULL
  • 116. > 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 } } )
  • 118. 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" } ] }
  • 120. 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 } );
  • 122. // Jedes Produkt verlinkt die IDs der Kategorien products: { _id: 10, name: "Destination Moon", category_ids: [ 20, 30 ] }
  • 123. // 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 ] }
  • 124. // 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 } )
  • 126. // 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"}
  • 127. // 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 } )
  • 128. // 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}})