SlideShare a Scribd company logo
1 of 53
Download to read offline
VISUAL STUDIO FÜR WINDOWS-ENTWICKLER
30.-31. JAN. 2012, MÜNCHEN




                                  in .NET mit RavenDB und MongoDB

31.01.2012
Dipl.-Inf. (FH) Johannes Hoppe



Partner:                                           Veranstalter:
Johannes Hoppe
  .NET Webentwickler
 www.johanneshoppe.de
01
Not only SQL
Daten




 2002   2004   2006   2008   2010   2012
Trend 1: wachsende Datenmengen
Trend 2: mehr Vernetzung (“web 2.0”)
Trend 3: mehr Individualisierung (weniger Struktur)
Scale-up
Vertikale Skalierung
Server auf mehr Leistungsfähigkeit trimmen
Scale-out
horizontale Skalierung
Einfügen von Nodes (Rechnerknoten)
verteilte und horizontale Skalierbarkeit
kein relationales Datenmodell (kein SQL)
schemafrei / schwache Schemarestriktionen
anderes Konsistenzmodell
Schemafrei
kein ALTER TABLE
kein Wartungsfenster *
Datenversionierung im Code!




* morgens ausschlafen
Anforderungen
an ein verteiltes System




                           Consistency
                                  Konsistenz




               Partition
                                           Availability
               Tolerance                       Verfügbarkeit
                Ausfalltoleranz
CAP Theorem
›   2000: E. Brewer, N. Lynch
›   You can satisfy

    at most 2 out of the 3 requirements
Consistency
›   The system is in a consistent state after an operation
›   All clients see the same data
›   Strong consistency (ACID)
    vs. eventual consistency (BASE)



    ACID: Atomicity, Consistency, Isolation and Durability
    BASE: Basically Available, Soft state, Eventually consistent
Availability
›   System is “always on”, no downtime
›   Node failure tolerance
    – all clients can find some available replica
›   Software/hardware upgrade tolerance
Partition tolerance
›   System continues to function even when
    split into disconnected subsets (network disruption)
›   Not only for reads, but writes as well
“Drum prüfe,
wer sich ewig bindet.”
Friedrich Schiller
Klassifizierung
›   Key-Value stores
›   Document stores  MongoDB & RavenDB
›   Wide Column stores
›   Graph-Datenbanken
›   und viele weitere
02
Tabellen  Dokumente
https://webnote.codeplex.com
03
MongoDB
NoSQL




   MongoDB Quick Reference Cards
   http://www.10gen.com/reference
   und zum Mitnehmen!
“Deployment”
›   Standardverzeichnis erstellen:
    c:datadb
›   Server-Start: mongod.exe
›   Shell: mongo.exe
BSON         Master/Slave
JavaScript   C# Driver
Sharding     GNU AGPL
JSON  BSON
All JSON documents are stored in a binary
format called BSON. BSON supports a
richer set of types than JSON.
http://bsonspec.org
CRUD – Create
In der Shell
› use WebNote
› db.Notes.save( {Title: 'Mittag',
                  Message: 'nicht vergessen' });

So funktioniert der Befehl
› db.Notes.save
CRUD – Read
Queries werden ebenso im Dokument-Stil spezifiziert

›   db.Notes.find();
›   db.Notes.find({ Title: /Test/i });
›   db.Notes.find({ "Categories.Color": "red"}).limit(1);
CRUD – Update
›   db.Notes.update({Title: 'Test'}, {'$set': {Categories: []}});
›   db.Notes.update({Title: 'Test'},
                     {'$push': {Categories: { Color: 'Red' }}});
CRUD – Delete
›   db.dropDatabase();
›   db.Notes.drop();
›   db.Notes.remove();
“Map Reduce is the Uzi of aggregation
tools. Everything described with count,
distinct and group can be done with
MapReduce, and more.”
Kristina Chadorow, Michael Dirolf in MongoDB – The Definitive Guide
04
RavenDB
NoSQL




   Raven Db Documentation
   http://ravendb.net/docs
JSON *                           Transaktional
LINQ                             Lucene
100% .NET                        AGPL / dual


* Newtonsoft.Json.dll  JSON DOM (Raven.Json)
“Deployment”
›   Via NuGet
›   Raven.Server.exe.config anpassen
    It’s safe by default!

