6. Grundkonzept MongoDB-Server
Server
Relationales
Database
Pendant Aber …
Flexibles
Tabelle Collection
Schema
Zeile Document
- Arrays
Spalte Field
- Rekursiv
codecentric AG 6
9. 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 9
10. BSON Beispiel
{ hello: "MongoDB" }
x18x00x00x00
x02
hellox00
x08x00x00x00MongoDBx00
x00
codecentric AG 10
11. Live Session
CRUD Operations Replication
Queries Sharding
Geospatial Queries MongoDB Java Driver &
Spring Data MongoDB
Map/Reduce
codecentric AG 11
13. 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 13
14. Map/Reduce
Algorithmus/Framework für Berechnungen auf
Datenmengen basierend auf zwei Phasen:
Map & Reduce
Die Map-Phase kann nebenläufig und verteilt (im Cluster)
auf großen Datenmengen (Petabytes) ausgeführt werden
Apache Hadoop
codecentric AG 14
15. Map/Reduce mit MongoDB
Wird auf einer Untermenge / allen Dokumenten einer
Collection ausgeführt
Map / Reduce-Funktionen sind in JavaScript implementiert
Ergebnisse sind Dokumente in einer Ziel-Collection
codecentric AG 15
17. Aggregation Framework
Seit Version 2.2
Alternative zu Map/Reduce
db.docs.aggregate(
{$project:{_id:0,tags:1}},
{$unwind: "$tags"},
{$group:{_id:"$tags", n:{$sum:1}}}
)
codecentric AG 17
18. MongoDB Replikation: Replica Sets
Grundprinzip: Master/Slave + Election
Writes nur auf den Master, Reads ggfs. auch von Slaves
Slaves wählen automatisch neuen Master bei Ausfall
Replica Set, n = 3
Secondary 1
Client Primary
Secondary 2
codecentric AG 18
19. MongoDB Sharding
Fragmentierung der Daten auf n Sharding-Knoten,
jedes Dokument wird einmal persistiert
Config Server = Buchhalter für Meta-Daten
Switch: Gateway
Sharding Setup
für die Clients
Config Shard 1
Server
Client Switch Shard 2
codecentric AG 19
23. MongoDB Treiber
Ein Wire-Protokoll für alle Client-Sprachen
Pro Sprache ein Treiber
Übersicht:
http://www.mongodb.org/display/DOCS/Drivers
codecentric AG 23
24. MongoDB Treiber
Beispiele
Sprache Struktur
JavaScript, Python {“hello": “MongoDB" }
Ruby, Perl {“hello" => “MongoDB" }
C++ BSONObj p = BSON(“hello" << “MongoDB");
Java DBObject obj = new BasicDBObject();
obj.put(“hello", “MongoDB");
codecentric AG 24
25. MongoDB Treibers
Wesentliche Aufgaben eines Treibers
Konvertierung der sprachabh. Datenstrukturen
BSON-Format
Generierung der _id-Werte
Treiber macht möglichst viel, um Server zu
entlasten
codecentric AG 25
26. MongoDB Java-Treiber
Einzelnes JAR ohne weitere Abhängigkeiten
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.10.0</version>
</dependency>
github: https://github.com/mongodb/mongo-java-driver
codecentric AG 26
27. Spring Data MongoDB
Spring Data
CrudRepository PagingAndSortingRepository
Spring Data Spring Data Spring Data Spring Data
JPA MongoDB Neo4j …
JpaRepository MongoRepository GraphRepository
MongoTemplate Neo4jTemplate
Embedded REST
JPA Mongo Java Driver
JDBC
RDBMS MongoDB Neo4j …
codecentric AG 27
28. Spring Data MongoDB
Template
Abstraktion vom MongoDB Java Driver
Konfiguration von mongod / mongos-Instanzen und Collections
Verwaltung von Collections
Map/Reduce-Aufrufe
Object Mapping
Annotationen @Document, @Field, @Index etc.
Klassen werden auf Collections abgebildet, Java-Objekte auf Dokumente
Repository Support
Schlüsselwörter werden auf Query-Operatoren abgebildet
Geospatial Queries
codecentric AG 28
29. MongoDB User-Gruppen (MUGs)
MongoDB User-Gruppe Düsseldorf MongoDB User-Gruppe Berlin
https://www.xing.com/net/mongodb-dus http://www.meetup.com/MUGBerlin/
@MongoDUS @MUGBerlin
MongoDB User-Gruppe Frankfurt/Main Hamburg MongoDB User Group
https://www.xing.com/net/mongodb-ffm https://www.xing.com/net/mugh
@MongoFFM
MongoDB User-Gruppe München
http://www.meetup.com/Muenchen-MongoDB-User-Group/
@mongomuc
codecentric AG 29
30. QUESTION?
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
codecentric AG 30