SlideShare a Scribd company logo
1 of 18
Download to read offline
Brownbag Session 
mongoDB im Einsatz 
Grundlagen 
10.08.2012 
Nils Domrose 
inovex GmbH 
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
“MongoDB wasn’t designed in a lab. We built MongoDB from our own 
experiences building large scale, high availability, robust systems. We didn’t 
start from scratch, we really tried to figure out what was broken, and tackle 
that. So the way I think about MongoDB is that if you take MySql, and change 
the data model from relational to document based, you get a lot of great 
features: embedded docs for speed, manageability, agile development with 
schema-less databases, easier horizontal scalability because joins aren’t as 
important. There are lots of things that work great in relational databases: 
indexes, dynamic queries and updates to name a few, and we haven’t 
changed much there. For example, the way you design your indexes in 
MongoDB should be exactly the way you do it in MySql or Oracle, you just 
have the option of indexing an embedded field.” 
– Eliot Horowitz, 10gen CTO and Co-founder
! Dokumenten orientierte Datenbank (Document Storage) 
! Dynamisch Queries, Index Unterstützung, schemalos 
! In C++ geschrieben 
! High Availability Setups 
! Auto Sharding 
! MapReduce 
! GridFS 
! Projekt der Firma 10gen verfügbar unter AGPL 
Bilder Quelle: http://www.mongodb.org 
Über mongoDB 
www.mongodb.org
Warum mongoDB 
! einfache Installation, Konfiguration und Administration 
! Migrationspfad für kleiner Setups 
! Recht Universell einsetzbar, viele nützlich Funktionen 
! Skalierbar 
! Schnelle Weiterentwicklung (z.B. Datacenter aware Replication) 
! Einfaches Interface, mächtiger Syntax, viele mitgelieferte Tools 
! gute Dokumentation und wachsende Community
Vorbereitungen 
! Unter Debian 10gen apt sources Verwenden 
! Version unter Debian queeze: 1.4.4 aktuell 2.0.7 
$ apt-key adv --keyserver keyserver.ubuntu.com --recv 
7F0CEB10 
$ cat >/etc/apt/sources.list.d/10gen.list << EOF 
deb http://downloads-distro.mongodb.org/repo/debian-sysvinit 
dist 10gen 
EOF 
$ apt-get update; apt-get install mongodb-10gen
Hello mongoDB 
! Download für verschieden Platformen unter 
http://www.mongodb.org/downloads 
! start des mongod Prozesses 
! aufrufen des command line Clients “mongo”
Erste Schritte 
Table = Collection = schemalose Sammlung von Dokumenten 
! Wechsel in DatenBank: 
>use testdb 
! Einfügen eines Dokuments in eine Collection: 
>db.test_col.insert({test: ‘mytest data’}) 
! Suchen eines Dokuments: 
>db.test_col.find({test: ‘mytest data’}) 
! Javascript ist möglich: 
>for (var i=1;i<= 20;i++) db.test_col.save({test: i}); 
! Hilfe: 
>db.help() 
! Datenbanken, Schemas und Collections müssen nicht angelegt werden!
Index 
! Einfacher index: >db.test_col.ensureIndex({test:1}); 
! Per default immer ein Index auf dem _id Feld (ObjectID) 
! Index auf Embedded Fields: 
>db.test_col.ensureIndex({“test.fasel”:1}); 
! Index auf mehrer Felder 
>db.test_col.ensureIndex({test:1, blubbs:1}); 
! Sparse Index (mit Lücken) 
>db.test_col.ensureIndex({test:1}, {sparse: true}); 
! Unique Constraint 
>db.test_col.ensureIndex({test:1}, {unique: true}); 
! Kombinationen: 
>db.test_col.ensureIndex({test:1}, {unique: true, 
sparse:true});
Replica Set Sharding Setup 
Bilder Quelle: http://www.mongodb.org 
Mögliche Setups
Replica Sets und Sharding 
Replica Sets Sharding 
! Daten werden auf mehrere Server 
(Secondaries) verteilt 
! Client kann sicherstellen, dass Daten 
auf N Server repliziert wurden 
! Writes finden auf dem Primary statt 
! Reads können optional pro query 
verteilt werden 
! Automatischer Failover im Fehler Fall 
! Daten werden automatisch auf N 
shards verteilt 
! in Kombination mit Relica Sets 
werden die Daten dann repliziert 
! Writes auf alle Primary Shard Server 
! Reads optional auf allen Servern 
! Config Server halten Metadaten 
! Router Prozess verteilt Requests
mongoDB im Einsatz 
! Multi Purpose Backend Datenbank für: 
! Echtzeit Statistiken 
! Realtime Debugging und Error Reporting 
! Distributed File System 
! JSON Document Store 
! Geo Placemarks
Anwendung – Echtzeit Statistiken 
! Inline Erfassung von Statistkdaten 
! Unique User/Visitor Reporting 
! Usage Reporting 
! Response Time Reporting 
! Kann zu einem grossen Teil 
Reporting Cron Jobs ersetzen 
! Einfaches upsert mit vielen 
increments auf ein document 
! Client muss nicht auf write 
Ergebniss warten. 
5 
4.5 
4 
3.5 
3 
2.5 
2 
1.5 
1 
0.5 
0 
Service 
A 
Service 
B 
Service 
C 
Service 
D
Anwendung – Logging und Debugging 
! Inline Debugging 
! Inline Error Reporting (komplettes 
Erfassen des aktuellen Requests) 
! Caped Collections mit fester 
Grösse -> kein Überlaufen 
! die ältesten Einträge werden bei 
bedarf gelöscht 
! Platte kann nicht “voll laufen” 
! Ersetzt Error logging
Anwendung – Geo Daten 
>db.places.insert({loc: {lat: 50, lon: 50}}) 
>db.places.ensureIndex( { loc : "2d" } , { bits : 26 } ) 
>db.places.find( { loc : { $near : [50,50] , 
$maxDistance : 5 } } ).limit(20) 
Placemark Server ohne eine Zeile Code!
Demo 
repl1 
repl2 
repl3 
Client
Was gefällt ? 
! Konfiguration 
! Wartung, Failover, Recovery, Status Infos, Logging 
! Caped Collections 
! Geo Index 
! Grid FS und multiple Version Support für Files 
! Performance und Erweiterbarkeit 
! Einfache Massnahmen wie notablescan, noscripting
Worauf muss man achten? 
! 64 Bit Version verwenden - die 32 Bit Version kann nur 2,5 GB Daten 
verwalten 
! BSON /JSON Document Limit aktuell 16MB vorher 4MB 
! Default NameSpace Limit 24.000 / database (Collection und Index zählt 
dazu) 
! Bis zur Version 2.0 kein Support für Authentisierung auf sharding Systemen 
! Zum Testen Grösse der Datafiles einschränken: Option smallfiles
Vielen Dank für Ihre Aufmerksamkeit! 
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