›   Server-Start: Raven.Server.exe
Designed to “just work”
›   Fluent API
›   Unit of Work Pattern
›   Extensible – Plugin Support
Safe by default
›   praktische defaults
    ›   z.B. Limited page size – kein unabsichtliches SELECT *
›   ACID
    ›   Client / Server
    ›   Cross shard
Indexe
›   Als Linq Queries definiert
›   Indiziert mit Lucene .NET
APIs
›   Native .NET Client API
›   HTTP API (Pseudo REST)
HTTP API
›   Caching
›   E-Tags
›   Lucene Queries möglich

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"
}
Lucene Style Queries

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();
NoSQL: Einstieg in die Welt nicht-      MongoDB:
relationaler Web 2.0 Datenbanken        The Definitive Guide




 RavenDB Mythology Documentation        MongoDB in Action
 https://s3.amazonaws.com/
 daily-builds/RavenDBMythology-11.pdf
https://webnote.codeplex.com/
VISUAL STUDIO FÜR WINDOWS-ENTWICKLER
30.-31. JAN. 2012, MÜNCHEN




                    FRAGEN?

Partner:                                       Veranstalter:
Wir sehen uns wieder!

                 Advanced Developers Conference C++
                    3. – 4. Mai 2012, Zugspitzland
                    Development for C++ Professionals!
                     www.adcpp.de



                 SharePoint Konferenz in Wien
                     19. – 20. Juni 2012, Wien
                     ppedv-Konferenz in Kooperation mit
                     Microsoft Österreich
                     www.SharePointKonferenz.at




Partner:                                          Veranstalter:
VISUAL STUDIO FÜR WINDOWS-ENTWICKLER
30.-31. JAN. 2012, MÜNCHEN




           Hat Ihnen mein Vortrag gefallen?
           Ich freue mich auf Ihr Feedback!




Partner:                                       Veranstalter:
VISUAL STUDIO FÜR WINDOWS-ENTWICKLER
30.-31. JAN. 2012, MÜNCHEN




                 Vielen Dank
                             Johannes Hoppe




Partner:                                           Veranstalter:
https://webnote.codeplex.com/
Bildnachweise
Ausgewählter Ordner © Spectral-Design – Fotolia.com
Warnhinweis-Schild © Sascha Tiebel – Fotolia.com
Liste abhaken © Dirk Schumann – Fotolia.com
Stressed businessman © Selecstock – Fotolia.com

More Related Content

Viewers also liked

2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
Johannes Hoppe
 
2012-10-12 - NoSQL in .NET - mit Redis und Mongodb
2012-10-12 - NoSQL in .NET - mit Redis und Mongodb2012-10-12 - NoSQL in .NET - mit Redis und Mongodb
2012-10-12 - NoSQL in .NET - mit Redis und Mongodb
Johannes Hoppe
 
DMDW Extra Lesson - NoSql and MongoDB
DMDW  Extra Lesson - NoSql and MongoDBDMDW  Extra Lesson - NoSql and MongoDB
DMDW Extra Lesson - NoSql and MongoDB
Johannes Hoppe
 

Viewers also liked (20)

2012-03-20 - Getting started with Node.js and MongoDB on MS Azure
2012-03-20 - Getting started with Node.js and MongoDB on MS Azure2012-03-20 - Getting started with Node.js and MongoDB on MS Azure
2012-03-20 - Getting started with Node.js and MongoDB on MS Azure
 
2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
2012-05-10 - UG Karlsruhe: NoSQL in .NET - mit Redis und MongoDB
 
2011-12-13 NoSQL aus der Praxis
2011-12-13 NoSQL aus der Praxis2011-12-13 NoSQL aus der Praxis
2011-12-13 NoSQL aus der Praxis
 
2012-05-14 NoSQL in .NET - mit Redis und MongoDB
2012-05-14 NoSQL in .NET - mit Redis und MongoDB2012-05-14 NoSQL in .NET - mit Redis und MongoDB
2012-05-14 NoSQL in .NET - mit Redis und MongoDB
 
2012-09-17 - WDC12: Node.js & MongoDB
2012-09-17 - WDC12: Node.js & MongoDB2012-09-17 - WDC12: Node.js & MongoDB
2012-09-17 - WDC12: Node.js & MongoDB
 
