NoSQL Datenbanken LV Datenorientierte Systemanalyse, WS 2014/15 Dr. Walter Ebner, <[email protected]> Institut für Informationswirtschaft Wirtschaftsuniversität Wien Überblick Abgrenzung zu relationalen Datenbanksystemen CAP-Theorem ACID versus BASE Die vier NoSQL Produktkategorien • Key-Value Stores • Column-based Stores • Document Stores • Graph Databases Datenorientierte Systemanalyse – NoSQL NoSQL Features 5 Relationale Datenbanksysteme Grundlage ist die Relation wird bei relationalen DBMS als Tabelle bezeichnet • Tabellen (Spalten haben eine definierten Datentyp und eine bestimmte Genauigkeit bzw. Länge) • Definierte Primär- und Fremdschlüssel Alle Daten sind in Tabellen abgelegt Abfragen basieren auf der relationalen Algebra • Selection, Projektion, Mengenoperationen, Joins Die Standard-Abfragesprache heißt SQL Datenorientierte Systemanalyse – NoSQL Es gibt das Konzept eines Schemas: 6 Relationale Datenbanksysteme • Neben SQL bieten einige DBMS noch mächtige Programmiersprachen an: PL/SQL (Oracle), PL/pgSQL (PostgreSQL), Transact-SQL (MSSQL) • Relationale Datenbankmanagementsysteme setzen die ACID Anforderungen um. Datenorientierte Systemanalyse – NoSQL Relationale Datenbankmanagementsysteme: 7 ACID • • • • Atomic: All operations in a transaction succeed or every operation is rolled back. Consistent: On transaction completion, the database is structurally sound. Isolated: Transactions do not contend with one another. Contentious access to state is moderated by the database so that transactions appear to run sequentially. Durable: The results of applying a transaction are permanent, even in the presence of failures. Datenorientierte Systemanalyse – NoSQL Unter dem Begriff ACID werden die Garantien für Datenbanktransaktionen zusammengefasst. Eine Transaktion ist eine einzelne logische Operation, die auf die Daten angewendet wird. 8 NoSQL? • Der Begriff NoSQL wurde 2009 von Eric Evans, einem Software Entwickler bei der Apache Software Foundation, geprägt. • Klasse von nicht-relationalen Datenspeicherungssystemen • Haben normalerweise kein fixes Schema • Viele NoSQL Lösungen weichen eine oder mehrere ACID Anforderungen auf. Datenorientierte Systemanalyse – NoSQL • NoSQL steht nicht für „Nein zu SQL“ sondern für: 9 NoSQL – Der Anfang • Die folgenden wissenschaftlichen Artikel bilden die Grundlage für die NoSQL Bewegung: • CAP Theorem (2000 von Eric Brewer) • MapReduce (2004 von Google) • BigTable (2006 von Google) http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/de//archi ve/bigtable-osdi06.pdf • Dynamo (2007 von Amazon) • http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf Die folgenden Bereiche können von relationalen DBMS nur schwer modelliert werden: • Document Storage and Indexing • Recursive Data and Graphs (Netzwerke) • Time Series Data Datenorientierte Systemanalyse – NoSQL http://research.google.com/archive/mapreduce.html Datenorientierte Systemanalyse – NoSQL Entstehungsgeschichte http://www.benstopford.com/2012/06/30/thoughts-on-big-data-technologies-part-1/ Datenorientierte Systemanalyse – NoSQL Wer verwendet NoSQL? 12 NoSQL? Jeder NoSQL Ansatz versucht einige der Unzulänglichkeiten von relationalen Datenbanken zu lösen: • read/write performance • schema limitations • difficult query patterns • parallel data processing • etc. Datenorientierte Systemanalyse – NoSQL • horizontal scalability 13 NoSQL Features Gewaltige read/write Performance Normalerweise mit schnellen key-value Zugriff High Availability Partitioning and Sharding Fehlertolerant Shardingkonzept in Riak: http://docs.basho.com/riak/latest/references/appendices/concepts/ Datenorientierte Systemanalyse – NoSQL Daten werden auf mehreren Nodes gespeichert NoSQL Features Unterstützung riesiger Datenmengen leichte Skalierbarkeit (horizontal scaling). Wenn die Kapazitäten knapp werden, kann man mit minimalen Aufwand weiter Daten-Nodes hinzufügen. Extrem performant! MapReduce Ansatz Semi-structured and schemaless mit JSON/XML lassen sich Daten semistrukturiert abbilden in Key-Value Stores lassen sich alle Arten von Objekten ablegen Normalerweise kein fixes Schema Auch keine Datentypen Datenorientierte Systemanalyse – NoSQL Parallel Computing NoSQL Features Leichte Anwendungsentwicklung Oft moderne Web-API mittels RESTful Services Setzen auf bekannte Technologien: z.B: Javascript, HTTP, Leichte Wartbarkeit und Administration Minimale Administration und automatisierter Betrieb haben hohen Stellenwert bei der Entwicklung Open-Source Viele Lösungen sind open-source und haben eine aktive Community. Duales Lizensierungsmodell Bei vielen Lösungen gibt es sowohl eine freie Variante als auch eine mit kommerziellen Support. Datenorientierte Systemanalyse – NoSQL XML, JSON Nachteile von NoSQL Joins Group By Order By Indexes ACID transactions Complex relationships Powerful and standard query language (SQL) Maturity (Reifegrad) Einige NoSQL Ansätze bieten einige (aber nicht alle) dieser Features. http://blog.chariotsolutions.com/2010/01/why-you-need-nosql-in-your-toolbox.html Datenorientierte Systemanalyse – NoSQL Auf was muss man verzichten? CAP Theorem “It is impossible for a distributed computer system to simultaneously provide all three of the following guarantees: • • • Consistency (all nodes see the same data at the same time) Availability (a guarantee that every request receives a response about whether it was successful or failed) Partition tolerance (the system continues to operate despite arbitrary message loss or failure of part of the system)” Datenorientierte Systemanalyse – NoSQL Das CAP Theorem wurde im Jahr 2000 von Eric Brewer formuliert: • Um hoch zu skalieren muss man Partitionieren man muss zwischen Konsistenz und Verfügbarkeit wählen Datenorientierte Systemanalyse – NoSQL CAP-Theorem – Two out of three 19 Datenorientierte Systemanalyse – NoSQL BASE Consistency Model http://www.ivanomalavolta.com/diving-into-nosql/ 20 MapReduce Ein von Google entwickeltes Programmiermodell um Berechnungen über riesige Datenmengen über Clusternodes verteilt parallel durchzuführen. • • Map Der erste Schritt des MapReduce-Verfahrens ist das Mapping. Dabei werden alle in Frage kommenden Datensätze an eine Mapping-Funktion übergeben, welche dann entscheidet, was mit diesem Datensatz geschehen soll. Die Ergebnisse solch eines Mapping-Vorgangs landen in einem Zwischenspeicher. Reduce Mit einem anschließenden Reduce-Schritt können die Ergebnisse gruppiert werden. Reduce gibt nur einen Datensatz als Ergebnis zurück (es reduziert die Eingabemenge auf ein Ergebnis) Datenorientierte Systemanalyse – NoSQL Dabei werden Probleme zur Problemlösung in zwei Teile geteilt: http://research.google.com/archive/mapreduce.html 21 Datenorientierte Systemanalyse – NoSQL Einige NoSQL Datenbanklösungen 22 Datenorientierte Systemanalyse – NoSQL NoSQL – Einteilung in Quadranten 23 http://graphdatabases.com/ Datenorientierte Systemanalyse – NoSQL Einordnung nach CAP 24 http://t3n.de/news/visual-guide-nosql-systems-269025/ Key-Value Stores • • • • Der Fokus liegt auf Skalierbarkeit entworfen für extrem hohe Lasten Es werden Collections von Key-Value Paaren gespeichert vergleichbar mit Maps oder assoziativen Array in klassischen Programmiersprachen. KEY=string value VALUE=irgendeine Art von Element (Strings, XML, JSON, mp3Dateien) Key Namespaces werden verwendet um Kollisionen beim Key zu vermeiden. Datenorientierte Systemanalyse – NoSQL • 25 Key-Value Stores Vorteile leicht zu verwenden extrem gute Performance keine Notwendigkeit Indizes zu pflegen Daten horizontal verteilbar Nachteile • • • • keine komplexen Abfragen möglich (kein SQL) keine Transaktionen Viele Datenstrukturen können nicht so leicht als Key-Value Pairs modelliert werden. Keys müssen in den Arbeitsspeicher passen Datenorientierte Systemanalyse – NoSQL • • • • 26 Key-Value Stores Einige Lösungen Redis Dynamo MemcacheDB Anwendungsgebiete • • • • • Aktienkurse Real-Time Data Collection Real-Time Communication User Session Storage Datencache für Datenbanken Datenorientierte Systemanalyse – NoSQL • • • 27 Column-oriented Stores • • Liegen zwischen relationalen DBMS und Key-Value Stores. Sind nach dem BigTable paper von Google modelliert: The data model is based on a sparsely populated table whose rows can contain arbitrary columns, the keys for which provide natural indexing. Im Gegensatz zu relationalen Datenbanken, werden die Daten der Spalten beieinander gespeichert und nicht die von Zeilen. Jede Zeile kann eine unterschiedliche Menge von Spalten haben (Keine Storage Kosten für NULL Werte) Datenorientierte Systemanalyse – NoSQL • • 28 Column-oriented Stores Vorteile leicht Tasks zu verteilen Zur Lösung von „Big Data“ Problemen High Availability Garbage Collection für expired data Nachteile • • • Denormalisierung der Daten nötig Einfügevorgänge sind resourcenaufwändig Die benötigten Abfragen müssen frühzeitig in der Planung berücksichtigt werden. Datenorientierte Systemanalyse – NoSQL • • • • 29 Column-oriented Stores Einige Lösungen HBase BigTable Cassandra Anwendungsgebiete • • • • • • Suchmaschinen Logging Analysing Log Data Wenn man riesige zwei-dimensionale Tabellen (ohne Join) lesen muss. Viele Lösungen bieten Versionierung an In Cassandra ist das Schreiben schneller als Werte zu lesen Datenorientierte Systemanalyse – NoSQL • • • 30 Document Stores • • • Übermenge zu den Key-Value Stores. Man kann auch innerhalb des VALUE Teils Abfragen machen (nicht nur im Key). Der Dokument-Teil ist strukturiert. Dokumente kann man sich als Tupel mit einer beliebigen Anzahl von Felder vorstellen (JSON) Dokumente können verschachtelte Strukturen beinhalten Dokumente sind auch oft versioniert Datenorientierte Systemanalyse – NoSQL • 31 Document Stores Vorteile Variable Daten (in Bezug auf die Struktur) speicherbar Object-orientierter Ansatz Funktioniert gut mit denormalisierten Daten Nachteile • • • Schwierig komplexe Abfragen zu machen Keine Joins zwischen den Dokumenten möglich Daten müssen strukturiert sein Datenorientierte Systemanalyse – NoSQL • • • 32 Document Stores Einige Lösungen MongoDB bzw. CouchDB für JSON Daten BaseX für XML Daten Riak für alle möglichen Daten Anwendungsgebiete • • • • Wenn man im Voraus noch nicht weiß, wie die Daten ausschauen werden bzw. wenn zu erwarten ist, dass immer wieder neue Datenfelder hinzukommen. Für vordefinierte Reports über akkumulierte Daten, die sich nur gelegentlich ändern. Anwendungsgebiete, bei denen Versionierung wichtig ist. Datenorientierte Systemanalyse – NoSQL • • • 33 Graph Databases • • Fokussiert auf die Modellierung von Datenstrukturen und deren Beziehungen Von der Graphentheorie der Mathematik inspiriert. Als Datenmodell wird der Property Graph verwendet: • Entities sind Knoten • Beziehungen sind die Kanten zwischen den Knoten • Key-Value Pairs können sowohl bei Knoten als auch bei Kanten gespeichert werden. • Graph Datenbanken beeindrucken besonders bei Daten, die viele Verbindungen untereinander aufweisen. (Relationale Datenbanken können Graphen modellieren, aber jede Kante benötigt einen kostspieligen Join) Datenorientierte Systemanalyse – NoSQL • 34 Datenorientierte Systemanalyse – NoSQL Property Graph - Beispiel http://blog.neo4j.org/2010/02/top-10-ways-to-get-to-know-neo4j.html 35 Graph Databases Vorteile • • • Leichte Modellierung da Whiteboard friendly (alles was man auf eine Tafel zeichnen kann, kann man auch so umsetzen) Das Traversieren zwischen Knoten entlang der Kanten ist extrem schnell. Für die Abfragen an Graphen können Graphen-Algorithmen verwendet werden (z.B.: Dijkstra für den kürzesten Weg) Passt gut zu objekt-orientierten Ansätzen Neo4J ist ACID-compliant Nachteile • • • Nicht horizontal skalierbar, da die Daten nicht partitioniert werden können. Keine Joins (dafür jedoch traversieren) Daten müssen strukturiert sein Datenorientierte Systemanalyse – NoSQL • 36 Graph Databases Einige Lösungen Neo4J OrientDB AllegroGraph Anwendungsgebiete • • • • • • Soziale Netzwerke Recommendation Engines Geographische Daten Transportnetzwerke Netzwerktopologien Berechtigungssysteme (verschachtelte Gruppen) Datenorientierte Systemanalyse – NoSQL • • • 37 Einige Open Source Lösungen Redis – http://code.google.com/p/redis (Key-Value) MemcacheDB - http://memcachedb.org/ (Key-Value) Hbase – http://hbase.apache.org (Column-oriented) Cassandra – http://cassandra.apache.org (Column-oriented) Riak – http://www.basho.com (Key-Value bzw. Document) MongoDB – http://www.mongodb.org (Document) CouchDB - http://couchdb.apache.org (Document) AP Couchbase – http://www.couchbase.com (Document) CP Neo4J – http://neo4j.org (Graph) OrientDB – http://www.orientdb.org (Graph) FlockDB – http://github.com/twitter/flockdb (distributed Graph) Datenorientierte Systemanalyse – NoSQL • • • • • • • • • • • 38 Datenorientierte Systemanalyse – NoSQL Datenbankfeatures im Vergleich Zusammenfassung • Es geht um „Big-Data“ Probleme • SKALIERBARKEIT (scale out statt scale up) aber meistens auf • NoSQL ist keine eierlegende Wollmilchsau NoSQL ≠ • Der neue Trend ist Polyglot Persistence Der kombinierte Einsatz von relationalen Datenbanksys- temen und NoSQL Datenbanken Datenorientierte Systemanalyse – NoSQL Kosten der Konsistenz Anhang VERTEILTE SUCHMASCHINEN Suchmaschinen • Die zwei bedeutendsten Open Source Projekte bei den verteilten • Ihr Funktionsumfang ist ähnlich. • Beide sind in Java programmiert und bauen auf der Java Bibliothek Lucene auf. • Das ältere Projekt ist Apache Solr, jedoch gewinnt elasticsearch rasch an Bedeutung. Datenorientierte Systemanalyse – NoSQL Suchmaschinen sind: Apache Lucene Lucene ist eine in Java geschriebene Bibliothek zur Volltextsuche. • High Performance Indizierung von Dokumenten (150GB/Stunde) • Mächtige und effiziente Suchalgorithmen: – ranked searching - best results returned first – many powerful query types: phrase queries, wildcard queries, proximity queries, range queries and more – fielded searching (e.g. title, author, contents) – sorting by any field – multiple-index searching with merged results – allows simultaneous update and searching – flexible faceting, highlighting, joins and result grouping – fast, memory-efficient and typo-tolerant suggesters – pluggable ranking models – configurable storage engine (codecs) Datenorientierte Systemanalyse – NoSQL Lucene bietet: Apache Solr „Solr is a standalone enterprise search server with a REST-like API“: Dokumente können in Form von XML, JSON, CSV oder binär über HTTP importiert (indiziert) werden. Abgefragt wird über HTTP GET und man erhält XML, JSON, CSV oder binäre Ergebnisse. • • • • • Advanced Full-Text Search Capabilities (basiert auf Lucene) Optimiert für High Volume Web Traffic Standards Based Open Interfaces - XML, JSON and HTTP Linearly scalable, auto index replication, auto failover and recovery Near Real-time indexing Datenorientierte Systemanalyse – NoSQL Eigenschaften: Elasticsearch • Elasticsearch is a distributed, RESTful, free/open source search server based on Lucene. Eigenschaften: • Fulltext Suchmaschine • Optimiert für Real time data indexing and analytics • Linier skalierbar (Cluster ist verteilt High Availability) • Mandantenfähigkeit • Dokumentenorientiert (JSON documents) • Schema-Free (im Gegensatz zu Solr ist nicht zwingend ein Mapping File erforderlich) • RESTful API Datenorientierte Systemanalyse – NoSQL • Übungen Datenorientierte Systemanalyse – NoSQL Nun zu den praktischen Übungsbeispielen… Datenorientierte Systemanalyse – NoSQL ENDE 47