More Related Content

What's hot

Startups in „Die Höhle der Löwen“ - SEODAY 2016
Startups in „Die Höhle der Löwen“ - SEODAY 2016Startups in „Die Höhle der Löwen“ - SEODAY 2016
Startups in „Die Höhle der Löwen“ - SEODAY 2016Dennis Oderwald
 
Integrierte und dedizierte Backup Lösung von GFI MAX
Integrierte und dedizierte Backup Lösung von GFI MAXIntegrierte und dedizierte Backup Lösung von GFI MAX
Integrierte und dedizierte Backup Lösung von GFI MAXMAX2014DACH
 
Automatisierte infrastruktur mit ansible
Automatisierte infrastruktur mit ansibleAutomatisierte infrastruktur mit ansible
Automatisierte infrastruktur mit ansibleStephan Hochhaus
 
Automatisierte Linux Administration mit (R)?ex
Automatisierte Linux Administration mit (R)?ex Automatisierte Linux Administration mit (R)?ex
Automatisierte Linux Administration mit (R)?ex Jan Gehring
 
Ladezeiten Verbessern - Css Und JavaScript Komprimieren
Ladezeiten Verbessern - Css Und JavaScript KomprimierenLadezeiten Verbessern - Css Und JavaScript Komprimieren
Ladezeiten Verbessern - Css Und JavaScript KomprimierenJoomla! User Group Fulda
 
