SlideShare una empresa de Scribd logo
1 de 115
Descargar para leer sin conexión
Yes zu NoSQL mit MongoDB
Für .NET-Entwickler
Gregor Biswanger | Freier Berater, Trainer, Autor und Sprecher
about.me/gregor.biswanger
Über mich
▪ Freier Berater, Trainer und Autor
▪ Schwerpunkte: Softwarearchitektur, Web und
Cross-Plattform Entwicklung mit JavaScript
▪ Technologieberater für die Intel Developer Zone
▪ Internationaler Sprecher auf Konferenzen und
User Groups
▪ Freier Autor für heise.de, dotnetpro,
WindowsDeveloper und viele weitere
Fachmagazine
▪ Video-Trainer bei video2brain und Microsoft
Gregor Biswanger
Microsoft MVP, Intel Black Belt &
Intel Software Innovator
cross-platform-blog.de
about.me/gregor.biswanger
Unser Reiseplan
▪ Einstieg in MongoDB mit C#
▪ Immobilien App in ASP.NET Core
▪ Verbindung aufbauen
▪ Dokumente erzeugen
▪ Speichern und Verändern
▪ Abfragen
▪ GridFS
▪ LINQ-Support
▪ Fluent Aggregation API
▪ CRUD
▪ Eventing
▪ Joins
Einstieg in
MongoDB mit C#
Die ersten Schritte
Was ist MongoDB?
▪ Steht für das Englische Wort: humongous
(Enorm)
▪ Eine Open-Source Datenbank
▪ Veröffentlicht 2009
▪ Eine dokumentenorientierte NoSQL-
Datenbank
▪ Die Dokumente basieren auf JSON/BSON
▪ Läuft auf Windows, Mac und Linux
▪ MongoDB ist mit offiziellen Treibern
ausgestattet für C, C++, C#, Haskell, Java,
JavaScript, Lisp, Perl, PHP, Python, Ruby und
Scala
▪ Bester Entwickler-Komfort ist mit JavaScript
(Node.js)
Download
mongodb.org
Installation unter Windows
▪ MongoDB kann ohne
Abhängigkeiten direkt
heruntergeladen und
ausgeführt werden
▪ http://www.mongodb.com
▪ Installation wird über
einen Installer
empfohlen, für
automatisches festlegen
vom Pfad etc.
▪ Empfohlen wird für das
Produktivsystem nur die
64-Bit Version
Installation über den Paketmanager (Linux, Ubuntu)
1. Paketmanager Katalog updaten:
sudo apt-get update
2. MongoDB Paket installieren:
sudo apt-get install –y mongodb
Der Mongo Daemon
▪ Ist der MongoDB Service
▪ Wird ausgeführt über mongod (Linux) oder mongod.exe (Windows)
▪ Kann direkt ausgeführt werden oder benötige Installation von
Frameworks etc.
▪ Standardverzeichnis für die DB:
▪ Windows: „datadb“
▪ Linux: „/data/db“ – Ubuntu „/var/lib/mongodb“
▪ Standard Port: 27017
Die Mongo Shell
▪ Ein CLI-Tool um interaktiv auf die MongoDB
zugreifen zu können
▪ Datenzugriff
▪ Administration
▪ Wird ausgeführt über mongo (Linux) oder
mongo.exe (Windows)
▪ Interaktives JavaScript Interface
▪ Läuft auf der JavaScript-Engine SpiderMonkey (Mozilla)
▪ JavaScript-Dateien können ebenfalls als
automatisierte Script-Dateien hinterlegt werden
Robo 3T
▪ Kostenloses Verwaltungstool für
den Desktop
▪ Hieß früher Robomongo
▪ Läuft Cross-Plattform:
Windows, Mac und Linux
▪ Als Portable oder über Setup
▪ Studio 3T ist die
kostenpflichtige Enterprise
Version
Download
robomongo.org
Aufbau der MongoDB Datenstruktur
database
tables
rows
columns
database
collections
documents (BSON)
fields
SQL Terms / Konzepte MongoDB Terms / Konzepte
Identifizierung
▪ Die wichtigste Regel für Dokumente: Sie benötigen ein _id Feld
▪ Unterstütze Datentypen als ID:
▪ Number
▪ String
▪ Object
▪ ISODate()
▪ Nicht Unterstützer Datentyp:
▪ Array (Obwohl es auch vom Typ Object ist)
ObjectId
▪ Wenn kein _id Feld definiert
wurde, wird automatisch eine
ID mit der ObjectId-Funktion
festgelegt
▪ Eine mit ObjectId definierte ID,
beinhaltet einen Timestamp
▪ Das erspart ein zusätzliches
Feld wie z.B. CreatedTime
> db.foo.save({ name: "Max Mustermann" });
WriteResult({ "nInserted" : 1 })
> db.foo.find()
{ "_id" : ObjectId("5b0213dc7bb4413b6883cb05"),
"name" : "Max Mustermann" }
> db.foo.find()[0]._id.getTimestamp()
ISODate("2018-05-21T00:33:32Z")
Support für C#
▪ Der Mongo C# Driver ist die offizielle MongoDB API für C#
▪ NuGet MongoDB.Driver
▪ Open-Source auf GitHub
▪ https://github.com/mongodb/mongo-csharp-driver
▪ Support für
▪ Native Kommandos via Fluent Aggregation API
▪ LINQ
▪ Events
▪ GridFS
▪ Async-Await Support
Dokumentation
http://mongodb.github.io/mongo-csharp-driver/
Verbindung
aufbauen
Die ersten Schritte
Ein neues Projekt anlegen
Den Mongo C# Treiber über
NuGet installieren
Eine Klasse hinzufügen
Ermöglicht den Zugriff auf die
Datenbank und die Collections
Dokumente
erzeugen
Von POCO zu BSON
Dokument-Serialisierung
Client Server
BSON
POCO
BSON
Dokument
JSON
Eine Klasse hinzufügen
Datenklasse mit
Metainformationen
Speichern und
Verändern
Die Fütterungszeit für Mongo
Ermöglicht den Zugriff auf die
Datenbank und die Collections
Eine Klasse hinzufügen
DTO für das Formular
Eine Razor Page hinzufügen
Die Code-Behind-Datei
von der Razor-Page
Die View von der
Razor-Page
Das Formular für ein
neues Mietobjekt
Die Daten in der
Datenbank
Eine Razor Page hinzufügen
Eine Übersicht aller
Mietobjekte
Eine Klasse hinzufügen
Entity für die
Preisänderung
Eine Klasse hinzufügen
DTO für das
Formular
Eine Razor Page hinzufügen
{
"$set": {
"Age": 54
}
}
Native Mongo QueryMongo C# Driver
{
"$push": {
"Adjustments": [{
"OldPrice": 100.0,
"NewPrice": 200.0,
"Reason": "…"
}]
},
"$set": {
"Price": 200.0
}
}
Native Mongo QueryMongo C# Driver
Replace oder Update?
▪ Für OOP-Entwickler ist das einfache Ersetzen beliebt
▪ Beim Ersetzen wird das Dokument erst geladen, verändert
und abgespeichert
▪ Beim Update wird direkt beim Datensatz der Wert verändert
▪ Ein Update ist daher wesentlich Performanter
▪ Ein Update sorgt ebenfalls für stabilere Datenzustände
(Verringert Concurrency-Probleme)
Abfragen Haste mal nen Datensatz?
GridFS Mit Binären-Datensätzen arbeiten
Eine Razor Page hinzufügen
LINQ Denken in LINQ!
LINQ Support
▪ Die AsQueryable-Methode erweitert eine MongoCollection um die
LINQ-Funktionalität
▪ LINQ-Befehle werden direkt als native Aggregation-Befehle
übersetzt
▪ Ideal für komplexe Abfragen
▪ http://mongodb.github.io/mongo-csharp-driver/2.7/reference/driver/crud/linq/
aggregate{
aggregate:"rentals",
pipeline:[
{
$project:{
PriceRange:{
$subtract:[
"$Price",
{
$mod:[
"$Price",
500.0
]
}
]
},
_id:0
}
},
...
...
{
$group:{
_id:"$PriceRange",
__agg0:{
$sum:1
}
}
},
{
$project:{
GroupPriceRange:"$_id",
Count:"$__agg0",
_id:0
}
},
{
$sort:{
GroupPriceRange:1
}
}
],
cursor:{
},
$db:"realestate"
}
Generierter Abfragecode
Fluent
Aggregation API
Native Kommandos, ganz einfach!
Die Fluent Aggregation API
▪ Die Aggregate-Methode erweitert eine MongoCollection um
weitere Extension-Methods, die direkt hintereinander Aufgerufen
werden können
▪ Diese basieren auf den gleichen nativen Mongo-Operatoren
▪ Project, Group, SortBy, Match, Limit, Skip, Unwind usw.
▪ Ideal für komplexe Abfragen
aggregate{
aggregate:"rentals",
pipeline:[
{
$project:{
PriceRange:{
$subtract:[
"$Price",
{
$mod:[
"$Price",
500.0
]
}
]
},
_id:0
}
},
...
...
{
$group:{
_id:"$PriceRange",
Count:{
$sum:1
}
}
},
{
$sort:{
_id:1
}
}
],
cursor:{
},
$db:"realestate"
}
Generierter Abfragecode
LINQ vs. Fluent Aggregation API
▪ Beide sind ideal für komplexe Abfragen
▪ LINQ-Abfragen werden in den meisten Fällen sehr gut in native
Abfragen übersetzt
▪ LINQ ist ideal für .NET-Entwickler, die es bereits gewohnt sind damit zu
arbeiten
▪ Fluent Aggregation API, ist ideal für Entwickler die eher die native
Mongo API gewohnt sind
▪ Oder mehr Kontrolle über den tatsächlichen Abfragecode zur
Datenbank möchten
▪ In der Regel sollte sich ein Team darüber vorher abstimmen, welche der
beiden Möglichkeiten Hauptsächlich zum Einsatz kommen soll
CRUD
Das ABC für die
Datenverarbeitung
Create
Read
Update
Delete
Eventing Reagieren auf Ereignisse
Eventing
▪ Der Mongo C# Driver bietet unterschiedliche Events an
▪ Es hilft beim Logging oder bei der Diagnose der
Datenkommunikation
▪ Es gibt unterschiedliche Event Types
▪ http://mongodb.github.io/mongo-csharp-driver/2.7/reference/driver_core/events/
Event Types
▪ Allgemein
▪ ConnectionPoolAddedConnectionEvent
▪ Command-Events
▪ CommandStartedEvent, CommandSucceededEvent und
CommandFailedEvent
▪ Es sollten keine unnötigen Command-Events abonniert werden, da dies
unnötig die Performance beeinflusst
Joins Daten zusammenführen
Joins
▪ Dokumentenorientierte Datenbanken sollten in der Regel atomare
Dokumente beinhalten
▪ Es ist dennoch legitim unabhängige Dokumente zu erzeugen, die
eine Beziehung zueinander haben
▪ Das Zusammenführen beider Dokumente kann Client- und Server-
Seitig durchgeführt werden
▪ Die Client-Seitige Lösung wird aus Performancesicht nicht
empfohlen (Doppelte Anfragen an den Server)
▪ Server-Seitig bietet MongoDB dazu den Lookup-Operator
Client-Seitiger Join
Server-Seitiger Join
http://about.me/Gregor.Biswanger
Ich freue mich auf Feedback!
Vielen Dank!

