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!