NoSQL-Datenbanken Kapitel 1: Einführung Lars Kolb Sommersemester 2014 Universität Leipzig http://dbs.uni-leipzig.de 1-1 Inhaltsverzeichnis • NoSQL-Datenbanken – Motivation und Definition – Kategorisierung, Eigenschaften • CAP-Theorem – ACID-Eigenschaften – BASE-Ansatz 1-2 Massives Datenwachstum Quelle: http://hortonworks.com/blog/7-key-drivers-for-the-big-data-market/ • IBM (2012) – Pro Tag werden 2,5 Exabytes an Daten generiert – 90% aller Daten weltweit wurden in den letzten 2 Jahren erzeugt 1-3 Datenproduzenten Quelle: Einführungsveranstaltung Seminar “New Trends in Big Data” WS 2013/14 1-4 Big Data Challenges Quelle: http://kavyamuthanna.wordpress.com/category/big-data/ 1-5 Parallele DBS? • Anforderung: Effiziente Verarbeitung großer Datenmengen… – – – – in einer preiswerten, verteilten (heterogenen) Infrastruktur mit konkurrierenden Schreib- und Lesezugriffen unter Berücksichtigung von Knoten- bzw. Netzwerkausfällen für beliebige Daten (unstrukturiert, semi-strukturiert, strukturiert) • Parallele Datenbanksysteme ungeeignet ... – – – – teure, homogene Infrastruktur geringe Fehlertoleranz (z.B. Query-Restart) nur für strukturierte Daten (statisches Schema) begrenzte Skalierbarkeit (ca. 100 Knoten) • ... dafür – mächtige, einfache Anfragesprache – ACID-Eigenschaften – Datenunabhängigkeit 1-6 NoSQL-Datenbanken • Keine standardisierte Definition • Datenbanksystem, das eines oder mehrere der folgenden Kriterien aufweist – Kein relationales Datenmodell • Schemafrei oder schwache Schemarestriktionen • Keine Joins / keine Normalisierung – Verteiltes, auf horizontale Skalierbarkeit ausgelegtes System • “Commodity Hardware” – “Kein SQL” • Zugriff mit einfacher API statt SQL – “Keine Transaktionen” • Konsistenzmodell BASE statt ACID 1-7 Motivation NoSQL-Datenbanken • Relationales Schema zu starr für viele Webanwendungen – Evolution: Änderung der Webanwendung führt meist zu Schemaänderung – Datenstruktur: Heterogene Informationsarten führen zu großen, unübersichtlichen Schemas (u.a. einfache mengenwertige Attribute z.B. Tags) – Impedence Mismatch – Anfrage: Wartbarkeit komplexer SQL-Anfragen (viele Joins) • Vorteile relationaler Modellierung spielen geringere Rolle – Data Store meist nur für eine Anwendung, daher Datenunabhängigkeit kein Ziel – Effiziente SQL-Ausführung (Optimierung) durch komplexe Anfragen begrenzt • Fokus: Performanz und Verfügbarkeit – begrenzte Skalierbarkeit paralleler Datenbanksysteme – geringe Fehlertoleranz (z.B. Query-Restart) 1-8 Kategorisierung von NoSQL-Datenbanken • Key-Value Stores ( Kapitel 2) http://cattell.net/datastores/Datastores.pdf – Amazon Dynamo, MemCacheDB, Voldemort, Riak, Redis, Scalaris, ... – Speicherung eines Werts (z.B. BLOB) pro nutzer-definiertem Schlüssel – Zugriff über Schlüssel, d.h. put (key, value) und get (key) -Methode • Document Stores ( Kapitel 3) – SimpleDB, CouchDB, MongoDB, Terrastore, ... – Speicherung semistrukturierter Daten als Dokument (z.B. JSON) – Zugriff über Schlüssel oder einfache Anfragesprache • Extensible Record Stores (Wide-column stores) ( Kapitel 5) – BigTable / HBase, HyperTable, Cassandra, ... – Tabellen-basierte Speicherung mit flexibler Erweiterung um neue Attribute – Zugriff über Schlüssel oder SQL-ähnliche Anfragesprache • Scalable Relational Databases ( Kapitel 5) – MySQL Cluster, MegaStore, VoltDB, Clustrix, ScaleDB, ScaleBase, NimbusDB, ... 1-9 Inhaltsverzeichnis • NoSQL-Datenbanken – Definition und Motivation – Kategorisierung, Eigenschaften • CAP-Theorem – ACID-Eigenschaften – BASE-Ansatz 1-10 Performantes, verteiltes Datenmanagement • Annahmen („Irrtümer“) der verteilten Datenverarbeitung – Das Netzwerk ist ausfallsicher, sicher und homogen – Die Latenzzeit ist gleich Null, der Datendurchsatz unendlich und die Kosten des Datentransports können mit Null angesetzt werden – Die Netzwerktopologie ist unveränderlich http://de.wikipedia.org/wiki/Fallacies_of_Distributed_Computing • Verteilte Datenverarbeitung erfordert Kommunikation zwischen Knoten – u.a. Synchronisation und Replikation – robust gegen Knotenausfälle, Nachrichtenverlust, ... • Tradeoff: Performanz vs. Datenkonsistenz – Warten bis alle (relevanten) Knoten synchronisiert sind – Vermeidung (oder Auflösung) von Mischkonflikten 1-11 CAP-Theorem [Bre00] [GL02] • CAP = Consistency, Availability, Partitioning Tolerance • Consistency (Konsistenz) – System funktioniert entweder “voll” oder “gar nicht” ( ACID-Atomarität) – Alternativ: Updates werden bei allen relevanten Knoten zur gleichen “logischen” Zeit durchgeführt, d.h. alle Knoten sehen zur selben Zeit die selben Daten. • Availability (Verfügbarkeit) – Jede Lese/Schreib-Anfrage an einen “non-failing” Knoten wird beantwortet – Knotenausfälle beeinflussen nicht die Verfügbarkeit “lebender” Knoten • Partioning tolerance (Partitionstoleranz) – System funktioniert trotz Verlust von Nachrichten zwischen Knoten – Netzwerk-Partitionierung = Knoten aus einer Partition können nicht mehr mit Knoten aus anderer Partition kommunizieren • Theorem: Ein verteiltes System kann maximal zwei der drei Eigenschaften gleichzeitig erfüllen. 1-12 CAP-Fälle • CA – keine Partitionstoleranz – (Relationale) Datenbank ermöglicht verteilte Transaktionen zur Konsistenzwahrung – Voraussetzung: funktionierendes Netzwerk (kein Nachrichtenverlust) • CP – keine Verfügbarkeit – im Falle von Netzwerkpartitionierung werden Transaktionen blockiert – Vermeidung möglicher Konflikte bei Merge, dadurch Sicherstellung der Konsistenz • AP – keine Konsistenz – Writes stets möglich auch wenn keine Kommunikation mit anderen Knoten möglich (z.B. Synchronisation) – Notwendigkeit der Auflösung inkonsistenter Daten, d.h. verschiedene Versionen des selben Datums an verschiedenen Knoten 1-13 CAP-Theorem und Data Stores Availability (Verfügbarkeit): Alle Clients können stets lesen und schreiben. nach: Nathas Hurst’s Visual Guide to NoSQL Systems http://blog.nahurst.com/visual-guide-to-nosql-systems A Dynamo/S3 (KV) CouchDB (Document) Cassandra (Record) Parallele DBMS Consistency (Konistenz): Alle Clients haben stets die gleiche Sicht auf die Daten. C Verteilte Datenbanken Azure Storage (KV) MongoDB (Document) BigTable/HBase (Record) 1-14 P Partition Tolerance (Partitionstoleranz): Das System funktioniert trotz Netzwerk-Partitionierung weiter. ACID • RDBMS gewährleistet für Transaktionen ACID-Eigenschaften. • Atomicity – ’Alles oder Nichts’-Eigenschaft (Fehlerisolierung) • Consistency – eine erfolgreiche Transaktion erhält die DB-Konsistenz (Gewährleistung der definierten Integritätsbedingungen) • Isolation – alle Aktionen innerhalb einer Transaktion müssen vor parallel ablaufenden Transaktionen verborgen werden („logischer Einbenutzerbetrieb“) • Durability – Überleben von Änderungen erfolgreich beendeter Transaktionen trotz beliebiger (erwarteter) Fehler garantieren (Persistenz) DBS1 VL Prof. Rahm, Uni Leipzig 1-15 ACID vs. BASE [Bre00] • Aufgabe (strenger) Konsistenz und logischem Einbenutzerbetrieb für Verfügbarkeit und Performanz • BASE = Basically Available, soft-state, eventual consistency ACID BASE Konsistenz streng (stets aktuelle Daten pro Knoten) Verfügbarkeit eingeschränkt (z.B. bei Ausfall des Koordinatorknotens bei 2PC) Prinzip • pessimistisch / konservativ • Anwendung kann sich auf “Datenqualität” verlassen Priorität Transaktionen im logischen Einbenutzerbetrieb Evolution aufwändig (Schema) 1-16 Inhalt der Vorlesung • Techniken zum effizienten Management großer un-/semi-strukturierter Datenmengen • Verteilte Architekturen zum – Storage (Speicherung) – Retrieval/Querying (Anfrageverarbeitung) • Algorithmen zur – Synchronisation (z.B. für Replikation) – Realisierung von Transaktionen 1-17 Inhaltsverzeichnis (vorläufig) 1. Einführung • NoSQL-Datenbanken • CAP-Theorem 2. Key-Value Stores • Microsoft Azure Storage • Amaszon S3/Dynamo 3. Document Stores • CouchDB • MongoDB 4. Skalierbare Webanwendungen • Design-Prinzipien • Google App Engine 1-18 5. Record Stores & RDMS in der Cloud • BigTable/HBase, Cassandra • Megastore • H-Store/VoltDB • Synchronisation • Transaktionen 6. Graphdatenmanagement • Graphmodell & -algorithmen • Graphdatenbanken • Parallele Graph-Algorithmen Literatur • [Bre00] Brewer. Towards robust distributed systems. Proceedings of the Annual ACM Symposium on Principles of Distributed Computing (2000) http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf • [GL02] Gilbert and Lynch. Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services. ACM SIGACT News (2002) 1-19