NoSQL Datenbanken Seminar:Software as a Service, Cloud-Computing und aktuelle Entwicklungen Dozent: Dipl. Inf. Andreas Göbel Philipp Heinze 17. Juni 2010 Gliederung • Der Begriff NoSQL • Wichtige Konzepte • NoSQL-Arten • Cassandra • Zusammenfassung 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 2 1. Der Begriff NoSQL 2. Wichtige Konzepte 3. NoSQL Arten 4. Cassandra 5. Zusammenfassung 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 3 1. Der Begriff NoSQL Entstehung und Bedeutung Begriff erstmals von Carlo Strozzi 1998 verwendet bezeichnete RDBMS ohne SQL Interface 2009 durch Eric Ewans wieder bekannt geworden Suchte Namen für Konferenz Fand no:sql(east) Heutige Definition durch Emil Efrem NoSQL = Not only SQL 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 4 1. Der Begriff NoSQL Charakteristika NoSQL DBMS Definition nach nosql-database.org: Next Generation Databases mostly addressing some of the points: being nonrelational, distributed, open-source and horizontal scalable. The original intention has been modern web-scale databases. [...] Often more characteristics apply as: schema-free, easy replication support, simple API, eventually consistent / BASE (not ACID), and more.[1] 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 5 1. Der Begriff NoSQL 2. Wichtige Konzepte 3. NoSQL Arten 4. Cassandra 5. Zusammenfassung 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 6 2.1 CAP Theorem Einführung Erstmals von Eric Brewer im Jahr 2000 formuliert Axiomatischer Beweis durch Seth Gilbert und Nancy Lynch, 2002 Consistency, Availability und Partition Tolerance bilden magisches Dreieck Nur zwei der drei Eigenschaften voll erfüllbar 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 7 2.1 CAP Theorem Eigenschaften im Detail Consistency (dt. Konsistenz) ist Mischung aus ACIEigenschaften von ACID Availability (dt. Verfügbarkeit) bedeutet System verkraftet Knotenwegfall Trotz Knotenausfall stehen 100% der Daten zur Verfügung Partition Tolerance (dt. Partitionstoleranz) bedeutet Gesamtsystem kann trotz ungewollter Teilung in zwei Teilsysteme weiterarbeiten Wobei Funktionsumfang eingeschränkt sein kann 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 8 2.1 CAP Theorem Veranschaulichung 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 9 2.2 BASE Allgemein Basically Available, Soft State, Eventual Consistency (dt. grundsätzlich verfügbar, loser Zustand und schlussendlich konsistent) Gegensätzliches Konzept zu ACID Verzicht auf strenge Konsistenzforderungen Datenbank wechselt zwischen Konsistenz und Inkonsistenz Konsistenz stellt sich automatisch wieder ein 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 10 2.2 BASE Konsequenzen Erlaubt einfachere Redundanz der Daten Da seltener Synchronisation zwischen Repliken notwendig Erhöhte Verfügbarkeit, da bei Ausfall weitere Kopien vorhanden 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 11 2.3 Eventual Consistency Unterkategorie von Weak Consistency (dt. schwache Konsistenz) Benutzer sehen nur unter gewissen Umständen gleiche Daten Während Inkonsistenzfenster verschiedene Datenversionen möglich 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 12 2.4 MVCC Allgemein Multiversion Concurrency Control Ziel: lesende Transaktionen (TA) nie blockieren Objekte und Transaktionen erhalten Zeitstempel Objekte besitzen zusätzlich Lesezeitstempel TA können alle Objekte lesen, deren Zeitstempel kleiner als eigener ist 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 13 2.4 MVCC Objekt schreiben TA darf Objekt schreiben, wenn keine noch jüngere TA Objekt bereits gelesen hat Sonst TA Neustart Nach erfolgreichem Schreibvorgang neue Objektversion Zeitstempel auf die der TA gesetzt 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 14 1. Der Begriff NoSQL 2. Wichtige Konzepte 3. NoSQL Arten 4. Cassandra 5. Zusammenfassung 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 15 3.1 Document Stores Charakteristika Keine Tabellen oder Schemata, nur lose Ablage in DB Tupel sind Documents Jedes Document erhält eine ID für eindeutige Identifikation Ablageformate sind JSON, XML und YAML Simple Abfragen über Attribute oder ID, keine Joins MapReduce zur Anfragebearbeitung 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 16 3.1 Document Stores Vertreter Eigentliche NoSQL Systeme z. B. CouchDB, mongoDB, Amazon SimpleDB Im weiteren Sinne auch RDBMS mit XML-Unterstützung Oracle, DB2 und MS SQL Server jedoch keine schema- und relationsfreie Speicherung 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 17 3.1 Document Stores Use Cases Geeignet, wenn: Hohe (lineare) Skalierbarkeit gefordert Nur einfache Datenablage mit Grundsuchfunktionen nötig Lose Schemata & keine/wenige Konsistenzbedingungen vorhanden Nicht geeignet: Strenge Konsistenzanforderung vorhanden 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 18 3.2 Graphdatenbank Charakteristika Datenbank wird als Graph gespeichert Entitytypen sind Knotenklassen Beziehungstypen sind Kantenklassen In graphdatenbankoptimalem Format gespeichert Traversionsgeschwindigkeit unabhängig von Graphgröße Da keine Joins nötig Modell für Knoten nicht zwangsweise gefordert Beziehungen leicht veränderbar 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 19 3.2 Graphdatenbank Use Cases Geeignet für: Assoziative Datensätze (Web 3.0) (Liste aller Freunde meiner Freunde) Nicht geeignet, wenn: Selbe Operation auf Vielzahl von Entities auszuführen ist (Liste aller Benutzer die max. 20 Freunde haben) 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 20 3.3 Key-Value Stores Allgemein Daten sind mittels Schlüssel abrufbar Operationen in der Regel lediglich insert, update, delete Zwei große Vertreter: Google BigTable Amazon Dynamo 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 21 3.3 Key-Value Stores BigTable - Allgemein Paper über BigTable 2006 von Google veröffentlicht Anforderungen an Datenbank: Petabyte an Daten Hochskalierbar freie Implementierungen sind HBase, Cassandra und Hypertable 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 22 3.3 Key-Value Stores BigTable – Tabellen Tabelle hat Schema, jedoch weniger streng als bei RDBMS Tabelle besteht aus Column-Families und Columns Column-Family enthält (theoretisch unendliche) Menge von Columns Columns sind für jedes Key-Value-Paar unterschiedlich Timestamps besitzen Columns zur Adressierung 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 23 3.3 Key-Value Stores BigTable – Skalierung Tabelle aufgeteilt in Tablets und verwaltet von Master Tablets werden von Tablet-Servern verwaltet Master verteilt und teilt Tablets auf Server auf Lastverteilung durch verschieben von Tablets oder hinzufügen neuer Tablet-Server zum Verbund Master nur minimal Single-Point-of-Failure Da direkte Kommunikation zu Tablet-Servern möglich Caching der Informationen auf Anwendungsseite MapReduce Algorithmen anwendbar 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 24 3.3 Key-Value Stores BigTable - Beispiel Daten-Backend com com Webschnittstelle z.B. Websuche Benutzer de uk [2] 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 25 3.3 Key-Value Stores Dynamo - Allgemein Paper über Dynamo 2007 von Amazon veröffentlicht Anforderungen an Datenbank: Hochverfügbarkeit Geringste Latenz freie Implementierungen sind Cassandra und Projekt Voldemort 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 26 3.3 Key-Value Stores Dynamo – Consistent-Hashing Keys werden auf Ring gehashed mittels Consistent-Hashing Knoten n wird auf bestimmte Position ni gehashed speichert Keys im Interval [ni -1,ni) und ist Koordinator dessen 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 27 3.3 Key-Value Stores Dynamo – Sloppy Quorum Damit Aktion erfolgreich ist, müssen x Knoten diese erfolgreich ausführen Ähnlich dem normalen Quorum Triple (N, R, W) N = # an Repliken der Keys R = # von Knoten die Key-Value-Paar zurückliefern müssen W = # von Knoten die Key-Value-Paar schreiben müssen Übliche Besetzung (3, 2, 2) 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 28 3.3 Key-Value Stores Dynamo – Vector Clocks Nicht immer alle Knoten an Schreiboperation beteiligt Versionierung nötig Versionierung der Key-Value-Paaren mittels Vector Clocks Aufbau Vector Clock ([Knotenname, Version], …) Schreibkoordinator erhöht Version oder fügt Eintrag hinzu Zusammenführung von Konflikten durch Anwendung oder „newest Wins“ 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 29 1. Der Begriff NoSQL 2. Wichtige Konzepte 3. NoSQL Arten 4. Cassandra 5. Zusammenfassung 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 30 4. Cassandra Überblick Open-Source Projekt Initial von facebook entwickelt Seit 2010 Apache Top-Level-Projekt Physikalischer Aufbau an Amazon Dynamo angelehnt Datenstruktur an Google BigTable angelehnt 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 31 4. Cassandra Besonderheiten Existieren Super-Column-Families Column-Families in Column-Families, keine Rekursion Families sortierbar entweder nach Columnname oder Zeitstempel Automatische Hashwert(um)verteilung je nach Lastverteilung Replikation kann Rack-aware, Rack-unaware und Datacenter- aware sein 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 32 5. Zusammenfassung Relationale DBMS nicht immer einsetzbar da teilweise zu überladen CP erfüllt, aber AP gefordert Grundverständnis über wichtige Konzepte Ansatz einiger NoSQL Systeme 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 33 Ende Vielen Dank für die Aufmerksamkeit! Weitere Fragen? 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 34 Literaturverzeichnis • [1] Nosql-database.org (1. Mai 2010) • Wikipedia NoSQL (6. Mai 2010) • Wikipedia Multiversion Concurrency Control (27. Mai 2010) • Fay Chang et al.: Bigtable: A Distributed Storage System for Structured Data. In: OSDI2006: Seventh Symposium on Operating System Design and Implementation, Seattle, WA, November, 2006. • Giuseppe DeCandia et al.: Dynamo: Amazon's Highly Available Key-value Store 2007. • Avinash Lakshman und Prashant Malik: Cassandra - A Decentralized Structured Storage System. In: LADIS 2009: The 3rd ACM SIGOPS International Workshop on Large Scale Distributed Systems and Middleware, New York, NY, USA, 2009. ACM. • InfoGrid: Graph Database Tutorial (26. April 2010) • Seth Gilbert, Nancy Lynch: Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services ACM SIGACT News, v.33 Issue 2, 2002. • [2] David Vignoni: Nuvola Icon Theme 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 35 2.1 CAP Theorem Beispiel Systeme C A P C A P C A P 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 36 3.1 Document Stores Beispiel 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 37 3.2 Graphdatenbank Beispiel ©2010 Peter Neubauer (http://it-republik.de/jaxenter/artikel/Neo4j-%96-die-High-Performance-Graphendatenbank-2919.html) 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 38 3.3 Key-Value Stores Dynamo – Hinted Handoff Ausfall des Knotens X Intervallfremde Werte werden auf Knoten y gespeichert (Handoff) Zusätzlich Verweis auf Knoten X (Hint) Sobald X wieder verfügbar Rückgabe der Key-Value-Paare an X 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 39 3.3 Key-Value Stores Dynamo – Merkle Tree Dienen der effizienten Synchronisation Knoten hält Hashwert über die Kindsknoten Blätter sind Key-Value-Paare Synchronisationsablauf: Vergleich der Wurzelhashwerte Wenn ungleich: tiefer iterieren bis veränderte Blätter gefunden Diese sind zu synchronisieren Ansonsten (Teil-)Bäume synchron 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 40 3.3 Key-Value Stores Dynamo – Gossip Kommunikation Kommunikation der Knoten durch Gossip (dt. Tratsch) Keine feste Kommunikationsordnung Jeder Knoten kann mit jeden kommunizieren Veränderungen propagieren stückweise durch System 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 41 4. Cassandra Beispiel Facebook Posteingangssuche 17. Juni 2010 Vortrag NoSQL-Datenbanken Philipp Heinze 42