Web Technologien – NoSQL Datenbanken Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Department of Law and Economics WS 2011/2012 Wednesdays, 8:00 – 10:00 a.m. Room HS 021, B4 1 Wrap-Up Wozu dient eine Datenbank? • Daten permanent sichern è Könnte auch das Dateisystem übernehmen ?! Quelle: http://de.wikipedia.org/wiki/Dateisystem 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 2 Wrap-Up Wozu dient eine Datenbank? • Daten permanent sichern • Daten anderen bereitstellen • Daten auffinden • Daten (automatisch) manipulieren Anwendung è Database Management System (DBMS) DBMS Datenbank -Dateien Datenbanksystem 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 3 Wrap-Up Wozu dient eine Datenbank? • Daten permanent sichern • Daten anderen bereitstellen • Daten auffinden • Daten (automatisch) manipulieren Relationales Datenbankmodell è RDBMS • Edgar F. Codd 1970 • Etablierter Standard • Basiert auf untereinander verknüpften Tabellen • SQL: Sprache zur Definition, Abfrage und Manipulation von relationalen Datenbanken 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Programm PK Programm ID Startzeit Dauer FK Kanal ID Kanal PK Kanal ID Sprache Land Slide 4 Semantik relationaler Datenbanken Wozu dient eine Datenbank? • Daten permanent sichern • Daten anderen bereitstellen • Daten auffinden • Daten (automatisch) manipulieren Hierzu muss die Datenbank die Daten „verstehen“: è Was ist die Semantik? Wie komplex ist die Semantik? Feld (engl. Array) Baum (mit Relationen) Beliebiger Graph Relationale DB Wird dies wirklich benötigt? 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 5 Semantik relationaler Datenbanken Wozu dient eine Datenbank? • Daten permanent sichern • Daten anderen bereitstellen • Daten auffinden • Daten (automatisch) manipulieren Hierzu muss die Datenbank die Daten „verstehen“: è Was ist die Semantik? Wo wird die Semantik interpretiert? ? User Presentation Business-Logic Data Relationale DB Wird dies wirklich benötigt? 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 6 NoSQL Relationale Datenbanken: sehr formell (normalisiert), sehr mächtig, komplex è Bei einem einfachen Datenmodell unnötig NoSQL = not only SQL Alternative Ansätze zur Datenhaltung neben relationalen Datenbanken Document Stores Key Value Stores NoSQL Object Databases 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Column Stores Graph Databases Slide 7 NoSQL Relationale Datenbanken: sehr formell (normalisiert), sehr mächtig, komplex è Bei einem einfachen Datenmodell unnötig NoSQL = not only SQL Alternative Ansätze zur Datenhaltung neben relationalen Datenbanken Neben einem alternativen Datenmodell bieten NoSQL Datenbanken oft: • Daten-Partitionierung und Daten-Replizierung über mehrere Instanzen • Speicherung sehr großer Datenmengen auf „Commodity Hardware“ • Möglichkeit Konsistenz-Bedingung zu vernachlässigen à Vorlesung Big Data 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 8 Key Value Stores • • • • • • • Synonym: Tuple Store Verwendet Schlüssel (Keys) zur Indizierung von Daten (Values) Struktur der Daten ist nicht vorgegeben (schemalos) Datentyp ist (zumeist) nicht vorgegeben Queries sind auf Schlüssel beschränkt f(key) = value Vorteile der geringen Komplexität Schlüssel (Keys) Daten (Values) • Skalierbarkeit • Distribution/Synchronisation • Fehlertoleranz 12 134 „ZDF“ „Terra X“ 16518 9 19:30 45 min Feld 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 9 Key Value Stores • Membase (Couchbase) http://www.couchbase.org/ • Memcached (verteilter Cache-Server zum beschleunigen von DB-Anfragen) • Memcached Nutzer: Wikipedia, YouTube, Facebook, Twitter, Flickr, etc. • Membase = Memcached + Persistenz, Daten-Replizierung, Daten-Partitionierung Membase <?php $mc = new Memcached; $mc->addServer("localhost", 11211); $mc->set("a", 1); var_dump($mc->get("a")); ?> • Azure Table Storage (Microsoft) http://msdn.microsoft.com/en-us/library/dd179423.aspx • Redis (Vmware) http://redis.io/ • Berkeley DB (Oracle) http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 10 Document Stores • Ähnlich zu Key Value Stores – Daten sind jedoch Dokumente, die nach einem bestimmten Datenformat (XML, JSON, etc.) strukturiert sind • Neben „Schlüssel-Anfragen“ kann auch nach Inhalten (z.B. XML-Attribut) oder Meta-Daten (z.B. Tags, Sammlungen, etc.) gesucht werden • Anfragesprachen sind abhängig vom Datenformat: • XML: XPath, XQuery (à Vorlesung XML/XQuery/XPath und XSLT) • JSON: JSONiq (http://jsoniq.org/), Jaql (http://code.google.com/p/jaql/), UnQL (http://www.unqlspec.org/) Schlüssel 12 134 Dokumente 29.11.11 Feld bzw. Baum zdf.xml terraX.xml 16518 9 Univ.-Prof. Dr.-Ing. Wolfgang Maass Dokumente programm.xml empfehlungen.xml Slide 11 Document Stores • BaseX (XML) http://basex.org/ • Anfragen via XQuery/Xpath • Kollektionen von Dokumenten • Einfache Administration über GUI BaseX for $city in doc('factbook')//city/name/text() where starts-with($city, 'Q') order by $city return data($city) • CouchDB (Apache, JSON) http://couchdb.apache.org/ • MongoDB (JSON) http://www.mongodb.org/ • Lotus Notes(IBM, Domino XML) http://www-01.ibm.com/software/de/lotus/wdocs/notes-domino8/notes.html 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 12 Column Stores • Ähnlich zu Key Value Stores – jedoch mit mehrdimensionalen Schlüsseln Schlüssel C P T , 1 T , 2 Daten Column Family Row 1 „ZDF“ „Terra X“ 19:30 Column 1 Column 2 Column 3 Value Value Value Timestamp Timestamp Timestamp 45 min Row 2 Baum 29.11.11 Column 1 Column 2 Value Value Timestamp Timestamp Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 13 Column Stores • Ähnlich zu Key Value Stores – jedoch mit mehrdimensionalen Schlüsseln • Performance-Vorteil gegenüber relationalen Datenbanken bei Operationen über viele Einträge mit Schlüsseln geringer Dimensionalität (wenige Spalten) • Kompression bei vielen Einträgen (à Vorlesung Big Data) Zeilenorientiert (relationale Datenbank): Spaltenorientiert (Column Store): 1, Smith, Joe, 40000 1, 2, 3 2, Jones, Mary, 50000 Smith, Jones, Johnson 3, Johnson, Cathy, 44000 Joe, Mary, Cathy 40000, 50000, 44000 Operation: Berechne das durchschnittliche Gehalt (vgl. http://en.wikipedia.org/wiki/Column-oriented_DBMS) 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 14 Column Stores Cassandra (N = name, V = value, T = timestamp) • Cassandra (Apache) http://cassandra.apache.org/ • Spalten müssen nicht zwangsweise belegt werden • Cassandra Nutzer: Twitter, Cisco, Digg, etc. { "user1":{ // <- row 1 "Users":{ // <- column family 1 "name":{"N":"name", "V":"…", "T":"…"}, // <- a column "email":{"N":"email", "V":"…", "T":"…"} }, "Stats":{ // <- column family 2 "visits":{"N":"visits", "V":"…", "T":"…"} } }, "user2":{ // <- row 2 "Users":{ // <- column family 1 "email":{"N":"email", "V":"…", "T":"…"} } } • Hadoop/HBase (Apache) http://hadoop.apache.org/ • Hypertable http://hypertable.org/ • BigTable (Google) Chang et al. (2006): Bigtable: a distributed storage system for structured data. 29.11.11 } Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 15 Graph Databases • Daten = Knoten, Beziehungen der Daten zueinander = Kanten • Daten können über ihre (relative) Position im Graphen identifiziert werden (traversieren) – es wird kein (globaler) Schlüssel benötigt • Daten können sehr flexibel strukturiert werden • Im Gegensatz zu relationalen Datenbanken sind keine Joins notwendig • Zumeist sind relationale Datenbanken bei großen Datenmengen effizienter „ZDF“ läuft auf „Terra X“ Beliebiger Graph 29.11.11 beginnt um dauert 19:30 45 min Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 16 Graph Databases • Neo4J http://neo4j.org/ • sones GraphDB http://www.sones.de/ • Trinity (Microsoft) http://research.microsoft.com/ en-us/projects/trinity/ • AllegroGraph http://www.franz.com/agraph/ Neo4J (vgl. http://docs.neo4j.org/chunked/snapshot/tutorials-java-embedded-traversal.html) Traverser traverser = getNodeByName( "Admins" ).traverse( Traverser.Order.BREADTH_FIRST, StopEvaluator.END_OF_GRAPH, ReturnableEvaluator.ALL_BUT_START_NODE, RoleRels.PART_OF, Direction.INCOMING, RoleRels.MEMBER_OF, Direction.INCOMING); 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 17 Object Databases • Direkter Bezug zw. Datenhaltung und objektorientierter Programmiersprache • Lösung des „Impedance Mismatch“: Geringer Aufwand bei der Überführung der Daten von Programm-Repräsentation in Datenbank-Repräsentation und vice versa • Speicherung eines „Web-Of-Objects“ und deren zugehörigen Attribute • db4o (Versant) http://db4o.com/ • Objectivity http://www.objectivity.com/ Employee Employee name Smith name Jones salary 40000 salary 50000 employeeOf employeeOf Company name Beliebiger Graph 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass XYZ Inc. Slide 18 Literatur Bücher: • J. Chris Anderson, Jan Lehnardt, Noah Slater CouchDB: The Definitive Guide http://shop.oreilly.com/product/9780596155902.do • Lars George HBase: The Definitive Guide http://shop.oreilly.com/product/0636920014348.do • Eben Hewitt Cassandra: The Definitive Guide http://shop.oreilly.com/product/0636920010852.do Web: • http://nosql-database.org/ 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 19 Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Saarland University, Germany 29.11.11 Univ.-Prof. Dr.-Ing. Wolfgang Maass Slide 20