SlideShare ist ein Scribd-Unternehmen logo
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

Weitere ähnliche Inhalte

Was ist angesagt?

RDS Postgres and Aurora Postgres | AWS Public Sector Summit 2017
RDS Postgres and Aurora Postgres | AWS Public Sector Summit 2017RDS Postgres and Aurora Postgres | AWS Public Sector Summit 2017
RDS Postgres and Aurora Postgres | AWS Public Sector Summit 2017
Amazon Web Services
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
MongoDB
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
Mike Dirolf
 
Ensure a Successful SAP Hybris Implementation – Part 2: Architecture and Buil...
Ensure a Successful SAP Hybris Implementation – Part 2: Architecture and Buil...Ensure a Successful SAP Hybris Implementation – Part 2: Architecture and Buil...
Ensure a Successful SAP Hybris Implementation – Part 2: Architecture and Buil...
Kellton Tech Solutions Ltd
 
Azure Automation and Update Management
Azure Automation and Update ManagementAzure Automation and Update Management
Azure Automation and Update Management
Udaiappa Ramachandran
 
An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDB
César Trigo
 
AWS EMR Cost optimization
AWS EMR Cost optimizationAWS EMR Cost optimization
AWS EMR Cost optimization
SANG WON PARK
 
Building a Data Lake on AWS
Building a Data Lake on AWSBuilding a Data Lake on AWS
Building a Data Lake on AWS
Gary Stafford
 
Druid Adoption Tips and Tricks
Druid Adoption Tips and TricksDruid Adoption Tips and Tricks
Druid Adoption Tips and Tricks
Imply
 
BDA311 Introduction to AWS Glue
BDA311 Introduction to AWS GlueBDA311 Introduction to AWS Glue
BDA311 Introduction to AWS Glue
Amazon Web Services
 
Introduction to Amazon Relational Database Service (Amazon RDS)
Introduction to Amazon Relational Database Service (Amazon RDS)Introduction to Amazon Relational Database Service (Amazon RDS)
Introduction to Amazon Relational Database Service (Amazon RDS)
Amazon Web Services
 
Building Advanced Analytics Pipelines with Azure Databricks
Building Advanced Analytics Pipelines with Azure DatabricksBuilding Advanced Analytics Pipelines with Azure Databricks
Building Advanced Analytics Pipelines with Azure Databricks
Lace Lofranco
 
Azure Key Vault, Azure Dev Ops and Azure Synapse - how these services work pe...
Azure Key Vault, Azure Dev Ops and Azure Synapse - how these services work pe...Azure Key Vault, Azure Dev Ops and Azure Synapse - how these services work pe...
Azure Key Vault, Azure Dev Ops and Azure Synapse - how these services work pe...
Erwin de Kreuk
 
AWS Certified Cloud Practitioner Course S11-S17
AWS Certified Cloud Practitioner Course S11-S17AWS Certified Cloud Practitioner Course S11-S17
AWS Certified Cloud Practitioner Course S11-S17
Neal Davis
 
BigQuery implementation
BigQuery implementationBigQuery implementation
BigQuery implementation
Simon Su
 
AWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design PatternsAWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design Patterns
Amazon Web Services
 
Mongodb basics and architecture
Mongodb basics and architectureMongodb basics and architecture
Mongodb basics and architecture
Bishal Khanal
 
Azure Data Factory Data Flow
Azure Data Factory Data FlowAzure Data Factory Data Flow
Azure Data Factory Data Flow
Mark Kromer
 
Modernize & Automate Analytics Data Pipelines
Modernize & Automate Analytics Data PipelinesModernize & Automate Analytics Data Pipelines
Modernize & Automate Analytics Data Pipelines
Carole Gunst
 
What is AWS Glue
What is AWS GlueWhat is AWS Glue
What is AWS Glue
jeetendra mandal
 

Was ist angesagt? (20)

RDS Postgres and Aurora Postgres | AWS Public Sector Summit 2017
RDS Postgres and Aurora Postgres | AWS Public Sector Summit 2017RDS Postgres and Aurora Postgres | AWS Public Sector Summit 2017
RDS Postgres and Aurora Postgres | AWS Public Sector Summit 2017
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Ensure a Successful SAP Hybris Implementation – Part 2: Architecture and Buil...
Ensure a Successful SAP Hybris Implementation – Part 2: Architecture and Buil...Ensure a Successful SAP Hybris Implementation – Part 2: Architecture and Buil...
Ensure a Successful SAP Hybris Implementation – Part 2: Architecture and Buil...
 
