Das Back to Basics – Webinar 1: Einführung in NoSQL
-
Upload
mongodb -
Category
Technology
-
view
885 -
download
0
Transcript of Das Back to Basics – Webinar 1: Einführung in NoSQL
Back to Basics 2016 : Webinar 1
Einführung in NoSQL
Benjamin LorenzSenior Solutions Architect
MongoDB Frankfurt
HERZLICH WILLKOMMEN!
4
Kursplan
Datum Uhrzeit Webinar31. Mai 2016 14:00 CEST Einführung in NoSQL 16. Juni 2016 14:00 CEST Ihre erste MongoDB-Anwendung 1. Juli 2016 14:00 CEST Schema-Design – Denken in Dokumenten 12. Juli 2016 14:00 CEST Fortschrittliche Indizierung, Text- und Geoindizes 26. Juli 2016 14:00 CEST Einführung in das Aggregation-Framework 30. August 2016 14:00 CEST Produktivsetzung einer Anwendung
5
Ablauf heute
• Warum NoSQL• Unterschiedliche Typen von NoSQL-Datenbanken• MongoDB: Detaillierte Übersicht• MongoDB Dauerhaftigkeit (durability) – Replica Sets• MongoDB Skalierbarkeit – Sharding• Fragen & Antworten
6
Relationale Datenbanken
Expressive Abfragesprache& sekundäre Indizes
Strenge Konsistenz
Enterprise-Management& Integration
7
Die Welt hat sich verändert
Daten Risiken Zeit Kosten
8
NoSQL
Skalierbarkeit& Leistung
Immer lauffähig,Globale Bereitstellung
FlexibilitätExpressive Abfragesprache& sekundäre Indizes
Strenge Konsistenz
Enterprise-Management& Integration
9
Nexus-Architektur
Skalierbarkeit& Leistung
Immer lauffähig,Globale Bereitstellung
FlexibilitätExpressive Abfragesprache& sekundäre Indizes
Strenge Konsistenz
Enterprise-Management& Integration
10
Typen von NoSQL-Datenbanken
• Key/Value-Datenbanken• Spaltenorientierte Datenbanken• Graphdatenbanken• Multi-Model-Datenbanken• Dokumentenorientierte Datenbanken
11
Key/Value-Datenbanken
• Assoziatives Array• Extrem schnelles Single-Key-Lookup• Nicht so gut geeignet für Rückwärtssuche
Key Value
12345 4567.3456787
12346 { addr1 : “The Grange”, addr2: “Dublin” }
12347 “top secret password”
12358 “Shopping basket value : 24560”
12787 12345
12
Erinnerung: Zeilenorientierte Datenbanken (RDBMS)
• Speichern Daten in Zeilen ab (traditionelles RDBMS, z.B. MySQL)• Bei Abfragen wird jedes Mal eine vollständige Zeile gelesen• Auslesen von nur ein oder zwei Spalten verschwendet Ressourcen
ID Name Gehalt Start-Datum
1 Joe D 24.000 € 1. Jun 1970
2 Peter J 28.000 € 1. Feb 1972
3 Phil G 23.000 € 1. Jan 1973
1 Joe D 24.000 € 1. Jun 1970 2 Peter J 28.000 € 1. Feb 1972 3 Phil G 23.000 € 1. Jan 1973
13
Wie funktioniert eine spaltenorientierte Datenbank?
1 2 3
ID Name Gehalt Anfangsdatum
1 Joe D 24.000 € 1. Jun 1970
2 Peter J 28.000 € 1. Feb 1972
3 Phil G 23.000 € 1. Jan 1973
Joe D Peter J Phil G 24.000 € 28.000 € 23.000 € 1. Jun 1970 1. Feb 1972 1. Jan 1973
14
Warum ist das attraktiv?
• Plattenzugriff „am Stück“ ermöglicht effizientes Lesen einer Spalte• Die Komprimierung ähnlicher Daten ist extrem effizient• Mit einem Plattenzugriff können somit mehr Daten abgerufen werden• Werden nur einzelne Spalten benötigt, müssen hierfür nicht alle
Zeilen ausgelesen werden• Aber:
– Zeilen zu aktualisieren oder zu löschen ist teuer• Besser für OLAP geeignet als für OLTP
15
Graphdatenbanken
• Speichern Graphen (Kanten und Ecken)• Beispiel: Soziale Netzwerke• Effizientes Folgen von Kanten• Optimiert für die Repräsentation von Verbindungen• Keine Graphen, dann keine Graphdatenbank verwenden!
16
Multi-Model-Datenbanken
• Kombination mehrerer Speicher-/Zugriffsmodelle• Häufig Graph + „X“• Löst Problem, mehrere Datenbanken synchron halten zu müssen• Der „letzte Schrei“ im Bereich NoSQL
17
Dokumentenorientierte Datenbanken• Keine PDF-, Word- oder HTML-Dokumente• Dokumente sind verschachtelte Strukturen, die mit Javascript Object Notation (JSON) erstellt
werden
{ name : “Benjamin Lorenz”,title : “Senior Solutions Architect”,Address : {address : “An der Welle 4”,city : “Frankfurt”,zip_code : “60322”,}expertise: [ “MongoDB”, “Python”, “Javascript” ],employee_number : 521,location : [ 53.34, -6.26 ]
}
18
Mit MongoDB werden Dokumente typisiert
{
name : “Benjamin Lorenz”,
title : “Senior Solutions Architect”,
Address : {
address : “An der Welle 4”,
city : “Frankfurt”,
zip_code : “60322”,
}
expertise: [ “MongoDB”, “Python”, “Javascript” ],
employee_number : 521,
location : [ 53.34, -6.26 ]
}
Strings
Verschachteltes Dokument
Array
Integer
Geokoordinaten
19
MongoDB versteht JSON-Dokumente
• Native JSON-Datenbank seit der ersten Version• Kann Unterstrukturen verstehen und indizieren• Speichert JSON binär als BSON • Effiziente Kodierung und Dekodierung zur Netzwerkübertragung• MongoDB kann Indizes für jedes Dokumentenfeld erstellen• ...mehr dazu im weiteren Kursverlauf
20
Warum Dokumente?• Dynamisches Schema• Wegfall des objekt-relationalen Mappings• Implizite Denormalisierung der Daten zur Leistungssteigerung
21
Warum Dokumente?• Dynamisches Schema• Wegfall des objekt-relationalen Mappings• Implizite Denormalisierung der Daten zur Leistungssteigerung
22
MongoDB bietet sämtliche Funktionen
Leistungsstarke Abfragen
• Pauls Autos finden• Alle Frankfurter Autobesitzer zwischen 1970
und 1980 finden
Geokoordinaten • Alle Autobesitzer im Umkreis von 5 km des Frankfurter Messeturms finden
Textsuche • Alle Autos finden, die laut Beschreibung mit Ledersitzen ausgestattet sind
Verdichtung • Durchschnittswert von Pauls Autosammlung berechnen
Map Reduce • Finde Muster bzgl. Farben, Ort und Zeit („gibt es in China einen Trend zu Lila?“)
23
Hohe Verfügbarkeit und Dauerhaftigkeit – Replica Sets
SekundärSekundär
Primär
24
Erzeugung eines Replica Sets
SekundärSekundär
Primär
Heartbeat
25
Ausfall eines Servers
SekundärSekundär
Primär
Kein Heartbeat
26
Wiederherstellung der Funktionalität
SekundärSekundär
HeartbeatWahl eines neuen Primär-Knotens
27
Neues Replica Set – 2 Knoten
SekundärPrimär
HeartbeatNeuer Primär-Knoten
28
Reparatur des Replica Sets
SekundärPrimär
Sekundär
Neuer Verbundund Synchronisation
29
Stabiles Replica Set
SekundärPrimär
Sekundär
Heartbeat
30
Skalierbarkeit mit Sharding
Shard 1 Shard 2 Shard N
31
Skalierbarkeit mit Sharding
• Shard-Schlüssel partitioniert Inhalt• MongoDB balanciert Datenmenge im Cluster automatisch• Shards können dem Live-System dynamisch hinzugefügt werden• Neue Ausbalancierung erfolgt im Hintergrund• Shard-Schlüssel ist unveränderbar• Shard-Schlüssel ermöglicht es, Abfragen an ein einzelnes Shard
zu richten• Abfragen ohne Shard-Schlüssel werden an alle Shards gesendet
32
Skalierbarkeit mit ShardingMongoS MongoS
Shard 1 Shard 2 Shard N
Shard-Schlüssel
33
Abfrage-Routing
• Sharded Cluster nutzen einen Router zur Verteilung der Abfragen• Daemon namens MongoS (Mongo Shard Router)• Daemon ist zustandslos• Kann so oft instanziiert werden wie nötig• Typischerweise eine Instanz pro App-Server
34
Zusammenfassung
• Warum NoSQL• Unterschiedliche Typen von NoSQL-Datenbanken• Die wichtigsten Merkmale von MongoDB• Dauerhaftigkeit in MongoDB• Skalierbarkeit in MongoDB
35
Nächstes Webinar – Ihre erste MongoDB-Anwendung
• 16. Juni 2016, 14:00 CEST• Bitte Anmeldung nicht vergessen• Entwicklung einer eigenen MongoDB-Anwendung• Datenbanken und Collections erstellen• Abfragen formulieren• Indizes erstellen• Performance verstehen• Feedback an [email protected]
Fragen und Antworten