<Insert Picture Here> Oracle Big Data Technologien Ein Überblick Ralf Lange Global ISV & OEM Sales
NoSQL: Eine kurze Geschichte Internet-Boom: Erste Ansätze selbstgebauter "Datenbanken" Google stellt "MapReduce" vor. Google stellt "BigTable" vor. Amazon stellt "Dynamo" vor. Oracle NoSQL Database "memcachedb" Key-Value-Store als "Cache" für RDBMS Erste NoSQL OpenSource Projekte Erste NoSQL Einsätze in großen Unternehmen 2000 2003 2004 2006 2007 2008 2010 2011
NoSQL: Was ist das? Not-only-SQL (2009) Sammelbegriff für nichtrelationale Datenbanken, die massiv parallelisierbar sind weitgehend ohne Datenmodell arbeiten die Datenkonsistenz nicht zwingend durchsetzen sehr entwicklerspezifisch sind Derzeit noch keine Standardisierung vorhanden Keine Abfragesprache (eben "NoSQL") Massive Produktvielfalt (über 122 auf nosql-database.org) Produkte nur schwer vergleichbar
NoSQL Technologie im Einsatz Sozialen Netzwerke selbst LinkedIn, Facebook, Xing, Google+, Twitter Soziale Netzwerke als Datenlieferant Facebook-Export laden und verarbeiten Personalisierung Amazon, Ebay, Yahoo, Internetzentrische Dienste Beispiele: TinyURL, bit.ly Sensordaten
SQL oder NoSQL: Das ist die Frage! ACID oder BASE? SQL: RDBMS (ACID) Atomicity Consistency Isolation Durability Zwingend höchste Priorität für Datenkonsistenz und -Integrität Verteilte Datenhaltung per Replikation möglich, aber untergeordnet Datenmodell als Schema Abfragesprache: SQL Abfrageausführung durch Optimizer Generische Datenbank für viele Anwendungen NoSQL (BASE) Basically Available Soft State Eventual consistency Konsistenz und Integrität können teilweise aufgegeben werden ("C" oder "A" in "CAP") Verteilte Datenhaltung (Partition Awareness) hat höchste Priorität Kein Datenmodell Keine Abfragesprache; direkte API-Zugriffe Know-How in der Anwendung Datenhaltung wird speziell auf eine Anwendung zugeschnitten
CAP Theorem Anforderungen an Datenhaltungssysteme Zwei Anforderungen sind gleichzeitig erfüllbar C = Consistency A = Availibility P = Partition Awareness A RDBMS Oracle ist CA Prio 1: Konsistenz und Verfügbarkeit NoSQL DB is CP oder AP Prio 1: Verteilte Systeme C P
NoSQL und SQL im Kontext erfassen verarbeiten auswerten Höchste Verfügbarkeit Höchstes Transaktionsvolumen Flexible Strukturen Durchsatz In-Place Verarbeitung Viele Datenquellen Umfassende Analyse Daten-"Veredelung" Agile Fortentwicklung Skalierbarkeit Ergebnisse in Echtzeit
NoSQL und SQL im Kontext Unstructured Schema-less Oracle NoSQL DB Schema Oracle RDBMS Information Density Erfassen Verarbeiten Auswerten
NoSQL-Datenhaltungsstrategien Storage Model Key-value Columnar Document Graph Pro, Kontra, Anwendungsgebiete Einfach, sehr flexibel, sehr effizient und bekannt Nicht selbstbeschreibend, keinerlei Schema Anwendungen: Authentifizierung, Personalisierung, Linkverkürzung Effizient für "sparse data", gut geeignet für Aggregatsbildungen Ineffizent für "satzbasierte Zugriffe" Anwendungen: Activity tracking XML Repositorys, selbstbeschreibende Objekte Gegebenenfalls hoher Platzverbrauch Anwendungen: Massiv parallele Dokumentsuche Speicherung von Beziehungen / Netzwerken Allgemeine Suche über ein Attribut sehr schwierig Anwendungen: Soziale Netzwerke
Oracle NoSQL Database Key-Value Datenhaltung Basiert auf BerkeleyDB JE HA Konsistenz und Persistenz konfigurierbar ACID-Transaktionen Extrem skalier- und parallelisierbar Hochverfügbarkeit per Replikation Transparentes Loadbalancing Einfache Installation und Einrichtung
Was ist ein "Key-Value-Store"? Key = Index Key-Value Store CUSTOMERS Key Value Zeilen 010101010 010101011 Datenstrukturen sind nicht selbstbeschreibend Im wesentlichen eine zweispaltige Tabelle "KEY" und "VALUE" VALUE kann auch ein komplexes Objekt sein Die Anwendung kennt die Datenstrukturen nicht selbstbeschreibend Joins zu anderen Key-Value Stores allein durch die Anwendung Einfache Zugriffe: GET, PUT, DELETE Einfach parallelisierbar
Oracle NoSQL Database Zugriffe per API (Java)
NoSQL Anwendungstopologie Webserver Webserver Load balancer Webserver Application Server Application Server NoSQLDB Treiber Application Server NoSQLDB Treiber Storage Nodes R M R Partition 1 Partition 2 Partition 3
Oracle NoSQL DB: Terminologie Partitionen (Partitions) Zuordnung des Schlüssels zu Partitionen per Hash-Algorithmus. Replicationsgruppe (Replication Group) Partitionen werden zu Replikationsgruppen zusammengefasst. Werteraum für Schlüssel.... Replication Nodes Replikationsgruppen werden von Replikationsknoten verwaltet. Replikation selbst erfolgt durch den NoSQLDB- Treiber der Anwendung. M R1 R2 M R1 R2.... M R1 R2 Storage Node Virtuelle oder physikalische Maschine
Replikationskonzept Master und Replica Master bedient WRITE Requests Replica bedienen WRITE und READ Requests Wichtig: Replikationsfaktor Replikationsfaktor = Master + Anzahl_Replika Anzahl_Nodes = Partitionen * Replikationsfaktor Empfohlen: Replikationsfaktor mindestens 3 Bei Ausfall eines Master kann eine Replica neuer Master werden
"Schreibekonsistenz" einer Transaktion Commit-Verhalten Festlegung auf Ebene der Operation oder allgemein Commit-Policy Default: NO_SYNC
"Schreibekonsistenz" einer Transaktion Commit-Verhalten Festlegung auf Ebene der Operation oder allgemein Replikations-Policy Default: SIMPLE_MAJORITY
Schreibkonsistenz festlegen... Beispiel: Default setzen Aufgabe des Entwicklers: Java-Code : Durability d = new Durability( Durability.SyncPolicy.SYNC, Durability.SyncPolicy.SYNC, Durability.ReplicaAckPolicy.NONE ); <KVStoreConfig>config.setDurability(d); : // Commit-Policy MASTER // Commit-Policy REPLICA // Replikations-Policy
Lesekonsistenz einer Transaktion Festlegung auf Ebene der Operation Defaults sind möglich Mögliche Einstellungen zur Lesekonsistenz Absolute Lese nur vom Master Time-based Lese auch von einer Replica, die aber maximal ein bestimmtes Zeitintervall huinter dem Master liegt Version Lese auch von einer Replica, die mindestens ein bestimmtes Transaction Token erreicht hat None Lese vom Master oder von irgendeiner Replica
NoSQL und SQL im Kontext Unstructured HDFS Hadoop Schema-less Oracle NoSQL DB Oracle Loader for Hadoop Schema Oracle RDBMS Information Density Erfassen Verarbeiten Auswerten
Hadoop: Was ist das? "Shared Nothing" Compute Architecture Open Source Im Gegensatz zur Google-Implementierung Batchorientiert API gesteuert Definition und Aufteilung der Teilaufgaben ist Sache des Entwicklers Massive Parallelisierung in extrem großen Clustern Automatische Behandlung eines Knoten-Ausfalls
Hadoop: Terminologie Hadoop Client Schnittstelle zum Cluster; startet die Verarbeitung, tut selbst aber nichts NameNode Verwaltet Informationen (wo sind die Daten) und Zugriffskontrolle; als einzelner Knoten oder doppelt auslegbar JobTracker ordnet die Teilaufgaben auf die einzelnen Knoten zu (query coordinator) Data Nodes Diese enthalten Daten und führen die Aufgaben aus. Hadoop Distributed File System (HDFS) Gemeinsames Filesystem für Daten
Hadoop in Aktion: Datenanalyse NameNode "Weiss, wo die Daten liegen" Client / Program Aggregate berechnen Aggregierte Ergebnisse JobTracker Verteilung von Teilaufgaben DataNodes Ausführung der Teilaufgaben
MapReduce: Was ist das? MapReduce is a software framework introduced by Google to support distributed computing on large data sets on clusters of computers. [ Ein Hadoop-Cluster führt MapReduce-Programme aus Ein Reducer erhält Daten von einem Mapper Mapper und Reducer arbeiten massiv parallel Nahezu alle Programmiersprachen denkbar Ein Beispiel
MapReduce: Ein Beispiel Input Reader The cloud is water vapor. But is water vapor useful? But it is! Map process Map process the, 1 cloud, 1 is, 1 water, 1 vapor, 1 but, 1 is, 1 water, 1 vapor, 1 useful, 1 but, 1 it, 1 is, 1 Partition, Compare, Redistribute the, 1 cloud, 1 is, 1 is, 1 is, 1 but, 1 but, 1 Water,1 vapor, 1 water, 1 vapor, 1 it, 1 useful, 1 http://en.wikipedia.org/wiki/mapreduce
MapReduce: Ein Beispiel the, 1 cloud, 1 is, 1 is, 1 is, 1 but, 1 but, 1 water,1 vapor, 1 water, 1 vapor, 1 it, 1 useful, 1 Reducer Reducer the, 1 cloud, 1 is, 3 but, 2 water, 2 vapor, 2 it, 1 useful, 1 Consolidate and Write the, 1 cloud, 1 water, 2 is, 3 but, 2 vapor, 2 it, 1 useful, 1