das back to basics – webinar 1: einführung in nosql

Post on 14-Apr-2017

884 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 back-to-basics@mongodb.com

Fragen und Antworten

top related