mongodb im einsatz
DESCRIPTION
Einführung in MongoDB sowie eine kurze Vorstellung von einigen Features bei der nosql user group Cologne am 3.8.2011 - http://www.nosql-cologne.org/2011/08/03/2-treffen-rest-und-mongodb/TRANSCRIPT
MONGO DB IM EINSATZ
Ein kleiner Einblick
Nils Domrose
Sunday, November 20, 11
ÜBER MONGO DBWWW.MONGODB.ORG
Dokumentenorientierte Datenbank (Document Storage)
In C++ geschrieben
High Availability Setups
Auto Sharding
MapReduce
GridFS
Projekt der Firma 10gen verfügbar unter GPL v3
Bilder Quelle: http://www.mongodb.org
Sunday, November 20, 11
WARUM MONGODB?
einfache Installation Konfiguration und Administration
Migrationspfad für bestehenden Installationen
Recht Universell einsetzbar, viele nützlich Funktionen
Skalierbar
Schnelle Weiterentwicklung (i.e. Datacenter aware Replication)
Einfaches Interface mächtiger Syntax viele mitgelieferte Tools
gute Dokumentation und wachsende Community
Sunday, November 20, 11
HELLO MONGODB
1. Download für verschieden Platformen unter http://www.mongodb.org/downloads
2. start des mongod Prozesses
3. aufrufen des command line Clients “mongo”
Sunday, November 20, 11
ERSTE SCHRITTETABLE = COLLECTION = SCHEMALOSE SAMMLUNG VON DOKUMENTEN
Wechseln in eine DatenBank: >use testdb
Einfügen eines Documents in eine Collection: >db.test_col.insert({test: ‘mytest data’})
Suchen eines Documents >db.test_col.find({test: ‘mytest data’})
Hilfe: >db.help()
Datenbanken, Schemas und Collections müssen nicht angelegt werden!
Sunday, November 20, 11
MÖGLICHE SETUPS
Bilder Quelle: http://www.mongodb.org
Replica Set Sharding Setup
Sunday, November 20, 11
REPLICA SET VS. SHARDING
Daten werden auf mehere Server (Slaves) verteilt
Client kann sicherstellen, dass Daten auf N Server repliziert wurden
Writes finden auf dem Master statt
Reads können optional pro query verteilt werden, müssen aber nicht
Automatische Failover im Fehler Fall
Daten werden automatisch auf N shards verteilt
in Kombination mit Relica Sets werden die Daten dann repliziert
Writes auf alle Shard Server
Reads optional auf allen Servern
Config Server halten Metadaten
Router Prozess verteilt Requests
Replica Sets Sharding
Sunday, November 20, 11
MONGODB IM EINSATZ
Multi Purpose Backend Datenbank als Replica Set für:
Echtzeit Statistiken
Subscription Engine (Push)
Realtime Debugging und Error Reporting
Distributed File System
JSON Fallback Cache
Geo Placemarks
Accounting
Sunday, November 20, 11
ECHTZEIT STATISTIKEN
inline Erfassung von Statistkdaten
unique User Reporting Monat, Tag, Jahr
Requests pro Modul pro App pro Useragent pro Stunde, Tag, Monat, Jahr etc.
eine “upsert” Datenbank operation auf einem sehr grossen Objekt mit vielen increments (usage Stats)
Ersetzt zu grossen Teilen Reporting Cron Jobs
Sunday, November 20, 11
DEBUGGING UND ERROR LOGGING
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
Sunday, November 20, 11
GEO DATEN UND MONGO
>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!
Sunday, November 20, 11
WAS GEFÄLLT
Konfiguration
Wartung, Failover, Recovery, Status Infos, Logging
Capped Collections
Geo Index
Grid FS multiple Version for each file
Performance und Erweiterbarkeit
Sunday, November 20, 11
WORAUF MAN ACHTEN SOLLTE
64 bit - die 32bit 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)
Sunday, November 20, 11
@endyman
Sunday, November 20, 11