Download - 2012-01-31 NoSQL in .NET
![Page 1: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/1.jpg)
Veranstalter: Partner:
30.-31. JAN. 2012, MÜNCHEN
VISUAL STUDIO FÜR WINDOWS-ENTWICKLER
31.01.2012 Dipl.-Inf. (FH) Johannes Hoppe
in .NET mit RavenDB und MongoDB
![Page 3: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/3.jpg)
Not only SQL
01
![Page 4: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/4.jpg)
2002 2004 2006 2008 2010 2012
Daten
![Page 5: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/5.jpg)
Trend 1: wachsende Datenmengen
Trend 2: mehr Vernetzung (“web 2.0”)
Trend 3: mehr Individualisierung (weniger Struktur)
![Page 6: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/6.jpg)
![Page 7: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/7.jpg)
Scale-up Vertikale Skalierung
Server auf mehr Leistungsfähigkeit trimmen
![Page 8: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/8.jpg)
Scale-out horizontale Skalierung
Einfügen von Nodes (Rechnerknoten)
![Page 9: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/9.jpg)
verteilte und horizontale Skalierbarkeit
kein relationales Datenmodell (kein SQL)
schemafrei / schwache Schemarestriktionen
anderes Konsistenzmodell
![Page 10: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/10.jpg)
Schemafrei kein ALTER TABLE
kein Wartungsfenster *
Datenversionierung im Code!
* morgens ausschlafen
![Page 11: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/11.jpg)
Anforderungen
an ein verteiltes System
Consistency Konsistenz
AvailabilityVerfügbarkeit
Partition
Tolerance Ausfalltoleranz
![Page 12: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/12.jpg)
CAP Theorem › 2000: E. Brewer, N. Lynch
› You can satisfy
at most 2 out of the 3 requirements
![Page 13: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/13.jpg)
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
![Page 14: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/14.jpg)
Availability › System is “always on”, no downtime
› Node failure tolerance
– all clients can find some available replica
› Software/hardware upgrade tolerance
![Page 15: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/15.jpg)
Partition tolerance › System continues to function even when
split into disconnected subsets (network disruption)
› Not only for reads, but writes as well
![Page 16: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/16.jpg)
“Drum prüfe,
wer sich ewig bindet.” Friedrich Schiller
![Page 17: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/17.jpg)
Klassifizierung › Key-Value stores
› Document stores MongoDB & RavenDB
› Wide Column stores
› Graph-Datenbanken
› und viele weitere
![Page 18: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/18.jpg)
Tabellen Dokumente
02
![Page 19: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/19.jpg)
![Page 20: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/20.jpg)
https://webnote.codeplex.com
![Page 21: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/21.jpg)
![Page 22: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/22.jpg)
![Page 23: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/23.jpg)
MongoDB
03
![Page 24: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/24.jpg)
NoSQL
MongoDB Quick Reference Cards
http://www.10gen.com/reference
und zum Mitnehmen!
![Page 25: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/25.jpg)
“Deployment” › Standardverzeichnis erstellen:
c:\data\db
› Server-Start: mongod.exe
› Shell: mongo.exe
![Page 26: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/26.jpg)
![Page 27: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/27.jpg)
![Page 28: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/28.jpg)
BSON Master/Slave
JavaScript C# Driver
Sharding GNU AGPL
![Page 29: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/29.jpg)
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
![Page 30: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/30.jpg)
CRUD – Create
In der Shell
› use WebNote
› db.Notes.save( {Title: 'Mittag',
Message: 'nicht vergessen' });
So funktioniert der Befehl
› db.Notes.save
![Page 31: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/31.jpg)
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);
![Page 32: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/32.jpg)
CRUD – Update
› db.Notes.update({Title: 'Test'}, {'$set': {Categories: []}});
› db.Notes.update({Title: 'Test'},
{'$push': {Categories: { Color: 'Red' }}});
![Page 33: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/33.jpg)
CRUD – Delete
› db.dropDatabase();
› db.Notes.drop();
› db.Notes.remove();
![Page 34: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/34.jpg)
“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
![Page 35: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/35.jpg)
RavenDB
04
![Page 36: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/36.jpg)
NoSQL
Raven Db Documentation
http://ravendb.net/docs
![Page 37: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/37.jpg)
JSON * Transaktional
LINQ Lucene
100% .NET AGPL / dual
* Newtonsoft.Json.dll JSON DOM (Raven.Json)
![Page 38: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/38.jpg)
“Deployment” › Via NuGet
› Raven.Server.exe.config anpassen It’s safe by default!
› Server-Start: Raven.Server.exe
![Page 40: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/40.jpg)
Designed to “just work” › Fluent API
› Unit of Work Pattern
› Extensible – Plugin Support
![Page 41: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/41.jpg)
Safe by default › praktische defaults
› z.B. Limited page size – kein unabsichtliches SELECT *
› ACID
› Client / Server
› Cross shard
![Page 42: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/42.jpg)
Indexe › Als Linq Queries definiert
› Indiziert mit Lucene .NET
![Page 43: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/43.jpg)
APIs › Native .NET Client API
› HTTP API (Pseudo REST)
![Page 44: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/44.jpg)
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" }
![Page 45: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/45.jpg)
Lucene Style Queries
Lucene Style var notes = session.Advanced .LuceneQuery<Note>() .Where(“Category:Important") .ToArray();
Classic Linq Style var notes = session .Query<Note>() .Where(n => n.Category == “Important") .ToArray();
![Page 46: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/46.jpg)
NoSQL: Einstieg in die Welt nicht-
relationaler Web 2.0 Datenbanken
MongoDB:
The Definitive Guide
MongoDB in Action RavenDB Mythology Documentation https://s3.amazonaws.com/
daily-builds/RavenDBMythology-11.pdf
![Page 48: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/48.jpg)
Veranstalter: Partner:
30.-31. JAN. 2012, MÜNCHEN
VISUAL STUDIO FÜR WINDOWS-ENTWICKLER
FRAGEN?
![Page 49: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/49.jpg)
Veranstalter: Partner:
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
![Page 50: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/50.jpg)
Veranstalter: Partner:
30.-31. JAN. 2012, MÜNCHEN
VISUAL STUDIO FÜR WINDOWS-ENTWICKLER
Hat Ihnen mein Vortrag gefallen?
Ich freue mich auf Ihr Feedback!
![Page 51: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/51.jpg)
Veranstalter: Partner:
30.-31. JAN. 2012, MÜNCHEN
VISUAL STUDIO FÜR WINDOWS-ENTWICKLER
Vielen Dank Johannes Hoppe
![Page 53: 2012-01-31 NoSQL in .NET](https://reader036.vdocuments.net/reader036/viewer/2022070304/54c6f7004a7959c5088b4594/html5/thumbnails/53.jpg)
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