NoSQL & Big Data Datenorientierte Systemanalyse NoSQL Databases and Big Data Gerhard Wohlgenannt Die besprochenen Systeme haben nicht den Anspruch und das Ziel DBS zu ersetzen, sondern für gewisse Anwendungsfälle andere / spezifische Lösungen zu bieten. Agenda 1. NoSQL (what is it?) 2. NoSQL: Document stores 3. NoSQL: GraphDBs 4. NoSQL: ObjectDBs 5. Big Data DATENORIENTIERTE SYSTEMANALYSE - 1-17. JUNI 2013 NoSQL DBs - Überblick Not only SQL!! Sammelbegriff für verschiedene Ansätze Gemeinsamkeit: weniger Anforderungen an strenge DB- Grundsätze und Mächtigkeit des DB-Systems Daten oft nicht in Form von klassischen Tabellen gespeichert Oft keine mächtige Abfragesprache wie SQL NoSQL vs SQL DBs SQL DBs ursprünglich verbreitet in Banken und Versicherungen Fokus auf Konsistenz und Transaktionssicherheit Schon besprochen: Transaktionen Mächtige Abfragesprachen zur Erstellung von Reports, etwa Kontoauszug Konsistenz, die Mächtigkeit des Systems, Integritätsbedingungen, JOINs, etc führt zu Kompromissen bei der Abfrage-Performanz Beispiel: Einfügen von neuem Datensatz führt zu Constraint-Checks (Datentyp, FK), zu index-updates, event. Funktionsaufrufen über Trigger... DATENORIENTIERTE SYSTEMANALYSE - 2-17. JUNI 2013 DATENORIENTIERTE SYSTEMANALYSE - 3-17. JUNI 2013
Neue Entwicklungen wie Cloud SQL um NoSQL ähnliche Anforderungen erfüllen http://www.youtube.com/watch?v=rroy6i4gkwu NoSQL Oft optimiert für simple Abfragen und sehr grosse Datenmengen Simple Abfragen, Beispiel: key-value store Keine komplexen Operationen, etwa Joins Weiteres Ziel: Skalierbarkeit inbes. durch Verteilung Nur eventual consistency: changes propagated after sufficiently long period Wichtiger Aspekt: distributed und fault-tolerant (via redundancy) passt gut zusammen mit cloud-computing - Scalability einfach durch Hinzufügen neuer Rechner DATENORIENTIERTE SYSTEMANALYSE - 4-17. JUNI 2013 DATENORIENTIERTE SYSTEMANALYSE - 5-17. JUNI 2013 Types of NoSQL DBs Key-value stores: selbsterklärend :-) BigTable: entwickelt von Google, mehrdimensionale Map, soll auf Petabytes skalieren Document store: Für effiziente Speicherung / Retrieval von semistrukturierten Daten ( Dokument ) Graph-Stores: siehe unten ObjectDBs: siehe unten Key-Value stores Huge collection of key-value pairs (distributed) Values können wiederum zusammengesetzt sein Grundlage: Amazon s paper über Dynamo Implementations: Voldemort (linkedin), Riak, Tokyo DATENORIENTIERTE SYSTEMANALYSE - 6-17. JUNI 2013 DATENORIENTIERTE SYSTEMANALYSE - 7-17. JUNI 2013
Document DB Example NoSQL Document stores Document-oriented DBs haben überlicherweise einen unique key um auf records zuzugreifen Inspired by Lotus Notes Retrieval: (RESTful)-API or Simple Query Language, eg. all docs with field topic= football Organization of documents: Tags, non-visible metadata, hierarchy structures, collections,... Implementations: CouchDB, MongoDB, and many others DATENORIENTIERTE SYSTEMANALYSE - 8-17. JUNI 2013 DATENORIENTIERTE SYSTEMANALYSE - 9-17. JUNI 2013 ObjektDBs - Überblick Objekte aus OO Programmiersprachen selbst in der DB gehalten Einfache Form Persistenz zu erreichen Beispiel: in einer Java-GUI werden neue Mitarbeiter eingefügt. - Diese Mitarbeiter werden im Programm als Objekte der Klasse Mitarbeiter verwendet. - Anstatt nun die relevanten Attribute der Mitarbeiterobjekte in eine relationales DB zu speichern Objekte werden einfach as is in die Objekt-DB gespeichert. - Objekte können natürlich auch wieder aus der O-DB geladen/verändert werden. ObjektDBs (Details) Wie gesagt: Direktes persistentes Speichern von Objekten macht ORM (mapping Objekte Relationen überflüssig Besonderer Vorteil bei komplexen Objekten die schwer ins relationale Schema abbildbar sind Beispiel db4o, First Steps http://community.versant.com/documentation/ Reference/db4o-8.0/java/tutorial/ Pilot pilot1 = new Pilot("Michael Schumacher", 100); db.store(pilot1); DATENORIENTIERTE SYSTEMANALYSE - 10-17. JUNI 2013 DATENORIENTIERTE SYSTEMANALYSE - 11-17. JUNI 2013
Graphendatenbanken Graph Example Benutzt Graphen um Informationen darzustellen Knoten (Objekte) - Kanten gerichtete Graphen, gewichtete Graphen (zb Bandbreite bei Netzwerken) GraphDB kann: - Spezielle Queries: shortest path -... Noch keine einheitliche Abfragesprachen Implementations: AllegroGraph, Sones, Neo4j DATENORIENTIERTE SYSTEMANALYSE - 12-17. JUNI 2013 DATENORIENTIERTE SYSTEMANALYSE - 13-17. JUNI 2013 NoSQL Details NoSQL Vergleich Geschichte - Entstand primär aus den Anforderung von Internet-Konzernen wie Google, Facebook, etc. Anforderungen: riesige Datenmengen schnell ändern und ausliefern - aber: Auch zb Twitter und Facebook verwenden für vieles MySQL Datenbanken - je nach Anforderung. Ansatz: Lightweight, einfaches Datenmodell, Konsistenz und Datensicherheit nicht sooo wichtig (Twitter) Dafür andere Anforderungen im Fokus, etwa performance. Key-Value: For huge data size, low complexity (semistructured, connected) of data Big Tables: For less big data size, a bit more of complexity of data Document DBs: For less big data size, a bit more of complexity of data Graph DBs: For less big data size, a bit more of complexity of data >: The more connected, the harder to scale DATENORIENTIERTE SYSTEMANALYSE - 14-17. JUNI 2013 DATENORIENTIERTE SYSTEMANALYSE - 15-17. JUNI 2013
In-Memory DBs Traditional: Disk optimized In Memory: Fast response time, predicatable DB & transaction log persisted to disk Very good overview: http://www.youtube.com/watch?v=moifpzhliw Big data Big Data Eines der Hype-Keywords 2012 Big Data = Transactions + Interactions + Observations Datenmenge so gross dass mit konventionellen (DB-)tools schwer handhabbar Grosse Datenmenge entsteht auch durch den Wunsch nach Integration und Finden von Beziehunge zwischen kleineren data sets Bzw auch durch mobile devices, Sensordaten, software logs,... Beispiele: Wettermodelle, Webanalyse, LHC, Bioinformatik DATENORIENTIERTE SYSTEMANALYSE - 16-17. JUNI 2013 DATENORIENTIERTE SYSTEMANALYSE - 17-17. JUNI 2013 Big data (2) Wie gesagt is difficult to work with using relational databases and desktop statistics and visualization packages requiring instead massively parallel software running on tens, hundreds, or even thousands of servers (wikipedia) http://www.youtube.com/watch?v= avp5d16wep0 DATENORIENTIERTE SYSTEMANALYSE - 18-17. JUNI 2013 DATENORIENTIERTE SYSTEMANALYSE - 19-17. JUNI 2013