Más contenido relacionado

La actualidad más candente

Neo4j GraphDay Seattle- Sept19- neo4j basic training
Neo4j GraphDay Seattle- Sept19- neo4j basic trainingNeo4j GraphDay Seattle- Sept19- neo4j basic training
Neo4j GraphDay Seattle- Sept19- neo4j basic trainingNeo4j
 
Diving into Delta Lake: Unpacking the Transaction Log
Diving into Delta Lake: Unpacking the Transaction LogDiving into Delta Lake: Unpacking the Transaction Log
Diving into Delta Lake: Unpacking the Transaction LogDatabricks
 
Python and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James BlackburnPython and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James BlackburnPyData
 
Workshop Introduction to Neo4j
Workshop Introduction to Neo4jWorkshop Introduction to Neo4j
Workshop Introduction to Neo4jNeo4j
 
MongoDB WiredTiger Internals
MongoDB WiredTiger InternalsMongoDB WiredTiger Internals
MongoDB WiredTiger InternalsNorberto Leite
 
Intro To MongoDB
Intro To MongoDBIntro To MongoDB
Intro To MongoDBAlex Sharp
 
Graphs for Enterprise Architects
Graphs for Enterprise ArchitectsGraphs for Enterprise Architects
Graphs for Enterprise ArchitectsNeo4j
 
