NoSQL für Anwendungen



Ähnliche Dokumente
Cassandra Query Language (CQL)

Überblick und Vergleich von NoSQL. Datenbanksystemen

ANALYTICS, RISK MANAGEMENT & FINANCE ARCHITECTURE. NoSQL Datenbanksysteme Übersicht, Abgrenzung & Charakteristik

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Big Data Management Thema 14: Cassandra

NoSQL-Databases. Präsentation für Advanced Seminar "Computer Engineering", Matthias Hauck,

NoSQL. Einblick in die Welt nicht-relationaler Datenbanken. Christoph Föhrdes. UnFUG, SS

Dokumentenorientierte Datenbanken - MongoDB

Algorithmen. Consistent Hashing Bloom Filter MapReduce. Distributed Hash Tables. Einführung 1

Apache HBase. A BigTable Column Store on top of Hadoop

NoSQL. Was Architekten beachten sollten. Dr. Halil-Cem Gürsoy adesso AG. SEACON 2012 Hamburg

NoSQL mit Postgres 15. Juni 2015

PostgreSQL in großen Installationen

Java Forum Stuttgart 2013 twitter.com/kspichale spichale.blogspot.de

BigTable Else

Groovy und CouchDB. Ein traumhaftes Paar. Thomas Westphal

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel Michael Kluge (michael.kluge@tu-dresden.

SimpleVOC-Yetanother. Bausteine für eine Key/Value- Datenbank

Cloud-Provider im Vergleich. Markus

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Einführung in CouchDB

Oracle Big Data Technologien Ein Überblick

Persönlichkeiten bei bluehands

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Vorwort zur 5. Auflage Über den Autor... 16

Big Data Mythen und Fakten

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

EXASOL Anwendertreffen 2012

Skalierbare Webanwendungen

Wide-Column Datenmodell nach BigTable

Big Data Informationen neu gelebt

RavenDB, schnell und skalierbar

Was ist Windows Azure? (Stand Juni 2012)

Web Technologien NoSQL Datenbanken

Zeit bedeutet eine Abwägung von Skalierbarkeit und Konsistenz

CouchDB & CouchApps. Strukturlose Speicherung von Daten und Anwendungen. B1 Systems GmbH. March 18,

Wide Column Stores. Felix Bruckner Mannheim,

Stefan Edlich Achim Friedland Jens Rampe Benjamin Brauer. NoSQL. Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken HANSER

SQL structured query language

Akonadi. Der PIM-Service für den freien Desktop. Tobias König. 30. März 2010

SQL- & NoSQL-Datenbanken. Speichern und Analysen von großen Datenmengen

Präsentation mongodb. David Wild

Grundlagen der Informatik 2

ISBN: Herstellung: Diplomica Verlag GmbH, Hamburg, 2011

NoSQL. Prof. Dr. Ingo Claßen. Einführung. Kategorisierung von NoSQL-Systemen. Verteilung. Konsistenz. Literatur

Referentielle Integrität

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

NoSQL Deep Dive mit Cassandra. Kai Spichale

Datenbanksysteme SS 2007

NoSQL HANSER. Einstieg in die Web 2.0 Datenbanken. Stefan Edlich Achim Friedland Jens Hampe Benjamin Brauer Markus Brückner

Referentielle Integrität

Neues aus der nicht-, semi- und relationalen Welt

SAP NetWeaver Gateway. 2013

NoSQL Datenbanken am Beispiel von CouchDB

Web Sockets mit HTML5. Quelle:

Aktuelle SE Praktiken für das WWW

Microsoft Dynamics NAV 2013 SOAP und OData Webservices mit.net nutzen Dipl.-Inf. (FH) Ingo Jansen

DataSpace 2.0 Die sichere Kommunikations-Plattform für Unternehmen und Organisationen. Your Data. Your Control

Beratung. Results, no Excuses. Consulting. Lösungen. Grown from Experience. Ventum Consulting. SQL auf Hadoop Oliver Gehlert Ventum Consulting

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Hadoop. Eine Open-Source-Implementierung von MapReduce und BigTable. von Philipp Kemkes

Institut für Verteilte Systeme

SODA. Die Datenbank als Document Store. Rainer Willems. Master Principal Sales Consultant Oracle Deutschland B.V. & Co. KG

NoSQL-Datenbanken. Kapitel 1: Einführung. Lars Kolb Sommersemester Universität Leipzig 1-1

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

PostgreSQL im praktischen Einsatz. Stefan Schumacher

Map Reduce on Hadoop Seminar SS09. Similarity Join. Tim Felgentreff, Andrina Mascher

Thomas Matzner Berater für Systemanalyse Couchbase. Java User Group München

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Üben von DDL und DML. Ergebnis:

Referenzielle Integrität SQL

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Charakteristika und Vergleich von SQL- und NoSQL- Datenbanken

Configuration Management mit Verbosy OSDC Eric Lippmann

MySQL, phpmyadmin & SQL. Kurzübersicht

Konsistenzproblematik bei der Cloud-Datenspeicherung

<Insert Picture Here> Web-2.0-Anwendungen mit MySQL

VIVIT TQA Treffen in Köln am API- Programmierung und Nutzung bei HP Quality Center / ALM. Michael Oestereich IT Consultant QA

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Architektur von Cassandra

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 6: Datenbankabfragen mit SQL und PHP. Stand: Übung WS 2014/2015

Die Alternative zum Web-Form Modell

Möglichkeiten für bestehende Systeme

Datenmanagement in Android-Apps. 16. Mai 2013

NoSQL Datenbanken am Beispiel von HBase. Daniel Georg

8.4 Überblick und Vergleich weiterer ERP-Systeme. G Oracle Applications 11 G PeopleSoft 7 G J.D. Edwards One World G BaanERP

Ceph. Distributed Storage Julian mino Klinck GPN

Diplomarbeit: Open Source Rapid Web Development Frameworks - Eine Untersuchung der Skalierungsstrategien

Performance Tuning

Architekturen. DB-Anwendungen: Aufgaben. Aufteilung der Funktionen. ƒ Datenbankanwendungen

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

XMPP: Extensible Messaging and Presence Protocol

Next Generation CMS. API zu ihrem Content

EHCache und Terracotta. Jochen Wiedmann, Software AG

Web Data Management Systeme

Seminar Cloud Data Management WS09/10. Tabelle1 Tabelle2

MapReduce. Johann Volz. IPD Snelting, Lehrstuhl Programmierparadigmen

Transkript:

NoSQL für Anwendungen Hochschule Mannheim Fakultät für Informatik Cluster Grid Computing Seminar SS 2012 Lemmy Tauer (729400) lemmy.coldlemonade.tauer@gmail.com

NoSQL CAP / ACID / Kompromisse Key-Value Kandidaten Key-Value als Zwischenspeicher Memcached / MemcachedDB Key-Value Datenstruktur Key-Value Datenspeicher Redis Redis Client Key-Value mit Big Data Cassandra Datenmodel Cassandra Query Language Kommandozeilen Schnittstelle Resumee Quellen

Verteilte Speicherung Write-Once Read-Many Kein (hierarchisches) Datenschema Weniger komplexe Relationen Weniger dynamische Abfragen Verzögerte Globale Konsistenz, schnelle Verfügbarkeit Keine ACID Semantik (Transaktionen) BASE Semantik (Basically Available Soft-state Eventually-consistent) Flexible Konsistenzbedingung Low-Level Datenmodelierung Aufwand und Geschwindigkeit Verzicht auf Overhead der SQL Architektur Hochskalierfähiger Verarbeitung von Big Data (MapReduce) Bei zunehmend komplexer Datenhaltung

Eric Brewer 2000

Annahme Persistente Datenspeicherung Horizontale Skalierung Extensible Datenstruktur Keine beliebigen dynamischen Abfragen Hohe Lese-/Schreibleistung Arrays, Listen, Hashmaps, BLOBs Atomare Operationen Erstellen, Löschen, Zugriff per Schlüssel Konstante Komplexität von O(1) für Zugriffe Viele Anwendungen (Desktop und Web)

Nachteile (-) Integrität Fremdschlüssel / Redundanz Denormalisierung Keine dyn. strukturierte Abfrage JOINS Leichtgewichtig (aufwendig) Vorteile (+) Partitionierung Laufzeitflexibilität (schemalos) Leichtgewichtig (schnell) Skalierung (horizontal) Hashmaps & Assoziative Arrays Einfügen, Löschen, Zugriff per Schlüssel

Key-Value Objekt Zwischenspeicher (Cache) Memcached Wikipedia, Twitter, Wordpress, Flickr,... Persistenter In-Memory Key-Value Datenspeicher Redis MemcachedDB Verteilte, hochverfügbare Key-Value Verwaltungsumgebung Cassandra

Memcached In-Memory, keine Persistenz Schneller Key-Value Objekt Zwischenspeicher (Cache) LRU (Least Recent Used) Prinzip MemcacheDB (2008) Memcached Client-APIs / Protokoll BerkleyDB als persistentes Speichersystem Transaktionen und Replikation Hohe Leistung für Key-Value Objekte Perl, C, Python, Java,...

function get_foo(foo_id){ foo = memcached_get("foo:". foo_id); if defined foo return foo; foo = fetch_foo_from_database(foo_id); memcached_set("foo:". foo_id, foo); end return foo; Zwischenspeichern von DB Abfragen Häufig gestellte Benutzeranfragen Asynchrone Zugriffe / Abfangen von Serverlatenzen

<?php $memcache = new Memcache; $memcache->connect('localhost', 11211) or die ("Could not connect"); $version = $memcache->getversion(); echo "Server's version: ".$version."<br/>\n"; $tmp_object = new stdclass; $tmp_object->str_attr = 'test'; $tmp_object->int_attr = 123; $memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server"); echo "Store data in the cache (data will expire in 10 seconds)<br/>\n"; $get_result = $memcache->get('key'); echo "Data from the cache:<br/>\n";?>

Assoziatives Array, Dictionary, Key-Value Map Implementierung via Hashmaps, Binärbäume oder Arrays Feld von Key-Value Paaren Indizierung der Werte über Schlüssel Schlüssel Datentyp i.d.r. String Wert Datentypen String, List, Hashmap, BLOB... Python, Perl, JavaScript, Ruby, Lua, PHP,... C/C++,.NET, Java, Groovy, Smalltalk, Lisp, Objective-C

Erstellen, Lesen, Schreiben, Löschen CRUD (Create, Read, Update, Delete) Atomare serverseitige Operationen im Datenspeicher ermöglichen verteilte Zugriffe Redis, MemcachedDB, Cassandra Intelligenter Client Intelligenter Server Hohe Effizienz u.a. bei kleinen Datenvolumen Mehr Entwicklungsaufwand CAP / Datenpersistenz Verzögerte Konsistenz (Eventual Consistency) Asynchrone Persistenz

Schneller In-Memory Key-Value Datenspeicher Salvatore Sanfilippo, 2009 VMWare, 2012 (gekauft) Asynchrone Persistenz und Journaling Master/Slave Replikation (Redundanz, Skalierung) Lists, Sets, Sorted Sets, Hashmaps Strings und Binärdaten (BLOB) Atomare Operationen Union, Intersect, Difference, Create, Delete, Write,... C, C++, C#, Erlang, Go, Java, Lua, Objective-C, Perl, PHP, Python, Ruby, Scala, Smalltalk,...

Kommandozeilen Schnittstelle redis> SET erster_schluessel "Hello World" OK redis> GET erster_schluessel "Hello World" redis> Java Client API JRedis jredis = new JRedisClient(); // Default-Werte fuer Host // (localhost) und Port (6379) jredis.set("erster_schluessel", "Hello World"); System.out.println(jredis.get("erster_schluessel"));

Cassandra Facebook, 2008 Verteiltes, strukturiertes Key-Value Datenverwaltungsumgebung Amazon Dynamo und Google BigTable Hochverfügbarkeit/ Skalierbarkeit Parallelität auf sog. Commodity Hardware Anpassbare Konsistenzstrenge (Tunable/Eventual) Consistency Fehlertoleranz und Geschwindigkeit Master/Master Replikation BASE, nicht ACID Semantik C++,.NET, Ruby, Perl, PHP, Python, Java,...

Anpassbare Konsistenz (CAP / BASE) Strikte und verzögerte Konsistenz, Quorum Anforderungen prüfen Replikation zwischen Servern und Clustern Gossip-Protokoll Cassandra Query Language MapReduce via Hadoop Infrastruktur Optional schematisches Datenmodel Flexible Strukturierung der Daten Ausnutzung möglicher Datenlokalität

Schlüssel verweist auf beliebig viele Spalten (Columns) mit dazugehörigen Werten Spalten werden in Spaltenfamilien (Column- Families) geordnet

Clustering Erhalten der Reihenfolge : OrderPreservingPartitioner Zufällige Verteilung : RandomPartitioner

SQL artige Syntax Keine JOINs und Bereichsabfragen Partitionierung beachten Create, Alter, Drop Table, Create Index, Select, Delete, Update, Truncate, Use,. SELECT * FROM MyColumnFamily; UPDATE MyColumnFamily SET 'SomeColumn' = 'SomeValue WHERE KEY = B70DE1D0-9908-4AE3-BE34-5573E5B09F14; Speicherparameter und Metadaten Replikationsstrategien Kompression,...

Schlüsselraum (Keyspace) anlegen CREATE KEYSPACE demo with placement_strategy = 'org.apache.cassandra.locator.simplestrategy' AND strategy_options = [{replication_factor:1}]; Spaltenfamilie (Column-Family) Users anlegen USE demo; CREATE COLUMN FAMILY users WITH comparator = UTF8Type AND key_validation_class = UTF8Type AND column_metadata = [ {column_name: full_name, validation_class: UTF8Type} {column_name: email, validation_class: UTF8Type} {column_name: state, validation_class: UTF8Type} {column_name: gender, validation_class: UTF8Type} {column_name: birth_year, validation_class: LongType} ];

Dynamische Spaltenfamilie erstellen CREATE COLUMN FAMILY blog_entry WITH comparator = TimeUUIDType AND key_validation_class = UTF8Type AND default_validation_class = UTF8Type; Eintrag in der Spaltenfamilie Users speichern SET users['yomama']['full_name']='cathy Smith'; SET users['yomama']['state']='ca'; SET users['yomama']['gender']='f ; SET users['yomama']['birth_year']='1969'; Speichern in Spaltenfamilie Blog_entry SET blog_entry['yomama'][timeuuid()] = 'I love my new shoes!';

Format wählen ASSUME users KEYS AS ascii; ASSUME users COMPARATOR AS ascii; ASSUME users VALIDATOR AS ascii; Time To Live SET users['bobbyjo'] [utf8('coupon_code')] = utf8('save20') WITH ttl=864000; Sekundäre Indizierung UPDATE COLUMN FAMILY users WITH comparator = UTF8Type AND column_metadata = [{column_name: birth_year, validation_class: LongType, index_type: KEYS}]; GET users WHERE birth_date = 1969;

Anforderungen der Anwendung prüfen Datenvolumen / Big Data Statisches/ Dynamisches Datenschema Verteilung, Sharding, Clustering Zugriffsgeschwindigkeit / Zugriffsmuster Prototyping Strikte Konsistenz notwendig? Stapelverarbeitung (Map Reduce)

Key-Value Datenspeicher http://www.slideshare.net/marc.seeger/keyvalue-stores-a-practical-overview http://blogupstairs.com/redisnosql-database-%e2%80%93-open-source-advancedkey-value-store/ http://dbs.uni-leipzig.de/file/seminar_0910_bin_brekle.pdf http://www.heise.de/developer/artikel/nosql-key-value-datenbank-redis-im- Ueberblick-1233843.html Cassandra http://techpointers2020.blogspot.de/2011/07/casandra.html http://www.datastax.com/docs/0.8/dml/using_cli NoSQL http://it-republik.de/jaxenter/artikel/graphendatenbanken-nosql-und-neo4j- 2906.html http://www.michaelnygard.com/blog/2007/11/architecting_for_latency.html http://decrypt.ysance.com/2010/12/sql-and-nosql/ Stand 06/2012

Vielen Dank für Eure Aufmerksamkeit! Gibt es Fragen?

http://highlyscalable.wordpress.com/2012/03/ 01/nosql-data-modeling-techniques/