 
                                Einführung in NoSql-Datenbanken und der Vergleich zu relationalen Datenbanken © 2012 TravelTainment Alexey Sibirtsev  Einleitung  NoSql-Eigenschaften  Brewer‘s Theorem  Konsistenz in NoSql-Datenbanken  Datenbanktypen   Key-Value Datenbanken  Graphenorientierte Datenbanken  Dokumentorientierte Datenbanken  Spaltenorientierte Datenbanken Fazit/Ausblick © 2012 TravelTainment Ablauf  1998: Erste Erwähnung des NoSql-Begriffes von Carlo Strozzi, gemeint als „No Sql“  2009: Neudefinition des Begriffes als „Not Only Sql“  Woher kommt die Popularität?  Unternehmen mit bis zu 1000 Mitarbeitern lagern ca. 3.8 Petabyte Daten  Der Datenzuwachs eines solchen Unternehmens beträgt 40 Prozent pro Jahr  Täglich entstehen 2.5 Quintillionen Byte (= 2*10^5 Petabyte)  90% der Daten, die aktuell im Umlauf sind, entstanden in den letzten 2 Jahren  Abhängigkeit und Vernetzung der Daten nimmt zu (z.B. durch soziale Netzwerke) Einleitung Eigenschaften Brewser‘s Theorem BASE-Modell © 2012 TravelTainment Einleitung Einleitung  Wieso sind relationale Datenbanken nicht mehr so gut geeignet?   Prüfung der korrekten Datenstrukturen  Bildung von Relationen zwischen den Daten Komplex vernetzte Daten sind schwer darzustellen  Unterteilen in viele Tabellen wird notwendig  Zusammenführen vieler Tabellen ist zeitaufwendig © 2012 TravelTainment  Werden mit einer wachsenden Datenmenge schnell langsamer Einleitung Eigenschaften Brewser‘s Theorem BASE-Modell NoSql-Eigenschaften    Verzicht auf ein festes Schema  Keine Relationen oder feste Datenstrukturen vorhanden  Speicherung der Daten wird flexibler gestaltet Verzicht auf die Abfragesprache SQL  Kein allgemeiner NoSql-Standard vorhanden  Kommunikationsschnittstellen werden in der jeweiligen Implementierung zur Verfügung gestellt Ausfalltoleranz, Verfügbarkeit und horizontale Skalierbarkeit Datenbanken werden als verteilte Systeme implementiert © 2012 TravelTainment  Einleitung Eigenschaften Brewser‘s Theorem BASE-Modell Brewer‘s Theorem  Tritt bei verteilten Systemen in Kraft  Beschreibt den Zusammenhang zwischen drei wichtigen Eigenschaften in solchen Systemen Consistency (Konsistenz): Gleiche Daten auf jedem Client  Availability (Verfügbarkeit): Ständige Verfügbarkeit und Erreichbarkeit des Systems  Partition Tolerance (Ausfalltoleranz): Korrekte Funktionsweise bei Ausfall von Verbindungen oder Servern Nur zwei dieser Eigenschaften sind in einem verteilten System erfüllbar! © 2012 TravelTainment   Eigenschaften Brewser‘s Theorem BASE-Modell Datenbanktypen Brewer‘s Theorem  Wieso sind nur zwei Eigenschaften erfüllbar?  Ein Beispiel:  Ausfalltolleranz: Ein verteiltes System mit redundanten Daten wird benötigt  Konsistenz: Datensätze müssen bei Aktualisierungen auf allen Servern gesperrt werden  Dieses Sperren ist zeitaufwändig © 2012 TravelTainment -> Verfügbarkeit kann nicht mehr erreicht werden! Eigenschaften Brewser‘s Theorem BASE-Modell Datenbanktypen Brewer‘s Theorem  Verteilte relationale Datenbanken:  Konsistenz steht im Vordergrund  ACID-Prinzipien müssen befolgt werden  Realisierung der anderen Eigenschaft über hochwertige und leistungsfähige Hardware (vertikale Skalierung)  Kostenintensiv! Verteilte NoSql-Datenbanken:  Ausfalltolleranz und Verfügbarkeit stehen im Vordergrund  Häufige Verwendung bei Internetanwendungen (z.B: Online-Shops)  Gewinnverlust, wenn ein Systemausfall vorliegt oder die Verfügbarkeit nicht vorhanden ist  Verzicht auf die Konsistenz und somit auf das ACIDKonsistenzmodell Eigenschaften Brewser‘s Theorem BASE-Modell Datenbanktypen © 2012 TravelTainment  Konsistenz in NoSql-Datenbanken  BASE-Konsistenzmodell (Basically Available, Soft State, Eventually Consistent):  Daten wechseln zwischen einem konsistenten und einem inkonsistenten Zustand  Die Daten sind nur zu bestimmten Zeitpunkten für alle Clients konsistent Konkurrierender Zugriff wird über das Multiversion Concurrency Control Verfahren geregelt  Ersatz für die Sperren, die in relationalen Datenbanken verwendet werden  Versionierung von Datensätzen  Es liegt immer eine Version des Datensatzes bereit Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick © 2012 TravelTainment  © 2012 TravelTainment Die wichtigsten NoSql-Datenbanktypen Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick Key-Value-Datenbanken  Mit assoziativen Feldern aus der Programmierung vergleichbar  Ein Wert wird einem Schlüssel zugewiesen  On-Disk und In-Memory Varianten:  On-Disk: Speicherung der Daten auf der Festplatte  In-Memory: Speicherung der Daten im Arbeitsspeicher © 2012 TravelTainment  Der Wert kann eine komplexe Datenstruktur (z.B. eine Liste oder ein assoziatives Feld darstellen) Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick Key-Value-Datenbanken  Vorteile:  Schnelle Zugriffszeiten von O(1)  Im Gegensatz zu relationalen Datenbanken sind die Zugriffszeiten unabhängig von der Datenmenge  Gute horizontale Skalierbarkeit  Verwendung einer Hash-Funktion, um einen Server zu einem Schlüssel zu bestimmen -> Zeitersparnis Nachteile:  Umständlich nach einem Wert zu suchen   Zusätzliche Verweise vom Wert auf den Schlüssel und somit wechselseitige Beziehungen wären nötig Datenverlust schnell möglich, falls ein Schlüssel versehentlich überschrieben wird Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick © 2012 TravelTainment   Bereits seit den 60er Jahren bekannt  Sollten ursprünglich als Allzweckdatenbanksystem dienen  Vom einfacheren relationalen Ansatz verdrängt worden  Steigendes Interesse an diesen Datenbanken, da die graphenstrukturen im Internet wachsen  Vor allem für soziale Netzwerke (z.B. Twitter) brauchbar  Bestehen aus Knoten und Kanten Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick © 2012 TravelTainment Graphenorientierte Datenbanken Graphenorientierte Datenbanken Vorteile:  Bilden reale Netzwerkstrukturen (z.B. soziales Geflecht aus Freunden und Bekannten) direkt ab und erleichtern somit das Verständnis für diese  Die Suche bleibt unabhängig von der Größe der Netzwerkstruktur stets performant    Gleiche Zeit für einen Kantenschritt  Verzicht auf die rechenintensiven JOIN-Operationen Verwendung von Algorithmen aus der Graphentheorie, um die Performance zu verbessern Nachteile:  Einsatz wird komplex, falls für einen unpassenden Anwendungsfall verwendet  Nutzbarkeit komplizierter  Keine einfach verständliche Abfragesprache, die in allen Graphendatenbanken gilt Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick © 2012 TravelTainment  Dokumentorientierte Datenbanken Arbeiten mit Dokumenten statt mit Tabellen  Dokumente sind keine „Textdateien“, sondern Sammelcontainer  Ein solcher Sammelcontainer enthält Schlüssel-WertPaare  Der Wert darf auch nicht atomare Inhalte, wie ein Feld oder eine Datei beinhalten  Die Schlüssel sind innerhalb des Dokuments eindeutig © 2012 TravelTainment  Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick Dokumentorientierte Datenbanken  Vorteile:  Freiheit für den Benutzer, da jedes Dokument verschiedene Schlüssel enthalten kann  Speicherung und Darstellung der Daten in dem JSONFormat  Arbeiten mit zusammenhängenden Daten wird erleichtert  Zusammenhängende Daten werden geschlossen in Dokumenten gespeichert  Es müssen nicht zunächst viele Tabellen zusammengeschlossen werden Nachteile:  Prüfung der Plausibilität muss auf die Anwendungsebene verlagert werden Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick © 2012 TravelTainment  Spaltenorientierte Datenbanken  Grundlegend anderes Speicherprinzip als bei relationale Datenbanken  Datensätze werden spaltenweise abgespeichert  Column Families statt Tabellen Haben keine Struktur  Können beliebig viele Spalten enthalten © 2012 TravelTainment  Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick Spaltenorientierte Datenbanken   Beispiel einer Mitarbeiterliste: MitarbeiterID Name Jahresgehalt 1 Muster 30000 2 Testperson 32000 Speicherung in einer relationalen Datenbank:   1, Muster, 30000; 2, Testperson, 32000; Speicherung in einer spaltenorientierten Datenbank: 1, 2; Muster, Testperson; 30000, 32000; © 2012 TravelTainment  Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick Spaltenorientierte Datenbanken  Vorteile:  Schnellere Durchführung von Analysen, die meistens über eine einzige Spalte stattfinden  Relationale Datenbank:  Spalte jedes Datensatzes muss einzeln abgerufen werden -> viele sequentielle Lesezugriffe auf den Arbeitsspeicher  Spaltenorientierte Datenbank:  Spalte muss einmal ermittelt werden -> danach Iteration durch den zugehörigen Arbeitsspeicher Speicherersparnis:  Keine Speicherreservierung für leere Einträge  Gleiche Datentypen nebeneinander, somit bessere Ablage im Speicher  Verwendung von Komprimierungsverfahren, da gleiche Datentypen nebeneinander (z.B. Zusammenfassung von Sequenzen) Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick © 2012 TravelTainment  Spaltenorientierte Datenbanken  Nachteile:  Schlechter Umgang mit Ad-Hoc Abfragen   Flexible Abfragen, die beliebige Daten zurückgeben können. Die Struktur der Datenbank spielt bei diesen Abfragen keine Rolle Datenbankstruktur muss an die später verwendeten Datenbankabfragen angepasst werden Schlechtere Flexibilität © 2012 TravelTainment  Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick Fazit/Ausblick  Nicht standardisiert -> Schreckt viele Unternehmen von der Verwendung ab  Große Unternehmen (z.B. Amazon, Google) setzen NoSql-Datenbanken erfolgreich ein  Nicht für alle Anwendungsfälle gedacht  Viel Potential für neue Fortschritte und Ideen: Multiversion Concurrency Control Verfahren  MapReduce Verfahren © 2012 TravelTainment  Brewser‘s Theorem BASE-Modell Datenbanktypen Fazit/Ausblick © 2012 TravelTainment Fragen? © 2012 TravelTainment Vielen Dank!