SlideShare uma empresa Scribd logo
1 de 28
codecentric AG 1
MongoDB Einführung
Tobias.Trelle@codecentric.de
@tobiastrelle
codecentric AG 2
 Senior IT Consultant @ codecentric AG
 Java / JEE / EAI / RDBMS background
 Committer @ Spring Data MongoDB
 Organizer of MongoDB User Group Düsseldorf
ttrelle @tobiastrelle
codecentric AG 3
MongoDB
humongous, engl. = gigantisch, riesig
codecentric AG 4
„It‘s not my fault the chapters are
short, MongoDB is just easy to learn“
aus „The Little MongoDB book“
codecentric AG 5
MongoDB?
 NoSQL-Datenbank / Open Source
 Dokumentenorientiert
 Hochperformant, horizontal skalierbar (scale-out)
 Replication & Sharding out-of-the-box
 Map/Reduce
 Geospatial Indexes / Queries
codecentric AG 6
Grundkonzept MongoDB-Server
Server
Database
Collection
Document
Field
Tabelle
Zeile
Spalte
Relationales
Pendant Aber …
Flexibles
Schema
- Arrays
- Rekursiv
codecentric AG 7
MongoDB-Server Struktur
codecentric AG 8
MongoDB-Server: Storage
codecentric AG 9
Document
{ "_id" : ObjectId("53e3663ccb3bd259f9252f67"),
"typ" : ["gastro", "kultur"],
"name" : "Unperfekthaus",
"tags" : "uph unperfekt perfekt haus essen",
"desc" : "Im Unperfekthaus bekommen Künstler & Gründer ... ",
"adresse" : { "str" : "Friedrich-Ebert-Straße 18",
"plz" : 45127,
"ort" : "Essen"
},
"location" : { "type" : "Point",
"coordinates" : [ 7.0075, 51.45902 ]
}
}
codecentric AG 10
Document
 Document = Geordnete Menge von Key/Value-Paaren
 Key = UTF-8-String
 Value = Einfacher Datentyp | Array[Value] | Document
 Einfacher Datentyp = String
| Integer32
| Integer64
| Double
| Timestamp
…
codecentric AG 11
BSON-Format
 Dokumente werden im BSON-Format verwaltet und gespeichert
http://bsonspec.org/#/specification
 BSON = Binary JSON (!= JSON)
 Teilweise größer als JSON, aber besser traversierbar
 Keys stehen in jedem Dokument --> kurz fassen!
codecentric AG 12
BSON Beispiel
{ hello: "MongoDB" }
x18x00x00x00
x02
hellox00
x08x00x00x00MongoDBx00
x00
codecentric AG 13
CRUD = IFUR
insert(…)
find(…), findOne(…)
update(…)
remove()
codecentric AG 14
Indexe
 Primary Key auf Feld _id: 12 Byte lange ObjectId
 Bis zu 63 zusätzliche Sekundär-Indexe
 Sekundär-Index einfach oder auf bis zu 31 Feldern
 Spezielle Indexe für
 Geodaten-Suche
 Volltextsuche
codecentric AG 15
Queries
 Operieren auf Daten genau einer Collection
 Query bei Example
 db.pois.find( {"adresse.stadt": "Bochum"} )
 Aggregation
 Map/Reduce
codecentric AG 16
Geospatial Queries
 Index auf 2-dimensionalen
Koordinaten
 _id: "A", position: [0.001, -0.002]
_id: "B", position: [0.75, 0.75]
_id: "C", position: [0.5, 0.5]
_id: "D", position: [-0.5, -0.5]
 Queries basieren auf Abständen
und Shapes
 Details:
http://blog.codecentric.de/en/2012/02/spring-data-mongodb-geospatial-queries/
codecentric AG 22
MongoDB Replikation: Replica Sets
Grundprinzip
 Dynamisches Master/Slave + Auto Election
(Master = Primary, Slave = Secondary)
 Secondaries wählen automatisch neuen Primary bei Ausfall
 Writes nur auf Primary
 Reads ggfs. auch von Secondaries (Eventual Consistency)
Ziel: Ausfallsicherheit
codecentric AG 23
MongoDB Replikation: Replica Sets
codecentric AG 24
MongoDB Replikation: Replica Sets
codecentric AG 25
MongoDB Replikation: Replica Sets
WriteConcern
Gewünschte Grad an Durabilität bei Schreiboperationen
 Anzahl an Replica Set Members (n oder „majority“)
 Timeout
 Warten auf Journaling (true/false)

