web technologien – nosql datenbankeniss.uni-saarland.de/workspace/documents/wt_7_nosql... ·...
TRANSCRIPT
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
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 2
Wozu dient eine Datenbank? • Daten permanent sichern è Könnte auch das Dateisystem übernehmen ?!
Wrap-Up
Quelle: http://de.wikipedia.org/wiki/Dateisystem
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 3
Wozu dient eine Datenbank? • Daten permanent sichern • Daten anderen bereitstellen • Daten auffinden • Daten (automatisch) manipulieren
è Database Management System (DBMS)
Wrap-Up
Datenbanksystem
Anwendung
DBMS Datenbank-Dateien
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 4
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
Wrap-Up
Programm PK Programm ID
Startzeit
Kanal ID Dauer
FK
Kanal PK Kanal ID
Sprache Land
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 5
Wozu dient eine Datenbank? • Daten permanent sichern • Daten anderen bereitstellen • Daten auffinden • Daten (automatisch) manipulieren
Semantik relationaler Datenbanken
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?
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 6
Wozu dient eine Datenbank? • Daten permanent sichern • Daten anderen bereitstellen • Daten auffinden • Daten (automatisch) manipulieren
Semantik relationaler Datenbanken
Hierzu muss die Datenbank die Daten „verstehen“: è Was ist die Semantik?
Presentation Business-Logic Data User
Wo wird die Semantik interpretiert?
?
Relationale DB Wird dies wirklich benötigt?
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 7
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
NoSQL
Key Value Stores
NoSQL
Document Stores
Column Stores
Graph Databases
Object Databases
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 8
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
NoSQL
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 9
• 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
• Skalierbarkeit • Distribution/Synchronisation • Fehlertoleranz
Key Value Stores
134
9
16518
Schlüssel (Keys) Daten (Values)
45 min
„ZDF“
19:30
„Terra X“
12
Feld
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 10
• 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
• 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
Key Value Stores
Membase
<?php $mc = new Memcached; $mc->addServer("localhost", 11211); $mc->set("a", 1); var_dump($mc->get("a")); ?>
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 11
• Ä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/)
Document Stores
134
9
16518
Schlüssel Dokumente
empfehlungen.xml
zdf.xml
programm.xml
terraX.xml
12
Feld bzw. Baum Dokumente
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 12
• BaseX (XML) http://basex.org/ • Anfragen via XQuery/Xpath • Kollektionen von Dokumenten • Einfache Administration über GUI
• 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
Document Stores
BaseX
for $city in doc('factbook')//city/name/text() where starts-with($city, 'Q') order by $city return data($city)
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 13
• Ähnlich zu Key Value Stores – jedoch mit mehrdimensionalen Schlüsseln
Column Stores
Baum
P
T
T
Schlüssel Daten
45 min
„ZDF“
19:30
„Terra X“
C
1
2 ,
,
Column Family
Row 1
Row 2
Column 1
Column 2
Column 3
Timestamp
Value
Timestamp
Value
Timestamp
Value
Column 1
Column 2
Timestamp
Value
Timestamp
Value
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 14
• Ä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)
Column Stores
1, Smith, Joe, 40000 2, Jones, Mary, 50000 3, Johnson, Cathy, 44000
Zeilenorientiert (relationale Datenbank):
1, 2, 3 Smith, Jones, Johnson Joe, Mary, Cathy
Spaltenorientiert (Column Store):
40000, 50000, 44000
Operation: Berechne das durchschnittliche Gehalt
(vgl. http://en.wikipedia.org/wiki/Column-oriented_DBMS)
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 15
• Cassandra (Apache) http://cassandra.apache.org/ • Spalten müssen nicht
zwangsweise belegt werden • Cassandra Nutzer: Twitter,
Cisco, Digg, etc.
• 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.
Column Stores
Cassandra (N = name, V = value, T = timestamp)
{ "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":"…"} } } }
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 16
• 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
Graph Databases
45 min
„ZDF“
19:30
dauert „Terra X“
beginnt um
läuft auf
Beliebiger Graph
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 17
• 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/
Graph Databases
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);
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 18
Employee
• 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/
Object Databases
Smith name
40000 salary
employeeOf
Employee Jones name
50000 salary
employeeOf
Company XYZ Inc. name Beliebiger Graph
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 19
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/
Literatur
Univ.-Prof. Dr.-Ing. Wolfgang Maass
29.11.11 Slide 20
Univ.-Prof. Dr.-Ing. Wolfgang Maass
Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Saarland University, Germany