9 WordPress Plugins für SEO, die reich und mächtig machen
9 WordPress Plugins für SEO, die reich und mächtig machen9 WordPress Plugins für SEO, die reich und mächtig machen
9 WordPress Plugins für SEO, die reich und mächtig machenAlexander Rus
 
Wordpress on steroids
Wordpress on steroidsWordpress on steroids
Wordpress on steroidsBlogwerk AG
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with AnsibleSusannSgorzaly
 
Share point rbs overview deutsch
Share point rbs overview deutschShare point rbs overview deutsch
Share point rbs overview deutschSamuel Zürcher
 
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import DataIntroduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import DataGunther Pippèrr
 
Der oracle dba_und_seine_passwoerter
Der oracle dba_und_seine_passwoerterDer oracle dba_und_seine_passwoerter
Der oracle dba_und_seine_passwoerterGunther Pippèrr
 

What's hot (15)

Startups in „Die Höhle der Löwen“ - SEODAY 2016
Startups in „Die Höhle der Löwen“ - SEODAY 2016Startups in „Die Höhle der Löwen“ - SEODAY 2016
Startups in „Die Höhle der Löwen“ - SEODAY 2016
 
Catup
CatupCatup
Catup
 
Integrierte und dedizierte Backup Lösung von GFI MAX
Integrierte und dedizierte Backup Lösung von GFI MAXIntegrierte und dedizierte Backup Lösung von GFI MAX
Integrierte und dedizierte Backup Lösung von GFI MAX
 
Java Servlets und AJAX
Java Servlets und AJAX Java Servlets und AJAX
Java Servlets und AJAX
 
Automatisierte infrastruktur mit ansible
Automatisierte infrastruktur mit ansibleAutomatisierte infrastruktur mit ansible
Automatisierte infrastruktur mit ansible
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
Grunt
GruntGrunt
Grunt
 
Automatisierte Linux Administration mit (R)?ex
Automatisierte Linux Administration mit (R)?ex Automatisierte Linux Administration mit (R)?ex
Automatisierte Linux Administration mit (R)?ex
 
Ladezeiten Verbessern - Css Und JavaScript Komprimieren
Ladezeiten Verbessern - Css Und JavaScript KomprimierenLadezeiten Verbessern - Css Und JavaScript Komprimieren
Ladezeiten Verbessern - Css Und JavaScript Komprimieren
 
9 WordPress Plugins für SEO, die reich und mächtig machen
9 WordPress Plugins für SEO, die reich und mächtig machen9 WordPress Plugins für SEO, die reich und mächtig machen
9 WordPress Plugins für SEO, die reich und mächtig machen
 
Wordpress on steroids
Wordpress on steroidsWordpress on steroids
Wordpress on steroids
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with Ansible
 
Share point rbs overview deutsch
Share point rbs overview deutschShare point rbs overview deutsch
Share point rbs overview deutsch
 
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import DataIntroduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
 
Der oracle dba_und_seine_passwoerter
Der oracle dba_und_seine_passwoerterDer oracle dba_und_seine_passwoerter
Der oracle dba_und_seine_passwoerter
 

Similar to mongoDB im Einsatz - Grundlagen

MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenTobias Trelle
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magentoAOE
 
Einführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenEinführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenTobias Trelle
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationSamuel Zürcher
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBTobias Trelle
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickKarin Patenge
 
2012-01-31 NoSQL in .NET
2012-01-31 NoSQL in .NET2012-01-31 NoSQL in .NET
2012-01-31 NoSQL in .NETJohannes Hoppe
 
MongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows AzureMongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows AzureJan Hentschel
 
Yes zu NoSQL mit MongoDB für .NET-Entwickler
Yes zu NoSQL mit MongoDB für .NET-EntwicklerYes zu NoSQL mit MongoDB für .NET-Entwickler
Yes zu NoSQL mit MongoDB für .NET-EntwicklerGregor Biswanger
 