2012-10-12 - NoSQL in .NET - mit Redis und Mongodb
2012-10-12 - NoSQL in .NET - mit Redis und Mongodb2012-10-12 - NoSQL in .NET - mit Redis und Mongodb
2012-10-12 - NoSQL in .NET - mit Redis und Mongodb
 
2013 02-26 - Software Tests with Mongo db
2013 02-26 - Software Tests with Mongo db2013 02-26 - Software Tests with Mongo db
2013 02-26 - Software Tests with Mongo db
 
DMDW Extra Lesson - NoSql and MongoDB
DMDW  Extra Lesson - NoSql and MongoDBDMDW  Extra Lesson - NoSql and MongoDB
DMDW Extra Lesson - NoSql and MongoDB
 
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)
 
2015 02-09 - NoSQL Vorlesung Mosbach
2015 02-09 - NoSQL Vorlesung Mosbach2015 02-09 - NoSQL Vorlesung Mosbach
2015 02-09 - NoSQL Vorlesung Mosbach
 
Noah Banned 20 Games For Doping
Noah Banned 20 Games For DopingNoah Banned 20 Games For Doping
Noah Banned 20 Games For Doping
 
Company Profile Investor Deck
Company Profile Investor DeckCompany Profile Investor Deck
Company Profile Investor Deck
 
The Lean Investor (Dallas, Nov 2014)
The Lean Investor (Dallas, Nov 2014)The Lean Investor (Dallas, Nov 2014)
The Lean Investor (Dallas, Nov 2014)
 
Athletes Warned About Potentially Dangerous DMAA By MHRA
Athletes Warned About Potentially Dangerous DMAA By MHRAAthletes Warned About Potentially Dangerous DMAA By MHRA
Athletes Warned About Potentially Dangerous DMAA By MHRA
 
Symantec investor presentation august 2016
Symantec investor presentation august 2016Symantec investor presentation august 2016
Symantec investor presentation august 2016
 
500 Startups Update + VC 101 (Investor Education)
500 Startups Update + VC 101 (Investor Education)500 Startups Update + VC 101 (Investor Education)
500 Startups Update + VC 101 (Investor Education)
 
Scotia Howard Weil Energy Conference
Scotia Howard Weil Energy ConferenceScotia Howard Weil Energy Conference
Scotia Howard Weil Energy Conference
 
Symantec investor presentation february 2017
Symantec investor presentation february 2017Symantec investor presentation february 2017
Symantec investor presentation february 2017
 
Symantec investor presentation march 2016
Symantec investor presentation march 2016 Symantec investor presentation march 2016
Symantec investor presentation march 2016
 
Symantec investor presentation may 2015 final
Symantec investor presentation may 2015 finalSymantec investor presentation may 2015 final
Symantec investor presentation may 2015 final
 

Similar to 2012-01-31 NoSQL in .NET

Similar to 2012-01-31 NoSQL in .NET (20)

mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlagen
 
Top 10 Internet Trends 2007
Top 10 Internet Trends 2007Top 10 Internet Trends 2007
Top 10 Internet Trends 2007
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core Applications
 
BASTA! Spring 2018 - Architekturen für .NET Core-Anwendungen
BASTA! Spring 2018 - Architekturen für .NET Core-AnwendungenBASTA! Spring 2018 - Architekturen für .NET Core-Anwendungen
BASTA! Spring 2018 - Architekturen für .NET Core-Anwendungen
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
 
Ec2009 Templates
Ec2009 TemplatesEc2009 Templates
Ec2009 Templates
 
Bob the Builder - Build & Deploy von ADF Enterprise Anwendungen
Bob the Builder - Build & Deploy von ADF Enterprise AnwendungenBob the Builder - Build & Deploy von ADF Enterprise Anwendungen
Bob the Builder - Build & Deploy von ADF Enterprise Anwendungen
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
 
OSDC 2013 | Configuration Management with Verbosy by Eric Lippmann
OSDC 2013 | Configuration Management with Verbosy by Eric LippmannOSDC 2013 | Configuration Management with Verbosy by Eric Lippmann
OSDC 2013 | Configuration Management with Verbosy by Eric Lippmann
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
JavaScript Architektur
JavaScript ArchitekturJavaScript Architektur
JavaScript Architektur
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurt
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 
Roadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & FeaturesRoadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & Features
 
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
 