codecentric AG 26
MongoDB Replikation: Sharding
Grundprinzip
 Verteilung der Datenmenge auf n Knoten (Partitionierung)
 Jedes Dokument landet auf genau einem Knoten
 Zugriff über sog. ShardKey
(identifiziert Knoten für Lese- und Schreibzugriff)
Ziel: Horizontale Skalierbarkeit

codecentric AG 27
MongoDB Replikation: Sharding
Shard Key

codecentric AG 28
MongoDB Replikation: Sharding
Server-Prozesse
 Konfig-Server:
Buchhaltung von Shards
und Chunks
 Router:
Scatter/Gather bei Queries
Ziel Shard für Inserts
 Shard:
Eigentliche Datenhaltung

codecentric AG 29
MongoDB Replikation: Sharding
Produktives System

codecentric AG 30
MongoDB Replikation: Sharding
Horizontale Skalierung von Writes und Reads
 Writes treffen genau einen Shard
 Reads mit Shard Key  Subset an Shards
 Reads ohne Shard Key  Scatter/Gather auf allen Shards

codecentric AG 32
MongoDB Sharding Beispiel: Initialer Zustand
mongos> sh.status()
--- Sharding Status ---
sharding version: { "_id" : 1, "version" : 3 }
shards:
{ "_id" : "shard0000", "host" : "tmp-pc:9000" }
{ "_id" : "shard0001", "host" : "tmp-pc:9001" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "data", "partitioned" : true, "primary" : "shard0000" }
data.foo chunks:
shard0000 1
{ "age" : { $minKey : 1 } } -->> { "age" : { $maxKey : 1 } } on : shard0000 { "t" : 1000,
"i" : 0 }
2 Shards
codecentric AG 33
MongoDB Sharding Beispiel: Chunks verteilen sich
mongos> sh.status()
--- Sharding Status ---
sharding version: { "_id" : 1, "version" : 3 }
shards:
{ "_id" : "shard0000", "host" : "tmp-pc:9000" }
{ "_id" : "shard0001", "host" : "tmp-pc:9001" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "data", "partitioned" : true, "primary" : "shard0000" }
data.foo chunks:
shard0001 4
shard0000 5
{ "age" : { $minKey : 1 } } -->> { "age" : 50 } on : shard0001 { "t" : 2000, "i" : 0 }
{ "age" : 50 } -->> { "age" : 53 } on : shard0001 { "t" : 3000, "i" : 0 }
{ "age" : 53 } -->> { "age" : 54 } on : shard0001 { "t" : 4000, "i" : 0 }
{ "age" : 54 } -->> { "age" : 58 } on : shard0001 { "t" : 5000, "i" : 0 }
{ "age" : 58 } -->> { "age" : 60 } on : shard0000 { "t" : 5000, "i" : 1 }
{ "age" : 60 } -->> { "age" : 63 } on : shard0000 { "t" : 1000, "i" : 14 }
{ "age" : 63 } -->> { "age" : 65 } on : shard0000 { "t" : 1000, "i" : 11 }
{ "age" : 65 } -->> { "age" : 69 } on : shard0000 { "t" : 1000, "i" : 12 }
{ "age" : 69 } -->> { "age" : { $maxKey : 1 } } on : shard0000 { "t" : 1000, "i" : 4 }
2 Shards
Chunks
are equally
distributed
codecentric AG 34
QUESTIONS?
Tobias Trelle
codecentric AG
Merscheider Str. 1
42699 Solingen
tel +49 (0) 212.233628.47
fax +49 (0) 212.233628.79
mail Tobias.Trelle@codecentric.de
twitter @tobiastrelle
www.codecentric.de
blog.codecentric.de/en/author/tobias-trelle
www.xing.com/net/mongodb-dus

Mais conteúdo relacionado

Mais procurados

An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDBCésar Trigo
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBRavi Teja
 
SQL vs MongoDB
SQL vs MongoDBSQL vs MongoDB
SQL vs MongoDBcalltutors
 
MongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To TransactionsMongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To TransactionsMydbops
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBMongoDB
 
The Basics of MongoDB
The Basics of MongoDBThe Basics of MongoDB
The Basics of MongoDBvaluebound
 
Introduction to MongoDB.pptx
Introduction to MongoDB.pptxIntroduction to MongoDB.pptx
Introduction to MongoDB.pptxSurya937648
 
An Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDBAn Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDBLee Theobald
 
Sharding Methods for MongoDB
Sharding Methods for MongoDBSharding Methods for MongoDB
Sharding Methods for MongoDBMongoDB
 