Sql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSharepointUGDD
 
Sql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenSql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenCommunardo GmbH
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondUlrich Krause
 
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
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als CodeJan Gehring
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 

Similar to mongoDB im Einsatz - Grundlagen (20)

MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwalten
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 
Einführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenEinführung in NoSQL-Datenbanken
Einführung in NoSQL-Datenbanken
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
 
Daos
DaosDaos
Daos
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
2012-01-31 NoSQL in .NET
2012-01-31 NoSQL in .NET2012-01-31 NoSQL in .NET
2012-01-31 NoSQL in .NET
 
MongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows AzureMongoDB on Linux VM in Windows Azure
MongoDB on Linux VM in Windows Azure
 
Yes zu NoSQL mit MongoDB für .NET-Entwickler
Yes zu NoSQL mit MongoDB für .NET-EntwicklerYes zu NoSQL mit MongoDB für .NET-Entwickler
Yes zu NoSQL mit MongoDB für .NET-Entwickler
 
Amazon Redshift
Amazon RedshiftAmazon Redshift
Amazon Redshift
 
Sql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point Admins
 
Sql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenSql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint Administratoren
 
Node.js für Webapplikationen
Node.js für WebapplikationenNode.js für Webapplikationen
Node.js für Webapplikationen
 
GWT
GWTGWT
GWT
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
Hdc2012 cordova-präsi
Hdc2012 cordova-präsiHdc2012 cordova-präsi
Hdc2012 cordova-präsi
 
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
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 

More from inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegeninovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolutioninovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policiesinovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learninginovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungeninovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeteninovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetesinovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systemsinovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreiheninovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenteninovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Projectinovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretabilityinovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use caseinovex GmbH
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessinovex GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumiinovex GmbH
 

More from inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
 

