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