Understanding and tuning WiredTiger, the new high performance database engine...
Understanding and tuning WiredTiger, the new high performance database engine...Understanding and tuning WiredTiger, the new high performance database engine...
Understanding and tuning WiredTiger, the new high performance database engine...Ontico
 
Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...
Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...
Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...HostedbyConfluent
 
Migrating to MongoDB: Best Practices
Migrating to MongoDB: Best PracticesMigrating to MongoDB: Best Practices
Migrating to MongoDB: Best PracticesMongoDB
 
MongoDB presentation
MongoDB presentationMongoDB presentation
MongoDB presentationHyphen Call
 
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptxSigit52
 
Introduction to NoSQL Databases
Introduction to NoSQL DatabasesIntroduction to NoSQL Databases
Introduction to NoSQL DatabasesDerek Stainer
 
[pgday.Seoul 2022] PostgreSQL with Google Cloud
[pgday.Seoul 2022] PostgreSQL with Google Cloud[pgday.Seoul 2022] PostgreSQL with Google Cloud
[pgday.Seoul 2022] PostgreSQL with Google CloudPgDay.Seoul
 
9. Document Oriented Databases
9. Document Oriented Databases9. Document Oriented Databases
9. Document Oriented DatabasesFabio Fumarola
 
MongoDB WiredTiger Internals
MongoDB WiredTiger InternalsMongoDB WiredTiger Internals
MongoDB WiredTiger InternalsNorberto Leite
 

Mais procurados (20)

MongoDB
MongoDBMongoDB
MongoDB
 
Introduction to mongodb
Introduction to mongodbIntroduction to mongodb
Introduction to mongodb
 
An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDB
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
SQL vs MongoDB
SQL vs MongoDBSQL vs MongoDB
SQL vs MongoDB
 
MongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To TransactionsMongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To Transactions
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
The Basics of MongoDB
The Basics of MongoDBThe Basics of MongoDB
The Basics of MongoDB
 
Introduction to MongoDB.pptx
Introduction to MongoDB.pptxIntroduction to MongoDB.pptx
Introduction to MongoDB.pptx
 
An Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDBAn Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDB
 
Sharding Methods for MongoDB
Sharding Methods for MongoDBSharding Methods for MongoDB
Sharding Methods for MongoDB
 
Understanding and tuning WiredTiger, the new high performance database engine...
Understanding and tuning WiredTiger, the new high performance database engine...Understanding and tuning WiredTiger, the new high performance database engine...
Understanding and tuning WiredTiger, the new high performance database engine...
 
Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...
Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...
Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...
 
Migrating to MongoDB: Best Practices
Migrating to MongoDB: Best PracticesMigrating to MongoDB: Best Practices
Migrating to MongoDB: Best Practices
 
MongoDB presentation
MongoDB presentationMongoDB presentation
MongoDB presentation
 
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptx
 
Introduction to NoSQL Databases
Introduction to NoSQL DatabasesIntroduction to NoSQL Databases
Introduction to NoSQL Databases
 
[pgday.Seoul 2022] PostgreSQL with Google Cloud
[pgday.Seoul 2022] PostgreSQL with Google Cloud[pgday.Seoul 2022] PostgreSQL with Google Cloud
[pgday.Seoul 2022] PostgreSQL with Google Cloud
 
9. Document Oriented Databases
9. Document Oriented Databases9. Document Oriented Databases
9. Document Oriented Databases
 
MongoDB WiredTiger Internals
MongoDB WiredTiger InternalsMongoDB WiredTiger Internals
MongoDB WiredTiger Internals
 

Destaque

MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenTobias Trelle
 
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...MongoDB
 
MongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererMongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererUwe Printz
 
Ewert: Der Titelschutz – Ein unterschätztes Recht
Ewert: Der Titelschutz – Ein unterschätztes RechtEwert: Der Titelschutz – Ein unterschätztes Recht
Ewert: Der Titelschutz – Ein unterschätztes RechtRaabe Verlag
 
Brox, Lenke: Die Gesellschaft bürgerlichen Rechts – Teil 1. Gesetzlicher Rahm...
Brox, Lenke: Die Gesellschaft bürgerlichen Rechts – Teil 1. Gesetzlicher Rahm...Brox, Lenke: Die Gesellschaft bürgerlichen Rechts – Teil 1. Gesetzlicher Rahm...
Brox, Lenke: Die Gesellschaft bürgerlichen Rechts – Teil 1. Gesetzlicher Rahm...Raabe Verlag
 