More from Johannes Hoppe

2012-10-16 - WebTechCon 2012: HTML5 & WebGL
2012-10-16 - WebTechCon 2012: HTML5 & WebGL2012-10-16 - WebTechCon 2012: HTML5 & WebGL
2012-10-16 - WebTechCon 2012: HTML5 & WebGL
Johannes Hoppe
 
2012-04-12 - AOP .NET UserGroup Niederrhein
2012-04-12 - AOP .NET UserGroup Niederrhein2012-04-12 - AOP .NET UserGroup Niederrhein
2012-04-12 - AOP .NET UserGroup Niederrhein
Johannes Hoppe
 
2011-06-27 - AOP - .NET User Group Rhein Neckar
2011-06-27 - AOP - .NET User Group Rhein Neckar2011-06-27 - AOP - .NET User Group Rhein Neckar
2011-06-27 - AOP - .NET User Group Rhein Neckar
Johannes Hoppe
 
DMDW 5. Student Presentation - Pentaho Data Integration (Kettle)
DMDW 5. Student Presentation - Pentaho Data Integration (Kettle)DMDW 5. Student Presentation - Pentaho Data Integration (Kettle)
DMDW 5. Student Presentation - Pentaho Data Integration (Kettle)
Johannes Hoppe
 

More from Johannes Hoppe (20)

2017 - NoSQL Vorlesung Mosbach
2017 - NoSQL Vorlesung Mosbach2017 - NoSQL Vorlesung Mosbach
2017 - NoSQL Vorlesung Mosbach
 
NoSQL - Hands on
NoSQL - Hands onNoSQL - Hands on
NoSQL - Hands on
 
Einführung in Angular 2
Einführung in Angular 2Einführung in Angular 2
Einführung in Angular 2
 
MDC kompakt 2014: Hybride Apps mit Cordova, AngularJS und Ionic
MDC kompakt 2014: Hybride Apps mit Cordova, AngularJS und IonicMDC kompakt 2014: Hybride Apps mit Cordova, AngularJS und Ionic
MDC kompakt 2014: Hybride Apps mit Cordova, AngularJS und Ionic
 
2012-06-25 - MapReduce auf Azure
2012-06-25 - MapReduce auf Azure2012-06-25 - MapReduce auf Azure
2012-06-25 - MapReduce auf Azure
 
2013-06-25 - HTML5 & JavaScript Security
2013-06-25 - HTML5 & JavaScript Security2013-06-25 - HTML5 & JavaScript Security
2013-06-25 - HTML5 & JavaScript Security
 
2013-06-24 - Software Craftsmanship with JavaScript
2013-06-24 - Software Craftsmanship with JavaScript2013-06-24 - Software Craftsmanship with JavaScript
2013-06-24 - Software Craftsmanship with JavaScript
 
2013-06-15 - Software Craftsmanship mit JavaScript
2013-06-15 - Software Craftsmanship mit JavaScript2013-06-15 - Software Craftsmanship mit JavaScript
2013-06-15 - Software Craftsmanship mit JavaScript
 
2013 05-03 - HTML5 & JavaScript Security
2013 05-03 -  HTML5 & JavaScript Security2013 05-03 -  HTML5 & JavaScript Security
2013 05-03 - HTML5 & JavaScript Security
 
2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade2013-03-23 - NoSQL Spartakiade
2013-03-23 - NoSQL Spartakiade
 
2013-02-21 - .NET UG Rhein-Neckar: JavaScript Best Practices
2013-02-21 - .NET UG Rhein-Neckar: JavaScript Best Practices2013-02-21 - .NET UG Rhein-Neckar: JavaScript Best Practices
2013-02-21 - .NET UG Rhein-Neckar: JavaScript Best Practices
 
2012-10-16 - WebTechCon 2012: HTML5 & WebGL
2012-10-16 - WebTechCon 2012: HTML5 & WebGL2012-10-16 - WebTechCon 2012: HTML5 & WebGL
2012-10-16 - WebTechCon 2012: HTML5 & WebGL
 