An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDBCésar Trigo
 
Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020Ontotext
 
openCypher: Introducing subqueries
openCypher: Introducing subqueriesopenCypher: Introducing subqueries
openCypher: Introducing subqueriesopenCypher
 
Schema Design
Schema DesignSchema Design
Schema DesignMongoDB
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...Amazon Web Services Korea
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDBMongoDB
 
Neo4j Popular use case
Neo4j Popular use case Neo4j Popular use case
Neo4j Popular use case Neo4j
 
Migrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDBMigrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDBMongoDB
 
Multi-model database
Multi-model databaseMulti-model database
Multi-model databaseJiaheng Lu
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영NAVER D2
 

La actualidad más candente (20)

Neo4j GraphDay Seattle- Sept19- neo4j basic training
Neo4j GraphDay Seattle- Sept19- neo4j basic trainingNeo4j GraphDay Seattle- Sept19- neo4j basic training
Neo4j GraphDay Seattle- Sept19- neo4j basic training
 
Diving into Delta Lake: Unpacking the Transaction Log
Diving into Delta Lake: Unpacking the Transaction LogDiving into Delta Lake: Unpacking the Transaction Log
Diving into Delta Lake: Unpacking the Transaction Log
 
Python and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James BlackburnPython and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James Blackburn
 
Workshop Introduction to Neo4j
Workshop Introduction to Neo4jWorkshop Introduction to Neo4j
Workshop Introduction to Neo4j
 
