Brownbag Session 
mongoDB im Einsatz 
Grundlagen 
10.08.2012 
Nils Domrose 
inovex GmbH 
Wir nutzen Technologien, um unser...
“MongoDB wasn’t designed in a lab. We built MongoDB from our own 
experiences building large scale, high availability, rob...
! Dokumenten orientierte Datenbank (Document Storage) 
! Dynamisch Queries, Index Unterstützung, schemalos 
! In C++ gesch...
Warum mongoDB 
! einfache Installation, Konfiguration und Administration 
! Migrationspfad für kleiner Setups 
! Recht Uni...
Vorbereitungen 
! Unter Debian 10gen apt sources Verwenden 
! Version unter Debian queeze: 1.4.4 aktuell 2.0.7 
$ apt-key ...
Hello mongoDB 
! Download für verschieden Platformen unter 
http://www.mongodb.org/downloads 
! start des mongod Prozesses...
Erste Schritte 
Table = Collection = schemalose Sammlung von Dokumenten 
! Wechsel in DatenBank: 
>use testdb 
! Einfügen ...
Index 
! Einfacher index: >db.test_col.ensureIndex({test:1}); 
! Per default immer ein Index auf dem _id Feld (ObjectID) 
...
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...
mongoDB im Einsatz 
! Multi Purpose Backend Datenbank für: 
! Echtzeit Statistiken 
! Realtime Debugging und Error Reporti...
Anwendung – Echtzeit Statistiken 
! Inline Erfassung von Statistkdaten 
! Unique User/Visitor Reporting 
! Usage Reporting...
Anwendung – Logging und Debugging 
! Inline Debugging 
! Inline Error Reporting (komplettes 
Erfassen des aktuellen Reques...
Anwendung – Geo Daten 
>db.places.insert({loc: {lat: 50, lon: 50}}) 
>db.places.ensureIndex( { loc : "2d" } , { bits : 26 ...
Demo 
repl1 
repl2 
repl3 
Client
Was gefällt ? 
! Konfiguration 
! Wartung, Failover, Recovery, Status Infos, Logging 
! Caped Collections 
! Geo Index 
! ...
Worauf muss man achten? 
! 64 Bit Version verwenden - die 32 Bit Version kann nur 2,5 GB Daten 
verwalten 
! BSON /JSON Do...
Vielen Dank für Ihre Aufmerksamkeit! 
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
Upcoming SlideShare
Loading in …5
×

mongoDB im Einsatz - Grundlagen

610 views

Published on

Nils Domrose, inovex GmbH, August 2014

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
610
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

mongoDB im Einsatz - Grundlagen

  1. 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. 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. 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. 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. 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. 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. 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. 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. 9. Replica Set Sharding Setup Bilder Quelle: http://www.mongodb.org Mögliche Setups
  10. 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. 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. 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. 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. 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. 15. Demo repl1 repl2 repl3 Client
  16. 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. 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. 18. Vielen Dank für Ihre Aufmerksamkeit! Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

×