Web Technologien – NoSQL Datenbanken

Werbung
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
Herunterladen