2012-09-18 - HTML5 & WebGL
2012-09-18 - HTML5 & WebGL2012-09-18 - HTML5 & WebGL
2012-09-18 - HTML5 & WebGL
 
2012-04-12 - AOP .NET UserGroup Niederrhein
2012-04-12 - AOP .NET UserGroup Niederrhein2012-04-12 - AOP .NET UserGroup Niederrhein
2012-04-12 - AOP .NET UserGroup Niederrhein
 
2011-06-27 - AOP - .NET User Group Rhein Neckar
2011-06-27 - AOP - .NET User Group Rhein Neckar2011-06-27 - AOP - .NET User Group Rhein Neckar
2011-06-27 - AOP - .NET User Group Rhein Neckar
 
DMDW 8. Student Presentation - Groovy to MongoDB
DMDW 8. Student Presentation - Groovy to MongoDBDMDW 8. Student Presentation - Groovy to MongoDB
DMDW 8. Student Presentation - Groovy to MongoDB
 
DMDW 5. Student Presentation - Pentaho Data Integration (Kettle)
DMDW 5. Student Presentation - Pentaho Data Integration (Kettle)DMDW 5. Student Presentation - Pentaho Data Integration (Kettle)
DMDW 5. Student Presentation - Pentaho Data Integration (Kettle)
 
DMDW 7. Student Presentation - Pentaho Data Integration (Kettle)
DMDW 7. Student Presentation - Pentaho Data Integration (Kettle)DMDW 7. Student Presentation - Pentaho Data Integration (Kettle)
DMDW 7. Student Presentation - Pentaho Data Integration (Kettle)
 
DMDW 9. Student Presentation - Java to MySQL
DMDW 9. Student Presentation - Java to MySQLDMDW 9. Student Presentation - Java to MySQL
DMDW 9. Student Presentation - Java to MySQL
 
DMDW 11. Student Presentation - JAVA to MongoDB
DMDW 11. Student Presentation - JAVA to MongoDBDMDW 11. Student Presentation - JAVA to MongoDB
DMDW 11. Student Presentation - JAVA to MongoDB
 