Azure Automation and Update Management
Azure Automation and Update ManagementAzure Automation and Update Management
Azure Automation and Update Management
 
An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDB
 
AWS EMR Cost optimization
AWS EMR Cost optimizationAWS EMR Cost optimization
AWS EMR Cost optimization
 
Building a Data Lake on AWS
Building a Data Lake on AWSBuilding a Data Lake on AWS
Building a Data Lake on AWS
 
Druid Adoption Tips and Tricks
Druid Adoption Tips and TricksDruid Adoption Tips and Tricks
Druid Adoption Tips and Tricks
 
BDA311 Introduction to AWS Glue
BDA311 Introduction to AWS GlueBDA311 Introduction to AWS Glue
BDA311 Introduction to AWS Glue
 
Introduction to Amazon Relational Database Service (Amazon RDS)
Introduction to Amazon Relational Database Service (Amazon RDS)Introduction to Amazon Relational Database Service (Amazon RDS)
Introduction to Amazon Relational Database Service (Amazon RDS)
 
Building Advanced Analytics Pipelines with Azure Databricks
Building Advanced Analytics Pipelines with Azure DatabricksBuilding Advanced Analytics Pipelines with Azure Databricks
Building Advanced Analytics Pipelines with Azure Databricks
 
Azure Key Vault, Azure Dev Ops and Azure Synapse - how these services work pe...
Azure Key Vault, Azure Dev Ops and Azure Synapse - how these services work pe...Azure Key Vault, Azure Dev Ops and Azure Synapse - how these services work pe...
Azure Key Vault, Azure Dev Ops and Azure Synapse - how these services work pe...
 
AWS Certified Cloud Practitioner Course S11-S17
AWS Certified Cloud Practitioner Course S11-S17AWS Certified Cloud Practitioner Course S11-S17
AWS Certified Cloud Practitioner Course S11-S17
 
BigQuery implementation
BigQuery implementationBigQuery implementation
BigQuery implementation
 
AWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design PatternsAWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design Patterns
 
Mongodb basics and architecture
Mongodb basics and architectureMongodb basics and architecture
Mongodb basics and architecture
 
Azure Data Factory Data Flow
Azure Data Factory Data FlowAzure Data Factory Data Flow
Azure Data Factory Data Flow
 
Modernize & Automate Analytics Data Pipelines
Modernize & Automate Analytics Data PipelinesModernize & Automate Analytics Data Pipelines
Modernize & Automate Analytics Data Pipelines
 
What is AWS Glue
What is AWS GlueWhat is AWS Glue
What is AWS Glue
 

Andere mochten auch

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-Programmierer
Uwe 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
 
Binder6
Binder6Binder6
Binder6
mitchellene
 
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 311209
Martin Reti
 
Weltreise silvester2011
Weltreise silvester2011Weltreise silvester2011
Weltreise silvester2011
Martin 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 kudus3
Rahmat 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 Web
Raabe 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
 

Andere mochten auch (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
 

Ähnlich wie 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 MongoDB
Tobias 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 Geoindizes
MongoDB
 
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 MongoDB
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
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
 
Einführung in Elasticsearch
Einführung in ElasticsearchEinführung in Elasticsearch
Einführung in Elasticsearch
Florian 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 zentralisieren
inovex GmbH
 
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
 
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
Johannes Hoppe
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
Tobias 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.2014
inovex 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 Grauel
NETWAYS
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und Lambdas
Nane Kratzke
 
Einfuehrung in Elasticsearch
Einfuehrung in ElasticsearchEinfuehrung in Elasticsearch
Einfuehrung in Elasticsearch
Florian 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-Datenbanken
Tobias Trelle
 
Übersetzen alter Arcade-Spiele in JavaScript
Übersetzen alter Arcade-Spiele in JavaScriptÜbersetzen alter Arcade-Spiele in JavaScript
Übersetzen alter Arcade-Spiele in JavaScript
norbert_kehrer
 

Ähnlich wie 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-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
 
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
 
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
 

Mehr von Tobias Trelle

TDD mit JUnit und Mockito
TDD mit JUnit und MockitoTDD mit JUnit und Mockito
TDD mit JUnit und Mockito
Tobias 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 Neo4j
Tobias Trelle
 
Test Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL Databases
Tobias 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 Ruby
Tobias 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 MongoDB
Tobias Trelle
 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDB
Tobias Trelle
 
MongoDB Live Hacking
MongoDB Live HackingMongoDB Live Hacking
MongoDB Live Hacking
Tobias Trelle
 

Mehr von 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

Hinweis der Redaktion

  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“?