MongoDB WiredTiger Internals
MongoDB WiredTiger InternalsMongoDB WiredTiger Internals
MongoDB WiredTiger Internals
 
Introduction to mongodb
Introduction to mongodbIntroduction to mongodb
Introduction to mongodb
 
MongoDB
MongoDBMongoDB
MongoDB
 
Intro To MongoDB
Intro To MongoDBIntro To MongoDB
Intro To MongoDB
 
Graphs for Enterprise Architects
Graphs for Enterprise ArchitectsGraphs for Enterprise Architects
Graphs for Enterprise Architects
 
An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDB
 
Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020
 
openCypher: Introducing subqueries
openCypher: Introducing subqueriesopenCypher: Introducing subqueries
openCypher: Introducing subqueries
 
Schema Design
Schema DesignSchema Design
Schema Design
 
Introdução ao Redis
Introdução ao RedisIntrodução ao Redis
Introdução ao Redis
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDB
 
Neo4j Popular use case
Neo4j Popular use case Neo4j Popular use case
Neo4j Popular use case
 
Migrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDBMigrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDB
 
Multi-model database
Multi-model databaseMulti-model database
Multi-model database
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영
 

Similar a Yes zu NoSQL mit MongoDB für .NET-Entwickler

MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBTobias Trelle
 
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungBack to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungMongoDB
 
mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlageninovex GmbH
 
Einführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenEinführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenTobias Trelle
 
CSharp development with MongoDB-CSharp
CSharp development with MongoDB-CSharpCSharp development with MongoDB-CSharp
CSharp development with MongoDB-CSharplanwin
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookUlrich Krause
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Gregor Biswanger
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHagilemethoden
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
 
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...Marc Müller
 
MongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen HackerMongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen HackerGregor Biswanger
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magentoAOE
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzNode.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzKai Donato
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core ApplicationsRobin Sedlaczek
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga
 
Back to Basics – Webinar 4: Fortschrittliche Indizierung, Text- und Geoindizes
Back to Basics – Webinar 4: Fortschrittliche Indizierung, Text- und GeoindizesBack to Basics – Webinar 4: Fortschrittliche Indizierung, Text- und Geoindizes
Back to Basics – Webinar 4: Fortschrittliche Indizierung, Text- und GeoindizesMongoDB
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 

Similar a Yes zu NoSQL mit MongoDB für .NET-Entwickler (20)

MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
 
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungBack to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
 
mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlagen
 
JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!
 
Einführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenEinführung in NoSQL-Datenbanken
Einführung in NoSQL-Datenbanken
 
CSharp development with MongoDB-CSharp
CSharp development with MongoDB-CSharpCSharp development with MongoDB-CSharp
CSharp development with MongoDB-CSharp
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
 
MongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen HackerMongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen Hacker
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzNode.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core Applications
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
 
Back to Basics – Webinar 4: Fortschrittliche Indizierung, Text- und Geoindizes
Back to Basics – Webinar 4: Fortschrittliche Indizierung, Text- und GeoindizesBack to Basics – Webinar 4: Fortschrittliche Indizierung, Text- und Geoindizes
Back to Basics – Webinar 4: Fortschrittliche Indizierung, Text- und Geoindizes
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Oracle forms goes docker
Oracle forms goes dockerOracle forms goes docker
Oracle forms goes docker
 

Más de Gregor Biswanger

Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1Gregor Biswanger
 
MongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-DesignMongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-DesignGregor Biswanger
 
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreElectron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreGregor Biswanger
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesGregor Biswanger
 
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsAber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsGregor Biswanger
 
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Gregor Biswanger
 
Clevere Tipps zum Thema Facebook Posts
Clevere Tipps zum Thema Facebook PostsClevere Tipps zum Thema Facebook Posts
Clevere Tipps zum Thema Facebook PostsGregor Biswanger
 
Responsive Webdesign mit Bootstrap
Responsive Webdesign mit BootstrapResponsive Webdesign mit Bootstrap
Responsive Webdesign mit BootstrapGregor Biswanger
 
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...Gregor Biswanger
 
Multi Touch.Prio.Conference 2009
Multi Touch.Prio.Conference 2009Multi Touch.Prio.Conference 2009
Multi Touch.Prio.Conference 2009Gregor Biswanger
 

Más de Gregor Biswanger (10)

Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1
 
MongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-DesignMongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-Design
 
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreElectron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsAber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
 
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
 
Clevere Tipps zum Thema Facebook Posts
Clevere Tipps zum Thema Facebook PostsClevere Tipps zum Thema Facebook Posts
Clevere Tipps zum Thema Facebook Posts
 
Responsive Webdesign mit Bootstrap
Responsive Webdesign mit BootstrapResponsive Webdesign mit Bootstrap
Responsive Webdesign mit Bootstrap
 
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
 
Multi Touch.Prio.Conference 2009
Multi Touch.Prio.Conference 2009Multi Touch.Prio.Conference 2009
Multi Touch.Prio.Conference 2009
 

Yes zu NoSQL mit MongoDB für .NET-Entwickler