NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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 Dr. Walter Ebner, Institut für Informationswirtschaft 1 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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 Dr. Walter Ebner, Institut für Informationswirtschaft 2 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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 steht nicht für „Nein zu SQL“ sondern für: • 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? 9 Dr. Walter Ebner, Institut für Informationswirtschaft 3 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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/ Dr. Walter Ebner, Institut für Informationswirtschaft 4 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 Datenorientierte Systemanalyse – NoSQL Wer verwendet NoSQL? 12 NoSQL? Jeder NoSQL Ansatz versucht einige der Unzulänglichkeiten von • horizontal scalability • read/write performance • schema limitations • difficult query patterns • parallel data processing • etc. Datenorientierte Systemanalyse – NoSQL relationalen Datenbanken zu lösen: 13 Dr. Walter Ebner, Institut für Informationswirtschaft 5 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 NoSQL Features Gewaltige read/write Performance Normalerweise mit schnellen key-value Zugriff High Availability Partitioning and Sharding Fehlertolerant Shardingkonzept in Riak: Datenorientierte Systemanalyse – NoSQL Daten werden auf mehreren Nodes gespeichert http://docs.basho.com/riak/latest/references/appendices/concepts/ 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 Dr. Walter Ebner, Institut für Informationswirtschaft Datenorientierte Systemanalyse – NoSQL Parallel Computing 6 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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. Datenorientierte Systemanalyse – NoSQL Auf was muss man verzichten? http://blog.chariotsolutions.com/2010/01/why-you-need-nosql-in-your-toolbox.html Dr. Walter Ebner, Institut für Informationswirtschaft 7 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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) • Partition tolerance (the system continues to operate despite arbitrary message loss or failure of part of the system)” Availability (a guarantee that every request receives a response about whether it was successful or failed) 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 Dr. Walter Ebner, Institut für Informationswirtschaft Datenorientierte Systemanalyse – NoSQL CAP-Theorem – Two out of three 19 8 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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 Dr. Walter Ebner, Institut für Informationswirtschaft 9 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 Datenorientierte Systemanalyse – NoSQL Einige NoSQL Datenbanklösungen 22 Datenorientierte Systemanalyse – NoSQL NoSQL – Einteilung in Quadranten 23 http://graphdatabases.com/ Dr. Walter Ebner, Institut für Informationswirtschaft 10 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 Datenorientierte Systemanalyse – NoSQL Einordnung nach CAP 24 http://t3n.de/news/visual-guide-nosql-systems-269025/ • 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 • Key Namespaces werden verwendet um Kollisionen beim Key zu vermeiden. VALUE=irgendeine Art von Element (Strings, XML, JSON, mp3Dateien) Datenorientierte Systemanalyse – NoSQL Key-Value Stores 25 Dr. Walter Ebner, Institut für Informationswirtschaft 11 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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) • Keys müssen in den Arbeitsspeicher passen keine Transaktionen Viele Datenstrukturen können nicht so leicht als Key-Value Pairs modelliert werden. 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 Dr. Walter Ebner, Institut für Informationswirtschaft 12 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 Column-oriented Stores • • Liegen zwischen relationalen DBMS und Key-Value Stores. • 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 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. 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 Dr. Walter Ebner, Institut für Informationswirtschaft 13 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 Column-oriented Stores Einige Lösungen HBase BigTable Cassandra Anwendungsgebiete • • • • Suchmaschinen • • Viele Lösungen bieten Versionierung an Logging Analysing Log Data Wenn man riesige zwei-dimensionale Tabellen (ohne Join) lesen muss. In Cassandra ist das Schreiben schneller als Werte zu lesen Datenorientierte Systemanalyse – NoSQL • • • 30 • Ü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 Document Stores 31 Dr. Walter Ebner, Institut für Informationswirtschaft 14 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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 Dr. Walter Ebner, Institut für Informationswirtschaft 15 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 Graph Databases • Fokussiert auf die Modellierung von Datenstrukturen und deren Beziehungen • • Von der Graphentheorie der Mathematik inspiriert. • 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 Als Datenmodell wird der Property Graph verwendet: 34 Datenorientierte Systemanalyse – NoSQL Property Graph - Beispiel http://blog.neo4j.org/2010/02/top-10-ways-to-get-to-know-neo4j.html 35 Dr. Walter Ebner, Institut für Informationswirtschaft 16 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 Graph Databases • 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 Vorteile 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 Dr. Walter Ebner, Institut für Informationswirtschaft 17 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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 Dr. Walter Ebner, Institut für Informationswirtschaft 18 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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 Datenbanksystemen und NoSQL Datenbanken Datenorientierte Systemanalyse – NoSQL Kosten der Konsistenz Anhang VERTEILTE SUCHMASCHINEN Dr. Walter Ebner, Institut für Informationswirtschaft 19 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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) Dr. Walter Ebner, Institut für Informationswirtschaft Datenorientierte Systemanalyse – NoSQL Lucene bietet: 20 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 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) • Near Real-time indexing Optimiert für High Volume Web Traffic Standards Based Open Interfaces - XML, JSON and HTTP Linearly scalable, auto index replication, auto failover and recovery 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 Dr. Walter Ebner, Institut für Informationswirtschaft Datenorientierte Systemanalyse – NoSQL • 21 NoSQL – Datenbanken PI Datenorientierte Systemanalyse, WS 2014/15 Übungen Datenorientierte Systemanalyse – NoSQL Nun zu den praktischen Übungsbeispielen… Datenorientierte Systemanalyse – NoSQL ENDE 47 Dr. Walter Ebner, Institut für Informationswirtschaft 22