2012-01-31 NoSQL in .NET

  • 1. VISUAL STUDIO FÜR WINDOWS-ENTWICKLER 30.-31. JAN. 2012, MÜNCHEN in .NET mit RavenDB und MongoDB 31.01.2012 Dipl.-Inf. (FH) Johannes Hoppe Partner: Veranstalter:
  • 2. Johannes Hoppe .NET Webentwickler www.johanneshoppe.de
  • 4. Daten 2002 2004 2006 2008 2010 2012
  • 5. Trend 1: wachsende Datenmengen Trend 2: mehr Vernetzung (“web 2.0”) Trend 3: mehr Individualisierung (weniger Struktur)
  • 6.
  • 7. Scale-up Vertikale Skalierung Server auf mehr Leistungsfähigkeit trimmen
  • 9. verteilte und horizontale Skalierbarkeit kein relationales Datenmodell (kein SQL) schemafrei / schwache Schemarestriktionen anderes Konsistenzmodell
  • 10. Schemafrei kein ALTER TABLE kein Wartungsfenster * Datenversionierung im Code! * morgens ausschlafen
  • 11. Anforderungen an ein verteiltes System Consistency Konsistenz Partition Availability Tolerance Verfügbarkeit Ausfalltoleranz
  • 12. CAP Theorem › 2000: E. Brewer, N. Lynch › You can satisfy at most 2 out of the 3 requirements
  • 13. Consistency › The system is in a consistent state after an operation › All clients see the same data › Strong consistency (ACID) vs. eventual consistency (BASE) ACID: Atomicity, Consistency, Isolation and Durability BASE: Basically Available, Soft state, Eventually consistent
  • 14. Availability › System is “always on”, no downtime › Node failure tolerance – all clients can find some available replica › Software/hardware upgrade tolerance
  • 15. Partition tolerance › System continues to function even when split into disconnected subsets (network disruption) › Not only for reads, but writes as well
  • 16. “Drum prüfe, wer sich ewig bindet.” Friedrich Schiller
  • 17. Klassifizierung › Key-Value stores › Document stores  MongoDB & RavenDB › Wide Column stores › Graph-Datenbanken › und viele weitere
  • 19.
  • 21.
  • 22.
  • 24. NoSQL MongoDB Quick Reference Cards http://www.10gen.com/reference und zum Mitnehmen!
  • 25. “Deployment” › Standardverzeichnis erstellen: c:datadb › Server-Start: mongod.exe › Shell: mongo.exe
  • 26.
  • 27.
  • 28. BSON Master/Slave JavaScript C# Driver Sharding GNU AGPL
  • 29. JSON  BSON All JSON documents are stored in a binary format called BSON. BSON supports a richer set of types than JSON. http://bsonspec.org
  • 30. CRUD – Create In der Shell › use WebNote › db.Notes.save( {Title: 'Mittag', Message: 'nicht vergessen' }); So funktioniert der Befehl › db.Notes.save
  • 31. CRUD – Read Queries werden ebenso im Dokument-Stil spezifiziert › db.Notes.find(); › db.Notes.find({ Title: /Test/i }); › db.Notes.find({ "Categories.Color": "red"}).limit(1);
  • 32. CRUD – Update › db.Notes.update({Title: 'Test'}, {'$set': {Categories: []}}); › db.Notes.update({Title: 'Test'}, {'$push': {Categories: { Color: 'Red' }}});
  • 33. CRUD – Delete › db.dropDatabase(); › db.Notes.drop(); › db.Notes.remove();
  • 34. “Map Reduce is the Uzi of aggregation tools. Everything described with count, distinct and group can be done with MapReduce, and more.” Kristina Chadorow, Michael Dirolf in MongoDB – The Definitive Guide
  • 36. NoSQL Raven Db Documentation http://ravendb.net/docs
  • 37. JSON * Transaktional LINQ Lucene 100% .NET AGPL / dual * Newtonsoft.Json.dll  JSON DOM (Raven.Json)
  • 38. “Deployment” › Via NuGet › Raven.Server.exe.config anpassen It’s safe by default! › Server-Start: Raven.Server.exe
  • 39.
  • 40. Designed to “just work” › Fluent API › Unit of Work Pattern › Extensible – Plugin Support
  • 41. Safe by default › praktische defaults › z.B. Limited page size – kein unabsichtliches SELECT * › ACID › Client / Server › Cross shard
  • 42. Indexe › Als Linq Queries definiert › Indiziert mit Lucene .NET
  • 43. APIs › Native .NET Client API › HTTP API (Pseudo REST)
  • 44. HTTP API › Caching › E-Tags › Lucene Queries möglich 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" }
  • 45. Lucene Style Queries 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();
  • 46. NoSQL: Einstieg in die Welt nicht- MongoDB: relationaler Web 2.0 Datenbanken The Definitive Guide RavenDB Mythology Documentation MongoDB in Action https://s3.amazonaws.com/ daily-builds/RavenDBMythology-11.pdf
  • 48. VISUAL STUDIO FÜR WINDOWS-ENTWICKLER 30.-31. JAN. 2012, MÜNCHEN FRAGEN? Partner: Veranstalter:
  • 49. Wir sehen uns wieder! Advanced Developers Conference C++ 3. – 4. Mai 2012, Zugspitzland Development for C++ Professionals! www.adcpp.de SharePoint Konferenz in Wien 19. – 20. Juni 2012, Wien ppedv-Konferenz in Kooperation mit Microsoft Österreich www.SharePointKonferenz.at Partner: Veranstalter:
  • 50. VISUAL STUDIO FÜR WINDOWS-ENTWICKLER 30.-31. JAN. 2012, MÜNCHEN Hat Ihnen mein Vortrag gefallen? Ich freue mich auf Ihr Feedback! Partner: Veranstalter:
  • 51. VISUAL STUDIO FÜR WINDOWS-ENTWICKLER 30.-31. JAN. 2012, MÜNCHEN Vielen Dank Johannes Hoppe Partner: Veranstalter:
  • 53. Bildnachweise Ausgewählter Ordner © Spectral-Design – Fotolia.com Warnhinweis-Schild © Sascha Tiebel – Fotolia.com Liste abhaken © Dirk Schumann – Fotolia.com Stressed businessman © Selecstock – Fotolia.com