Dr. Stephan Frucht: Kooperative Kulturförderung
Dr. Stephan Frucht: Kooperative KulturförderungDr. Stephan Frucht: Kooperative Kulturförderung
Dr. Stephan Frucht: Kooperative KulturförderungRaabe Verlag
 
Googleitis 311209
Googleitis 311209Googleitis 311209
Googleitis 311209Martin Reti
 
Weltreise silvester2011
Weltreise silvester2011Weltreise silvester2011
Weltreise silvester2011Martin Reti
 
Pengumuman tes tulis rsu kumala siwi kudus3
Pengumuman tes tulis rsu kumala siwi kudus3Pengumuman tes tulis rsu kumala siwi kudus3
Pengumuman tes tulis rsu kumala siwi kudus3Rahmat Kafidzin
 
Praxisbeispiel: Kampagnentracking mit Brandwatch
Praxisbeispiel: Kampagnentracking mit BrandwatchPraxisbeispiel: Kampagnentracking mit Brandwatch
Praxisbeispiel: Kampagnentracking mit BrandwatchBrandwatch GmbH
 
01 klageschrift br_vs_eu-kommission_2012-04-27
01 klageschrift br_vs_eu-kommission_2012-04-2701 klageschrift br_vs_eu-kommission_2012-04-27
01 klageschrift br_vs_eu-kommission_2012-04-27barbrasworld
 
Darren Grundorf: Was tut der Bund für die Kulturwirtschaft?
Darren Grundorf: Was tut der Bund für die Kulturwirtschaft?Darren Grundorf: Was tut der Bund für die Kulturwirtschaft?
Darren Grundorf: Was tut der Bund für die Kulturwirtschaft?Raabe Verlag
 
David Scherer: Crowdfunding im Social Web
David Scherer: Crowdfunding im Social WebDavid Scherer: Crowdfunding im Social Web
David Scherer: Crowdfunding im Social WebRaabe Verlag
 
Agile Happiness - Macht agiles Vorgehen glücklich?
Agile Happiness - Macht agiles Vorgehen glücklich?Agile Happiness - Macht agiles Vorgehen glücklich?
Agile Happiness - Macht agiles Vorgehen glücklich?Rolf Dräther
 
Dr. Tilo Gerlach: Leistungsschutzrechte der ausübenden Künstler und Tonträger...
Dr. Tilo Gerlach: Leistungsschutzrechte der ausübenden Künstler und Tonträger...Dr. Tilo Gerlach: Leistungsschutzrechte der ausübenden Künstler und Tonträger...
Dr. Tilo Gerlach: Leistungsschutzrechte der ausübenden Künstler und Tonträger...Raabe Verlag
 
Online-Journalismus ?
Online-Journalismus ?Online-Journalismus ?
Online-Journalismus ?Martin Krauß
 
Presentatie Van Alle Werken Klein3
Presentatie Van Alle Werken Klein3Presentatie Van Alle Werken Klein3
Presentatie Van Alle Werken Klein3ontworpenbv
 

Destaque (20)

MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwalten
 
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
 
MongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererMongoDB für Java-Programmierer
MongoDB für Java-Programmierer
 
Ewert: Der Titelschutz – Ein unterschätztes Recht
Ewert: Der Titelschutz – Ein unterschätztes RechtEwert: Der Titelschutz – Ein unterschätztes Recht
Ewert: Der Titelschutz – Ein unterschätztes Recht
 
Brox, Lenke: Die Gesellschaft bürgerlichen Rechts – Teil 1. Gesetzlicher Rahm...
Brox, Lenke: Die Gesellschaft bürgerlichen Rechts – Teil 1. Gesetzlicher Rahm...Brox, Lenke: Die Gesellschaft bürgerlichen Rechts – Teil 1. Gesetzlicher Rahm...
Brox, Lenke: Die Gesellschaft bürgerlichen Rechts – Teil 1. Gesetzlicher Rahm...
 
Binder6
Binder6Binder6
Binder6
 
Dr. Stephan Frucht: Kooperative Kulturförderung
Dr. Stephan Frucht: Kooperative KulturförderungDr. Stephan Frucht: Kooperative Kulturförderung
Dr. Stephan Frucht: Kooperative Kulturförderung
 
Googleitis 311209
Googleitis 311209Googleitis 311209
Googleitis 311209
 
Weltreise silvester2011
Weltreise silvester2011Weltreise silvester2011
Weltreise silvester2011
 
Schuck 2011
Schuck 2011Schuck 2011
Schuck 2011
 
