mongodb im einsatz

14
MONGO DB IM EINSATZ Ein kleiner Einblick Nils Domrose Sunday, November 20, 11

Upload: ndomrose

Post on 12-Jun-2015

1.603 views

Category:

Technology


1 download

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

Page 1: MongoDb im Einsatz

MONGO DB IM EINSATZ

Ein kleiner Einblick

Nils Domrose

Sunday, November 20, 11

Page 2: MongoDb im Einsatz

Ü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

Page 3: MongoDb im Einsatz

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

Page 4: MongoDb im Einsatz

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

Page 5: MongoDb im Einsatz

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

Page 6: MongoDb im Einsatz

MÖGLICHE SETUPS

Bilder Quelle: http://www.mongodb.org

Replica Set Sharding Setup

Sunday, November 20, 11

Page 7: MongoDb im Einsatz

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

Page 8: MongoDb im Einsatz

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

Page 9: MongoDb im Einsatz

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

Page 10: MongoDb im Einsatz

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

Page 11: MongoDb im Einsatz

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

Page 12: MongoDb im Einsatz

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

Page 13: MongoDb im Einsatz

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