NoSQL-Datenbanksysteme: Revolution oder Evolution? Kolloquium Institut für Informatik, Universität Rostock 24.01.2013 Prof. Dr. Uta Störl | Hochschule Darmstadt | [email protected] NoSQL: DAS aktuelle Datenbank-Buzzword Quelle: http://geekandpoke.typepad.com/geekandpoke/2011/01/nosql.html Uta Störl NoSQL-Datenbanksysteme 2 Agenda • Motivation • NoSQL – Grundlagen • Anwendungsentwicklung mit NoSQL-DBMS • Performance und Benchmarks • Koexistenz von SQL- und NoSQL-Datenbanksystemen? • Zusammenfassung und Ausblick Uta Störl NoSQL-Datenbanksysteme 3 Motivation: Big Data • Big Data – Social Network Daten (LinkedIn, Facebook, Twitter etc.) – Social Networking Feeds (Facebook oder Twitter Feeds von Firmenseiten) – Log Analysen (Web Logs, Sensor Logs, Event Logs etc.) – Gaming Data – Streaming Data – … Uta Störl NoSQL-Datenbanksysteme 4 Eigenschaften von BigData: The 4 V‘s Quelle: L. Haas, IBM Uta Störl NoSQL-Datenbanksysteme 5 NoSQL (Not only SQL): Definition Es existiert noch kein einheitliche Definition – ein Variante: [Edlich et al: 2011 bzw. http://nosql-database.org/] Unter NoSQL wird eine neue Generation von Datenbanksystemen verstanden, die meistens einige der nachfolgenden Punkte berücksichtigen: • Das zugrundeliegende Datenmodell ist nicht relational. • Das System ist schemafrei oder hat nur schwächere Schemarestriktionen. • Das System bietet eine einfache API. aktuell werden komplexere APIs entwickelt • Die Systeme sind von Anbeginn an auf eine verteilte und horizontale Skalierbarkeit ausgerichtet. • Aufgrund der verteilten Architektur unterstützt das System eine einfache Datenreplikation. • Dem System liegt meistens auch ein anderes Konsistenzmodell zugrunde: Eventually Consistent und BASE, aber nicht ACID inzwischen teilweise „sowohl als auch“ • Das NoSQL-System ist Open Source. ??? Uta Störl NoSQL-Datenbanksysteme 6 NoSQL: Die Essenz Datenmodell • Das zugrundeliegende Datenmodell ist nicht relational. • Das System ist schemafrei oder hat nur schwächere Schemarestriktionen. Skalierungsarchitektur • Die Systeme sind von Anbeginn an auf eine verteilte und horizontale Skalierbarkeit ausgerichtet. • Aufgrund der verteilten Architektur unterstützt das System eine einfache Datenreplikation. Uta Störl NoSQL-Datenbanksysteme 7 NoSQL: Die Essenz Datenmodell • Das zugrundeliegende Datenmodell ist nicht relational. • Das System ist schemafrei oder hat nur schwächere Schemarestriktionen. Skalierungsarchitektur • Die Systeme sind von Anbeginn an auf eine verteilte und horizontale Skalierbarkeit ausgerichtet. • Aufgrund der verteilten Architektur unterstützt das System eine einfache Datenreplikation. Uta Störl NoSQL-Datenbanksysteme 8 (Mögliche) Kategorisierung • (Noch) keine einheitliche Klassifikation – häufig verwendete Kategorisierung in Anlehnung an http://www.nosql-database.org/ • Core NoSQL Systems: – Key-Value Databases – Document Databases – Column Family Databases – Graph Databases – Neu (2012): Multimodel Databases • Soft NoSQL Systems: – Object Databases – Grid & Cloud Database Solutions – XML Databases – Multivalue Databases – … Uta Störl NoSQL-Datenbanksysteme 9 Key-Value Databases • Datenmodell – Key-Value-Paare mit eindeutigem Key („the big hash table“) – Key und Value enthalten Byte-Arrays = beliebige, serialisierte Datentypen (für value auch beliebig komplex) – Typische Grundoperationen: • set (key, value) • value = get (key) • delete (key) key value key value key value key value key value • Indexstrukturen: – Hash-Maps, B*-Bäume auf key • Systeme: Amazon Dynamo / S3, Redis, Riak, Voldemort, … Uta Störl NoSQL-Datenbanksysteme 10 Document Databases • Datenmodell – Kleinste logische Einheit: „Dokument“ identifiziert über documentID { – Format i.a. JSON, BSON, YAML, RDF "id": 1, "name": “football boot", – Schemafrei, d.h. Anwendung übernimmt "price": 199, Schema-Verantwortung "stock": { "warehouse": 120, "retail": 10 } • Indexstrukturen } – B-Baum-Index für documentID – Teilweise auch B-Baum-Indexe für Datenfelder in Dokumenten • Systeme – MongoDB, CouchDB, … Uta Störl NoSQL-Datenbanksysteme 11 NoSQL: Die Essenz Datenmodell • Das zugrundeliegende Datenmodell ist nicht relational. • Das System ist schemafrei oder hat nur schwächere Schemarestriktionen. Skalierungsarchitektur • Die Systeme sind von Anbeginn an auf eine verteilte und horizontale Skalierbarkeit ausgerichtet. • Aufgrund der verteilten Architektur unterstützt das System eine einfache Datenreplikation. Uta Störl NoSQL-Datenbanksysteme 12 Scale up vs. Scale out Scale up: wenige, große Server Scale out: viele, kleinere (Commodity-)Server Quelle: ibm.com Uta Störl Quelle: eggmusic.com NoSQL-Datenbanksysteme 13 Scale up vs. Scale out Scale up • Vorteile: – transparent für DBMS – Administrationsaufwand konstant • Nachteile: – Hardware-Kosten – Skalierung nur in größeren Stufen möglich höhere Kosten und ungenutzte Leistung Uta Störl Scale out • Vorteile: – Kostengünstigere Hardware – Skalierung in kleineren Stufen möglich • Nachteile: – Last- und Datenverteilung notwendig – Ggf. verteilte Protokolle (2PC, Replikation) – Erhöhte Fehlerrate (mehr und einfachere Hardware) – Erhöhter Administrationsaufwand NoSQL-Datenbanksysteme 14 Scale out: CAP-Theorem Eigenschaften verteilter Datensysteme: • Consistency: alle Clients (Anwendungen) haben die gleiche Sicht auf den Datenbestand – auch im Fall von Updates • Availability: jeder Request an einen non-failing Knoten führt zu einer Antwort, d.h. ausgefallene Knoten beeinflussen nicht die Verfügbarkeit der anderen Knoten. • Partition Tolerance: Systemeigenschaften bleiben auch bei Partitionierung des Netzwerks erhalten (d.h. Knoten können weiter funktionieren auch wenn die Kommunikation mit anderen Knotengruppen verloren gegangen ist) CAP Theorem (Eric Brewer, 2000): in verteilten Datensystemen sind zu jeder Zeit nur maximal zwei dieser drei Eigenschaften erreichbar Uta Störl NoSQL-Datenbanksysteme 15 Konsistenz in AP-Systemen? • Strong Consistency – Nach Abschluss eines Updates sehen alle nachfolgenden Zugriffe (auch an anderen Knoten!) den aktuellen Wert (entspricht C in ACID) • Weak Consistency – Es ist nicht garantiert, dass nachfolgende Zugriffe den aktuellen Wert sehen – Spezialform: Eventual Consistency (Vogel, 2008): Es ist garantiert, dass nach einem Zeitfenster schlussendlich (eventually) alle Zugriffe den aktuellen Wert sehen (falls zwischenzeitlich keine weiteren Updates erfolgen) Uta Störl NoSQL-Datenbanksysteme 16 Eventual Consistency aus Sicht des Client Praktisch relevante Spezialformen der Eventual Consistency: • Read-your-writes Consistency – Jeder Prozess sieht seine eigenen Änderungen (niemals ältere Werte für die geänderten Objekte) • Session Consistency – Read-your-writes innerhalb einer Session • Monotonic Read Consistency – Wenn ein Prozess einen Wert gelesen hat, sieht er danach nie einen älteren Wert für dieses Objekt. • Monotonic Write Consistency – Die Schreiboperationen einer Transaktion werden vom System serialisiert Uta Störl NoSQL-Datenbanksysteme 17 Eventual Consistency – Server Side • Terminologie: – N: Anzahl der Replikate eines Datenobjektes – W: Anzahl der Replikate, die den Erhalt des Update bestätigt haben müssen, bevor das Update abgeschlossen werden kann – R: Anzahl der Replikate, die während einer Lese-Operation gelesen werden W+R > N Strong Consistency durch Quorum W+R <= N Weak/Eventual Consistency W W R R Typische Konfiguration im NoSQL-Umfeld: N=3, R=2, W=2 Uta Störl NoSQL-Datenbanksysteme 18 Eventual Consistency am Beispiel Cassandra • • Cassandra – ursprünglich von facebook entwickelt – seit 2008 Apache Projekt – u.a. genutzt von Twitter, Digg, bis 2010 auch facebook (dort inzwischen ersetzt durch HBase) Write Consistency Level – Zero: Asynchrones Schreiben im Hintergrund – Any/One: Stellt sicher, dass die Schreiboperation an mindestens einem Knoten ausgeführt wurde – Quorum: Stellt sicher, dass die Schreiboperation an der Mehrheit der Knoten (N/2 + 1) geschrieben wurde – All: Stellt sicher, dass die Schreiboperation an allen Knoten ausgeführt wurde • Read Consistency Level – One: Rückgabewert des ersten antwortenden Knoten (ggf. inkonsistent) – Quorum: Wenn eine Mehrheit der Knoten geantwortet hat, wird der Wert mit dem jüngsten Zeitstempel zurückgegeben – All: Wenn alle(!) Knoten geantwortet haben, wird der Wert mit dem jüngsten Zeitstempel zurückgegeben Uta Störl NoSQL-Datenbanksysteme 19 Agenda • Motivation • NoSQL – Grundlagen • Anwendungsentwicklung mit NoSQL-DBMS • Performance und Benchmarks • Koexistenz von SQL- und NoSQL-Datenbanksystemen? • Zusammenfassung und Ausblick Uta Störl NoSQL-Datenbanksysteme 20 Anwendungsentwicklung mit NoSQL-DBMS • Unterschiedlichste Sprachanbindungen: Shell, Java, REST, Ruby, C#, Python, PHP, … • Einfachste Grundoperationen (get/put/delete o.ä.) – Beispiel: Update in CouchDB (Shell) $curl –X PUT http://127.0.0.1:5984/myCouch DB/ b8a025323b6b91d21c8997913831f46f -d '{"_rev":"1-3014e70edc650450e45a8e0818bc7bce", "unfallID":"1", "fahrzeugTyp":"Audi", "personenAnzahl":"2"}' • Aber auch erste (proprietäre) Ansätze von Anfragesprachen CQL (Cassandra Query Language) INSERT / UPDATE / SELECT … • Standardisierung? UnSQL (Unstructured Query Language) – „One Language Fits All?“ Uta Störl NoSQL-Datenbanksysteme 21 Parallelisierung der Anfrageverarbeitung • Scale out – Skalierung auf viele (kleinere) Server • Parallele Verarbeitung sehr großer Datenmenge erfordert neue Algorithmen und Frameworks • (alte) Idee aus funktionaler Programmierung (LISP, ML etc.) – Operationen ändern die Daten nicht, sondern arbeiten immer auf neu erstellten Kopien Unterschiedliche Operationen auf den gleichen Daten beeinflussen sich nicht (keine Concurrency-Konflikte, keine Deadlocks, keine RaceConditions) MapReduce – Idee neu angewandt und mit komfortablem Framework vorstellt: J. Dean and S.Gehmawat. MapReduce: Simplified Data Processing on Large Clusters. OSDI'04. 2004 http://labs.google.com/papers/mapreduce.html Uta Störl NoSQL-Datenbanksysteme 22 MapReduce: Grundprinzip & WordCount Bsp. • Entwickler muss zwei primäre Methoden implementieren – Map: (key1, val1) → [(key2, val2)] – Reduce: (key2, [val2]) → [(key3, val3)] Key Documents Doc1 Doc2 Sport, Handball, Fußball Fußball, DFB Sport MAP Documents Doc3 Sport, Halle, Geld Doc4 Fußball, DFB, Geld Uta Störl Value MAP Key 1 Handball 1 Fußball REDUCE 1 Fußball 1 Key DFB 1 Sport 1 Halle 1 Geld 1 Fußball 1 DFB 1 Geld 1 Value Sport 2 Handball 1 Fußball 3 Value NoSQL-Datenbanksysteme Key REDUCE Value DFB 2 Halle 1 Geld 2 23 Map & Reduce Funktionen (Prinzip) Beispielimplementierung in Hadoop (Java) … public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { … public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, …) … { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } } } public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, …) … { int sum = 0; while (values.hasNext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); } } Quelle: http://hadoop.apache.org/docs/r1.0.4/mapred_tutorial.html Uta Störl NoSQL-Datenbanksysteme 24 MapReduce: Verbesserung mit Combine • Um die Ergebnisgröße zu reduzieren und die Shuffle-Kosten (Zuweisung der Daten zum jeweiligen Reduce-Knoten) zu reduzieren, wird in der Praxis häufig eine Combine-Phase auf dem Map-Knoten zwischengeschaltet: Key Documents Sport, Handball, Fußball Fußball, DFB Sport MAP Documents Sport, Halle, Geld Fußball, DFB, Geld Uta Störl MAP Key Value Sport 1 Handball 1 COMBINE Value 1 Handball 1 Fußball 2 DFB 1 Fußball 1 Fußball Key DFB Sport 1 1 1 Halle 1 Sport 1 Geld 1 Halle 1 Fußball 1 Geld 2 DFB 1 Fußball 1 Geld 1 DFB 1 Value Key COMBINE NoSQL-Datenbanksysteme REDUCE Value REDUCE 25 Anwendungsentwicklung mit NoSQL-DBMS • Trend: Verwendung von Query-Frameworks mit Operatoren auf höherem Abstraktionslevel statt direkter MapReduce-Programmierung – Analyse von großen Cloudera*-Kunden aus E-Commerce, Telekommunikation, Medien und Einzelhandel: Quelle: Chen, Alspaugh, Katz. Interactive Analytical Processing in Big Data Systems: A CrossIndustry Study of MapReduce Workloads; VLDB2012 *Cloudera: Kommerzieller Anbieter Hadoop-basierter Software und Services Uta Störl NoSQL-Datenbanksysteme 26 Agenda • Motivation • NoSQL – Grundlagen • Anwendungsentwicklung mit NoSQL-DBMS • Performance und Benchmarks • Koexistenz von SQL- und NoSQL-Datenbanksystemen? • Zusammenfassung und Ausblick Uta Störl NoSQL-Datenbanksysteme 27 Performance • Was „kostet“ Scale out? – Flexibilität führt zu Storage-Overhead • HBase: Faktor 2.1 ohne Replikation – Faktor 6.3 mit 3 Replikaten (Quelle: Schindler, NoSQL I/O, VDLB2012) – Verteilungsarchitektur impliziert per se Overhead – Außerdem: NoSQL-Systeme häufig in Release 0.* oder 1.* noch viel Optimierungspotential Beobachtung in der Praxis: Die Daten- und Knotenmenge muss groß genug sein, damit ein wirklicher Performance-Vorteil zum Tragen kommt Uta Störl NoSQL-Datenbanksysteme 28 Benchmarks • • • Klassische DB-Benchmarks – Benchmarks für typische Szenarien (OLTP: TPC-*, SAP-Benchmarks) – Metriken: • Performance (transactions per minute) • Preis/Performance • Skalierung über DB-Größe Benchmarks für NoSQL-Systeme? – Was ist ein „typisches“ NoSQL-Szenario? Facebook? Log-Analyse? ? – Metriken: • Verhalten bei wachsender Datenmenge • Verhalten bei veränderter Server-Anzahl (dynamisches Hinzufügen und Entfernen) State of the art – Diverse Untersuchungen für ganz spezifische Anwendungen und Vergleich von System x mit System y – Bisher kaum generalisierende Benchmarks Uta Störl NoSQL-Datenbanksysteme 29 Agenda • Motivation • NoSQL – Grundlagen • Anwendungsentwicklung mit NoSQL-DBMS • Performance und Benchmarks • Koexistenz von SQL- und NoSQL-Datenbanksystemen? • Zusammenfassung und Ausblick Uta Störl NoSQL-Datenbanksysteme 30 Koexistenz von SQL- und NoSQL-DBMS? • Muss es immer eine entweder-oder-Auswahl sein? Auswahl des geeigneten Systems für die jeweilige Aufgabe statt „One Size Fits All“? – Beispiel: Amadeus Log Service • Wöchentlich mehrere hundert Terabyte Log-Daten von verschiedenen Servern einer SOA-Architektur • Architektur (Prototyp, Kossmann:2012) – Verteiltes Dateisystem (HDFS) für komprimierte Log-Daten – NoSQL-System (HBase) zur Indexierung nach Timestamp und SessionID – Full Text Search Engine (SOLR) für Volltextsuche – MapReduce-Framework (Hadoop) zur Analyse (Nutzerstatistiken und Fehleranalyse) – Relationales DBMS (Oracle) für Meta-Daten (Benutzer-Infos etc.) • Zum Weiterlesen: Donald Kossmann: http://wp.sigmod.org/?p=559 Uta Störl NoSQL-Datenbanksysteme 31 Koexistenz von SQL- und NoSQL-DBMS? • Trend: MapReduce (Hadoop) Integration in relationale DBMS und Data Warehouse Systeme – 2012 erschienen • • • • • Oracle BigData-Appliance Oracle NoSQL 2.0 (Key-Value-Store) IBM Infosphere mit Hadoop-Support Microsoft SQL Server 2012 mit Hadoop*-Support … – Oktober 2012 • Ankündigung der Integration von Hadoop (Cloudera-Distribution) in SAPs BigData-Angebot (SAP HANA, SAP Sybase IQ, SAP Data Integrator, SAP Business Objects) *Microsoft: Einstellung des eigenen MapReduce-Frameworks Dryad Uta Störl NoSQL-Datenbanksysteme 32 Koexistenz von SQL- und NoSQL-DBMS? • NewSQL-DBMS – Idee: Das Beste aus beiden Welten vereinen • • • • • SQL ACID Nicht-sperrende Concurrency Control Hohe per-node Performance Scale out, shared nothing Architektur – Erweiterungen bestehender Systeme • MySQL Cluster • (PostgreSQL: nativer JSON-Support und hstore (key-value) Datentyp) – Entwicklung komplett neuer Systeme • VoltDB (Michael Stonebraker) • Drizzle • … Uta Störl NoSQL-Datenbanksysteme 33 *SQL-Systeme: Klassifikation Quelle: Matthew Aslett 451 Group Uta Störl NoSQL-Datenbanksysteme 34 Agenda • Motivation • NoSQL – Grundlagen • Anwendungsentwicklung mit NoSQL-DBMS • Performance und Benchmarks • Koexistenz von SQL- und NoSQL-Datenbanksystemen? • Zusammenfassung und Ausblick Uta Störl NoSQL-Datenbanksysteme 35 NoSQL-Systeme: Zusammenfassung • Vorteile – Flexible und kostengünstige horizontale Skalierung (scale out) – Verarbeitung riesiger Datenmengen mit kostengünstiger Software – Hochgradig parallelisierbare Anfrageverarbeitung mit MapReduce – Schemaflexibilität (falls benötigt) • Nachteile – Ggf. Abstriche bei Konsistenz – Erhöhter Aufwand für Entwicklung • Proprietäre, wenig mächtige APIs / „Anfragesprachen“ • OR-Mapper bislang nur rudimentär unterstützt – Bisher kaum Tools für Performance-Analyse und DB-Administration Uta Störl NoSQL-Datenbanksysteme 36 NoSQL-Systeme: Zusammenfassung (Forts.) • Entscheidung für oder gegen NoSQL-Systeme – Datenanalyse • Wie groß ist die erwartete Datenmenge? • Komplexität der Daten und Schemaflexibilität? • Art der Navigation zwischen den Daten? Konsistenzanforderungen der Anwendungen? Anfrageanforderungen der Anwendungen? Performanceanforderungen (Latenz, Skalierbarkeit, Concurrency)? Nicht-funktionale Anforderungen (Lizenz, Firmenpolitik, Sicherheit, Dokumentation etc.) – Kosten (inkl. Entwicklung und Administration!) – – – – • Welches NoSQL-System? – Prototyping! – Performance-Analyse! Uta Störl NoSQL-Datenbanksysteme 37 Ausblick • Wichtige offene Punkte – Standardisierte Anfragesprache(n) – Benchmarks • Revolution oder Evolution? Thesen: – „Kleine“ Revolution die zur Evolution der etablierten relationalen Systeme führt • Integration von MapReduce-Ansätzen in relationale DBMS insbesondere DataWarehouse-Systeme • (Noch) stärkere Entwicklung hin zu nicht-sperrenden Concurrency Control Verfahren, um scale out zu ermöglichen • Mittelfristig: Integration von „konfigurierbarer“ Konsistenz in relationalen DBMS – Nutzung von NoSQL-DBMS als „Applikationsdatenbank“ – nicht als „Integrationsdatenbank“ Koexistenz Uta Störl NoSQL-Datenbanksysteme 38