Pengumuman tes tulis rsu kumala siwi kudus3
Pengumuman tes tulis rsu kumala siwi kudus3Pengumuman tes tulis rsu kumala siwi kudus3
Pengumuman tes tulis rsu kumala siwi kudus3
 
Praxisbeispiel: Kampagnentracking mit Brandwatch
Praxisbeispiel: Kampagnentracking mit BrandwatchPraxisbeispiel: Kampagnentracking mit Brandwatch
Praxisbeispiel: Kampagnentracking mit Brandwatch
 
01 klageschrift br_vs_eu-kommission_2012-04-27
01 klageschrift br_vs_eu-kommission_2012-04-2701 klageschrift br_vs_eu-kommission_2012-04-27
01 klageschrift br_vs_eu-kommission_2012-04-27
 
Darren Grundorf: Was tut der Bund für die Kulturwirtschaft?
Darren Grundorf: Was tut der Bund für die Kulturwirtschaft?Darren Grundorf: Was tut der Bund für die Kulturwirtschaft?
Darren Grundorf: Was tut der Bund für die Kulturwirtschaft?
 
David Scherer: Crowdfunding im Social Web
David Scherer: Crowdfunding im Social WebDavid Scherer: Crowdfunding im Social Web
David Scherer: Crowdfunding im Social Web
 
Agile Happiness - Macht agiles Vorgehen glücklich?
Agile Happiness - Macht agiles Vorgehen glücklich?Agile Happiness - Macht agiles Vorgehen glücklich?
Agile Happiness - Macht agiles Vorgehen glücklich?
 
Dr. Tilo Gerlach: Leistungsschutzrechte der ausübenden Künstler und Tonträger...
Dr. Tilo Gerlach: Leistungsschutzrechte der ausübenden Künstler und Tonträger...Dr. Tilo Gerlach: Leistungsschutzrechte der ausübenden Künstler und Tonträger...
Dr. Tilo Gerlach: Leistungsschutzrechte der ausübenden Künstler und Tonträger...
 
2013 v passau_neuberger
2013 v passau_neuberger2013 v passau_neuberger
2013 v passau_neuberger
 
Online-Journalismus ?
Online-Journalismus ?Online-Journalismus ?
Online-Journalismus ?
 
Presentatie Van Alle Werken Klein3
Presentatie Van Alle Werken Klein3Presentatie Van Alle Werken Klein3
Presentatie Van Alle Werken Klein3
 

Semelhante a MongoDB Einführung

OOP 2013: Praktische Einführung in MongoDB
OOP 2013: Praktische Einführung in MongoDBOOP 2013: Praktische Einführung in MongoDB
OOP 2013: Praktische Einführung in MongoDBTobias Trelle
 
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
 
MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)Uwe Printz
 
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDB
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDBBack to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDB
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDBMongoDB
 
Back to Basics-Webinar 5: Einführung in das Aggregation-Framework
Back to Basics-Webinar 5: Einführung in das Aggregation-FrameworkBack to Basics-Webinar 5: Einführung in das Aggregation-Framework
Back to Basics-Webinar 5: Einführung in das Aggregation-FrameworkMongoDB
 
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
 
Einführung in Elasticsearch
Einführung in ElasticsearchEinführung in Elasticsearch
Einführung in ElasticsearchFlorian Hopf
 
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...NETWAYS
 
SysDig Metriken zentralisieren
SysDig Metriken zentralisierenSysDig Metriken zentralisieren
SysDig Metriken zentralisiereninovex GmbH
 
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 MongoDBJohannes Hoppe
 
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 MongoDBJohannes Hoppe
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBTobias Trelle
 
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?Michael Hofmann
 
Elasticsearch und Big Data - Webinar vom 23.07.2014
Elasticsearch und Big Data - Webinar vom 23.07.2014Elasticsearch und Big Data - Webinar vom 23.07.2014
Elasticsearch und Big Data - Webinar vom 23.07.2014inovex GmbH
 
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin GrauelOSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin GrauelNETWAYS
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und LambdasNane Kratzke
 
Einfuehrung in Elasticsearch
Einfuehrung in ElasticsearchEinfuehrung in Elasticsearch
Einfuehrung in ElasticsearchFlorian Hopf
 
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...AboutYouGmbH
 
Einführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenEinführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenTobias Trelle
 
Übersetzen alter Arcade-Spiele in JavaScript
Übersetzen alter Arcade-Spiele in JavaScriptÜbersetzen alter Arcade-Spiele in JavaScript
Übersetzen alter Arcade-Spiele in JavaScriptnorbert_kehrer
 