mongoDB im Einsatz - Grundlagen

  • 1. Brownbag Session mongoDB im Einsatz Grundlagen 10.08.2012 Nils Domrose inovex GmbH Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
  • 2. “MongoDB wasn’t designed in a lab. We built MongoDB from our own experiences building large scale, high availability, robust systems. We didn’t start from scratch, we really tried to figure out what was broken, and tackle that. So the way I think about MongoDB is that if you take MySql, and change the data model from relational to document based, you get a lot of great features: embedded docs for speed, manageability, agile development with schema-less databases, easier horizontal scalability because joins aren’t as important. There are lots of things that work great in relational databases: indexes, dynamic queries and updates to name a few, and we haven’t changed much there. For example, the way you design your indexes in MongoDB should be exactly the way you do it in MySql or Oracle, you just have the option of indexing an embedded field.” – Eliot Horowitz, 10gen CTO and Co-founder
  • 3. ! Dokumenten orientierte Datenbank (Document Storage) ! Dynamisch Queries, Index Unterstützung, schemalos ! In C++ geschrieben ! High Availability Setups ! Auto Sharding ! MapReduce ! GridFS ! Projekt der Firma 10gen verfügbar unter AGPL Bilder Quelle: http://www.mongodb.org Über mongoDB www.mongodb.org
  • 4. Warum mongoDB ! einfache Installation, Konfiguration und Administration ! Migrationspfad für kleiner Setups ! Recht Universell einsetzbar, viele nützlich Funktionen ! Skalierbar ! Schnelle Weiterentwicklung (z.B. Datacenter aware Replication) ! Einfaches Interface, mächtiger Syntax, viele mitgelieferte Tools ! gute Dokumentation und wachsende Community
  • 5. Vorbereitungen ! Unter Debian 10gen apt sources Verwenden ! Version unter Debian queeze: 1.4.4 aktuell 2.0.7 $ apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 $ cat >/etc/apt/sources.list.d/10gen.list << EOF deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen EOF $ apt-get update; apt-get install mongodb-10gen
  • 6. Hello mongoDB ! Download für verschieden Platformen unter http://www.mongodb.org/downloads ! start des mongod Prozesses ! aufrufen des command line Clients “mongo”
  • 7. Erste Schritte Table = Collection = schemalose Sammlung von Dokumenten ! Wechsel in DatenBank: >use testdb ! Einfügen eines Dokuments in eine Collection: >db.test_col.insert({test: ‘mytest data’}) ! Suchen eines Dokuments: >db.test_col.find({test: ‘mytest data’}) ! Javascript ist möglich: >for (var i=1;i<= 20;i++) db.test_col.save({test: i}); ! Hilfe: >db.help() ! Datenbanken, Schemas und Collections müssen nicht angelegt werden!
  • 8. Index ! Einfacher index: >db.test_col.ensureIndex({test:1}); ! Per default immer ein Index auf dem _id Feld (ObjectID) ! Index auf Embedded Fields: >db.test_col.ensureIndex({“test.fasel”:1}); ! Index auf mehrer Felder >db.test_col.ensureIndex({test:1, blubbs:1}); ! Sparse Index (mit Lücken) >db.test_col.ensureIndex({test:1}, {sparse: true}); ! Unique Constraint >db.test_col.ensureIndex({test:1}, {unique: true}); ! Kombinationen: >db.test_col.ensureIndex({test:1}, {unique: true, sparse:true});
  • 9. Replica Set Sharding Setup Bilder Quelle: http://www.mongodb.org Mögliche Setups
  • 10. Replica Sets und Sharding Replica Sets Sharding ! Daten werden auf mehrere Server (Secondaries) verteilt ! Client kann sicherstellen, dass Daten auf N Server repliziert wurden ! Writes finden auf dem Primary statt ! Reads können optional pro query verteilt werden ! Automatischer Failover im Fehler Fall ! Daten werden automatisch auf N shards verteilt ! in Kombination mit Relica Sets werden die Daten dann repliziert ! Writes auf alle Primary Shard Server ! Reads optional auf allen Servern ! Config Server halten Metadaten ! Router Prozess verteilt Requests
  • 11. mongoDB im Einsatz ! Multi Purpose Backend Datenbank für: ! Echtzeit Statistiken ! Realtime Debugging und Error Reporting ! Distributed File System ! JSON Document Store ! Geo Placemarks
  • 12. Anwendung – Echtzeit Statistiken ! Inline Erfassung von Statistkdaten ! Unique User/Visitor Reporting ! Usage Reporting ! Response Time Reporting ! Kann zu einem grossen Teil Reporting Cron Jobs ersetzen ! Einfaches upsert mit vielen increments auf ein document ! Client muss nicht auf write Ergebniss warten. 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 Service A Service B Service C Service D
  • 13. Anwendung – Logging und Debugging ! Inline Debugging ! Inline Error Reporting (komplettes Erfassen des aktuellen Requests) ! Caped Collections mit fester Grösse -> kein Überlaufen ! die ältesten Einträge werden bei bedarf gelöscht ! Platte kann nicht “voll laufen” ! Ersetzt Error logging
  • 14. Anwendung – Geo Daten >db.places.insert({loc: {lat: 50, lon: 50}}) >db.places.ensureIndex( { loc : "2d" } , { bits : 26 } ) >db.places.find( { loc : { $near : [50,50] , $maxDistance : 5 } } ).limit(20) Placemark Server ohne eine Zeile Code!
  • 15. Demo repl1 repl2 repl3 Client
  • 16. Was gefällt ? ! Konfiguration ! Wartung, Failover, Recovery, Status Infos, Logging ! Caped Collections ! Geo Index ! Grid FS und multiple Version Support für Files ! Performance und Erweiterbarkeit ! Einfache Massnahmen wie notablescan, noscripting
  • 17. Worauf muss man achten? ! 64 Bit Version verwenden - die 32 Bit Version kann nur 2,5 GB Daten verwalten ! BSON /JSON Document Limit aktuell 16MB vorher 4MB ! Default NameSpace Limit 24.000 / database (Collection und Index zählt dazu) ! Bis zur Version 2.0 kein Support für Authentisierung auf sharding Systemen ! Zum Testen Grösse der Datafiles einschränken: Option smallfiles
  • 18. Vielen Dank für Ihre Aufmerksamkeit! Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.