Semelhante a MongoDB Einführung (20)

OOP 2013: Praktische Einführung in MongoDB
OOP 2013: Praktische Einführung in MongoDBOOP 2013: Praktische Einführung in MongoDB
OOP 2013: Praktische Einführung in MongoDB
 
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
 
MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)
 
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDB
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDBBack to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDB
Back to Basics German 2: Erstellen Sie Ihre erste Anwendung in MongoDB
 
Back to Basics-Webinar 5: Einführung in das Aggregation-Framework
Back to Basics-Webinar 5: Einführung in das Aggregation-FrameworkBack to Basics-Webinar 5: Einführung in das Aggregation-Framework
Back to Basics-Webinar 5: Einführung in das Aggregation-Framework
 
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
 
Einführung in Elasticsearch
Einführung in ElasticsearchEinführung in Elasticsearch
Einführung in Elasticsearch
 
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...
 
SysDig Metriken zentralisieren
SysDig Metriken zentralisierenSysDig Metriken zentralisieren
SysDig Metriken zentralisieren
 
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-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
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
 
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
 
Elasticsearch und Big Data - Webinar vom 23.07.2014
Elasticsearch und Big Data - Webinar vom 23.07.2014Elasticsearch und Big Data - Webinar vom 23.07.2014
Elasticsearch und Big Data - Webinar vom 23.07.2014
 
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin GrauelOSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und Lambdas
 
Einfuehrung in Elasticsearch
Einfuehrung in ElasticsearchEinfuehrung in Elasticsearch
Einfuehrung in Elasticsearch
 
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
 
Einführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenEinführung in NoSQL-Datenbanken
Einführung in NoSQL-Datenbanken
 
Übersetzen alter Arcade-Spiele in JavaScript
Übersetzen alter Arcade-Spiele in JavaScriptÜbersetzen alter Arcade-Spiele in JavaScript
Übersetzen alter Arcade-Spiele in JavaScript
 

Mais de Tobias Trelle

TDD mit JUnit und Mockito
TDD mit JUnit und MockitoTDD mit JUnit und Mockito
TDD mit JUnit und MockitoTobias Trelle
 
NoSQL - Einführung in Graphen-Datenbanken mit Neo4j
NoSQL - Einführung in Graphen-Datenbanken mit Neo4jNoSQL - Einführung in Graphen-Datenbanken mit Neo4j
NoSQL - Einführung in Graphen-Datenbanken mit Neo4jTobias Trelle
 
Test Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTobias Trelle
 
Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & CoTobias Trelle
 
Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Tobias Trelle
 
Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Tobias Trelle
 
An introduction to MongoDB and Ruby
An introduction to MongoDB and RubyAn introduction to MongoDB and Ruby
An introduction to MongoDB and RubyTobias Trelle
 
BedCon 2013 - Java Persistenz-Frameworks für MongoDB
BedCon 2013 - Java Persistenz-Frameworks für MongoDBBedCon 2013 - Java Persistenz-Frameworks für MongoDB
BedCon 2013 - Java Persistenz-Frameworks für MongoDBTobias Trelle
 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBTobias Trelle
 
MongoDB Live Hacking
MongoDB Live HackingMongoDB Live Hacking
MongoDB Live HackingTobias Trelle
 

Mais de Tobias Trelle (10)

TDD mit JUnit und Mockito
TDD mit JUnit und MockitoTDD mit JUnit und Mockito
TDD mit JUnit und Mockito
 
NoSQL - Einführung in Graphen-Datenbanken mit Neo4j
NoSQL - Einführung in Graphen-Datenbanken mit Neo4jNoSQL - Einführung in Graphen-Datenbanken mit Neo4j
NoSQL - Einführung in Graphen-Datenbanken mit Neo4j
 
Test Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL Databases
 
Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & Co
 
Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Spring Data, Jongo & Co.
Spring Data, Jongo & Co.
 
Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Morphia, Spring Data & Co.
Morphia, Spring Data & Co.
 
An introduction to MongoDB and Ruby
An introduction to MongoDB and RubyAn introduction to MongoDB and Ruby
An introduction to MongoDB and Ruby
 
BedCon 2013 - Java Persistenz-Frameworks für MongoDB
BedCon 2013 - Java Persistenz-Frameworks für MongoDBBedCon 2013 - Java Persistenz-Frameworks für MongoDB
BedCon 2013 - Java Persistenz-Frameworks für MongoDB
 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDB
 
MongoDB Live Hacking
MongoDB Live HackingMongoDB Live Hacking
MongoDB Live Hacking
 

MongoDB Einführung

  • 1. codecentric AG 1 MongoDB Einführung Tobias.Trelle@codecentric.de @tobiastrelle
  • 2. codecentric AG 2  Senior IT Consultant @ codecentric AG  Java / JEE / EAI / RDBMS background  Committer @ Spring Data MongoDB  Organizer of MongoDB User Group Düsseldorf ttrelle @tobiastrelle
  • 3. codecentric AG 3 MongoDB humongous, engl. = gigantisch, riesig
  • 4. codecentric AG 4 „It‘s not my fault the chapters are short, MongoDB is just easy to learn“ aus „The Little MongoDB book“
  • 5. codecentric AG 5 MongoDB?  NoSQL-Datenbank / Open Source  Dokumentenorientiert  Hochperformant, horizontal skalierbar (scale-out)  Replication & Sharding out-of-the-box  Map/Reduce  Geospatial Indexes / Queries
  • 6. codecentric AG 6 Grundkonzept MongoDB-Server Server Database Collection Document Field Tabelle Zeile Spalte Relationales Pendant Aber … Flexibles Schema - Arrays - Rekursiv
  • 9. codecentric AG 9 Document { "_id" : ObjectId("53e3663ccb3bd259f9252f67"), "typ" : ["gastro", "kultur"], "name" : "Unperfekthaus", "tags" : "uph unperfekt perfekt haus essen", "desc" : "Im Unperfekthaus bekommen Künstler & Gründer ... ", "adresse" : { "str" : "Friedrich-Ebert-Straße 18", "plz" : 45127, "ort" : "Essen" }, "location" : { "type" : "Point", "coordinates" : [ 7.0075, 51.45902 ] } }
  • 10. codecentric AG 10 Document  Document = Geordnete Menge von Key/Value-Paaren  Key = UTF-8-String  Value = Einfacher Datentyp | Array[Value] | Document  Einfacher Datentyp = String | Integer32 | Integer64 | Double | Timestamp …
  • 11. codecentric AG 11 BSON-Format  Dokumente werden im BSON-Format verwaltet und gespeichert http://bsonspec.org/#/specification  BSON = Binary JSON (!= JSON)  Teilweise größer als JSON, aber besser traversierbar  Keys stehen in jedem Dokument --> kurz fassen!
  • 12. codecentric AG 12 BSON Beispiel { hello: "MongoDB" } x18x00x00x00 x02 hellox00 x08x00x00x00MongoDBx00 x00
  • 13. codecentric AG 13 CRUD = IFUR insert(…) find(…), findOne(…) update(…) remove()
  • 14. codecentric AG 14 Indexe  Primary Key auf Feld _id: 12 Byte lange ObjectId  Bis zu 63 zusätzliche Sekundär-Indexe  Sekundär-Index einfach oder auf bis zu 31 Feldern  Spezielle Indexe für  Geodaten-Suche  Volltextsuche
  • 15. codecentric AG 15 Queries  Operieren auf Daten genau einer Collection  Query bei Example  db.pois.find( {"adresse.stadt": "Bochum"} )  Aggregation  Map/Reduce
  • 16. codecentric AG 16 Geospatial Queries  Index auf 2-dimensionalen Koordinaten  _id: "A", position: [0.001, -0.002] _id: "B", position: [0.75, 0.75] _id: "C", position: [0.5, 0.5] _id: "D", position: [-0.5, -0.5]  Queries basieren auf Abständen und Shapes  Details: http://blog.codecentric.de/en/2012/02/spring-data-mongodb-geospatial-queries/
  • 17. codecentric AG 22 MongoDB Replikation: Replica Sets Grundprinzip  Dynamisches Master/Slave + Auto Election (Master = Primary, Slave = Secondary)  Secondaries wählen automatisch neuen Primary bei Ausfall  Writes nur auf Primary  Reads ggfs. auch von Secondaries (Eventual Consistency) Ziel: Ausfallsicherheit
  • 18. codecentric AG 23 MongoDB Replikation: Replica Sets
  • 19. codecentric AG 24 MongoDB Replikation: Replica Sets
  • 20. codecentric AG 25 MongoDB Replikation: Replica Sets WriteConcern Gewünschte Grad an Durabilität bei Schreiboperationen  Anzahl an Replica Set Members (n oder „majority“)  Timeout  Warten auf Journaling (true/false) 
  • 21. codecentric AG 26 MongoDB Replikation: Sharding Grundprinzip  Verteilung der Datenmenge auf n Knoten (Partitionierung)  Jedes Dokument landet auf genau einem Knoten  Zugriff über sog. ShardKey (identifiziert Knoten für Lese- und Schreibzugriff) Ziel: Horizontale Skalierbarkeit 
  • 22. codecentric AG 27 MongoDB Replikation: Sharding Shard Key 
  • 23. codecentric AG 28 MongoDB Replikation: Sharding Server-Prozesse  Konfig-Server: Buchhaltung von Shards und Chunks  Router: Scatter/Gather bei Queries Ziel Shard für Inserts  Shard: Eigentliche Datenhaltung 
  • 24. codecentric AG 29 MongoDB Replikation: Sharding Produktives System 
  • 25. codecentric AG 30 MongoDB Replikation: Sharding Horizontale Skalierung von Writes und Reads  Writes treffen genau einen Shard  Reads mit Shard Key  Subset an Shards  Reads ohne Shard Key  Scatter/Gather auf allen Shards 
  • 26. codecentric AG 32 MongoDB Sharding Beispiel: Initialer Zustand mongos> sh.status() --- Sharding Status --- sharding version: { "_id" : 1, "version" : 3 } shards: { "_id" : "shard0000", "host" : "tmp-pc:9000" } { "_id" : "shard0001", "host" : "tmp-pc:9001" } databases: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "data", "partitioned" : true, "primary" : "shard0000" } data.foo chunks: shard0000 1 { "age" : { $minKey : 1 } } -->> { "age" : { $maxKey : 1 } } on : shard0000 { "t" : 1000, "i" : 0 } 2 Shards
  • 27. codecentric AG 33 MongoDB Sharding Beispiel: Chunks verteilen sich mongos> sh.status() --- Sharding Status --- sharding version: { "_id" : 1, "version" : 3 } shards: { "_id" : "shard0000", "host" : "tmp-pc:9000" } { "_id" : "shard0001", "host" : "tmp-pc:9001" } databases: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "data", "partitioned" : true, "primary" : "shard0000" } data.foo chunks: shard0001 4 shard0000 5 { "age" : { $minKey : 1 } } -->> { "age" : 50 } on : shard0001 { "t" : 2000, "i" : 0 } { "age" : 50 } -->> { "age" : 53 } on : shard0001 { "t" : 3000, "i" : 0 } { "age" : 53 } -->> { "age" : 54 } on : shard0001 { "t" : 4000, "i" : 0 } { "age" : 54 } -->> { "age" : 58 } on : shard0001 { "t" : 5000, "i" : 0 } { "age" : 58 } -->> { "age" : 60 } on : shard0000 { "t" : 5000, "i" : 1 } { "age" : 60 } -->> { "age" : 63 } on : shard0000 { "t" : 1000, "i" : 14 } { "age" : 63 } -->> { "age" : 65 } on : shard0000 { "t" : 1000, "i" : 11 } { "age" : 65 } -->> { "age" : 69 } on : shard0000 { "t" : 1000, "i" : 12 } { "age" : 69 } -->> { "age" : { $maxKey : 1 } } on : shard0000 { "t" : 1000, "i" : 4 } 2 Shards Chunks are equally distributed
  • 28. codecentric AG 34 QUESTIONS? Tobias Trelle codecentric AG Merscheider Str. 1 42699 Solingen tel +49 (0) 212.233628.47 fax +49 (0) 212.233628.79 mail Tobias.Trelle@codecentric.de twitter @tobiastrelle www.codecentric.de blog.codecentric.de/en/author/tobias-trelle www.xing.com/net/mongodb-dus

Notas do Editor

  1. 3
  2. Was ist „Soft State“?
  3. Was ist „Soft State“?
  4. Was ist „Soft State“?
  5. Was ist „Soft State“?
  6. Was ist „Soft State“?
  7. Was ist „Soft State“?
  8. Was ist „Soft State“?
  9. Was ist „Soft State“?
  10. Was ist „Soft State“?
  11. Was ist „Soft State“?
  12. Was ist „Soft State“?
  13. Was ist „Soft State“?
  14. Was ist „Soft State“?
  15. Was ist „Soft State“?
  16. Was ist „Soft State“?
  17. Was ist „Soft State“?
  18. Was ist „Soft State“?
  19. Was ist „Soft State“?
  20. Was ist „Soft State“?
  21. Was ist „Soft State“?
  22. Was ist „Soft State“?
  23. Was ist „Soft State“?
  24. Was ist „Soft State“?
  25. Was ist „Soft State“?