80
Not only SQL CouchDB und andere NoSQL-Datenbanken Dr. Kerstin Puschke Vortrag an der HAW Hamburg 3. Juni 2010 K. Puschke (Vortrag HAW Hamburg) NoSQL 3. Juni 2010 1 / 79

Not only SQL - CouchDB und andere NoSQL-Datenbanken

Embed Size (px)

DESCRIPTION

Gastvortrag an der HAW Hamburg

Citation preview

Page 1: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Not only SQLCouchDB und andere NoSQL-Datenbanken

Dr Kerstin Puschke

Vortrag an der HAW Hamburg

3 Juni 2010

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 1 79

Lizenz

LizenzDieser Text steht unter einer Creative CommonsAttribution 30 Germany Lizenz siehehttpcreativecommonsorglicensesby30de

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 2 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 3 79

Uumlbersicht

1 EinfuumlhrungRelationale DatenbanksystemeWeitere DatenbanksystemeNoSQL

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 4 79

Relationale Datenbanksysteme

in der TheorieCodd (1970) [3]

Coddrsquos 12 Regeln (1985) [4 5]

Vollstaumlndigkeit im Sinne der relationalen Algebrain der Praxis und im Kontext des Vortrags

zeilenbasierte Speicherung in TabellenSQL als SprachezB MySQL Postgres Oracle

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 5 79

Weitere Datenbanksysteme

Objektdatenbanken (db4o)XMLSpeicherung als Schluumlssel-Wert-Paare (BerkeleyDB)spaltenorientierte Systeme (Sybase IQ)dokumentenorientierte Systeme (Lotus Notes)kaum Verbreitung im Vergleich zu relationalen Systemenfruumlhe Formen von NoSQL

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 6 79

NoSQLBegriffsklaumlrung

2009 als Sammelbegriff fuumlr bereits laumlnger existierende SystemeetabliertNot only SQLkeine eindeutige Definitionnicht-relationale Datenspeicher

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 7 79

NoSQLWas NoSQL manchmal (nicht) ist

Verteiltes_ArbeitenSkalierbarkeit Schemafreiheit

Geschwindigkeit Open_Source Open_StandardsGroszlige_Datenmengen

Aufgabe_der_ACID-Prinzipien Einfache_BenutzungFehlertoleranz Concurrency Durchsatz

Zuverlaumlssigkeit

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 8 79

NoSQLBegriffsklaumlrung

Ankuumlndigung nosql(eu) conference April 2010 [11]

era of ldquoone-size-fits-all databaserdquo seems to be overInstead of squeezing all your data into tables we believe thefuture is about choosing a data store that best matches yourdata set and operational requirements Itrsquos a future ofheterogeneous data backends polyglot persistence andchoosing Not Only SQL but sometimes also a documentdatabase a key-value store or a graph database

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 9 79

NoSQL-Systeme im Einsatz

CouchDB (BBC Ubuntu One)BigTable (GoogleMaps GoogleReader YouTube )Dynamo (Amazon Webservices Amazon)Cassandra (Twitter Facebook )Project Voldemort (linkedin)redis (github The Guardian)MongoDB (sourceforge github New York Times)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 10 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzenWeb vs RDBMSVerteilte Systeme

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 11 79

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 2: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Lizenz

LizenzDieser Text steht unter einer Creative CommonsAttribution 30 Germany Lizenz siehehttpcreativecommonsorglicensesby30de

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 2 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 3 79

Uumlbersicht

1 EinfuumlhrungRelationale DatenbanksystemeWeitere DatenbanksystemeNoSQL

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 4 79

Relationale Datenbanksysteme

in der TheorieCodd (1970) [3]

Coddrsquos 12 Regeln (1985) [4 5]

Vollstaumlndigkeit im Sinne der relationalen Algebrain der Praxis und im Kontext des Vortrags

zeilenbasierte Speicherung in TabellenSQL als SprachezB MySQL Postgres Oracle

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 5 79

Weitere Datenbanksysteme

Objektdatenbanken (db4o)XMLSpeicherung als Schluumlssel-Wert-Paare (BerkeleyDB)spaltenorientierte Systeme (Sybase IQ)dokumentenorientierte Systeme (Lotus Notes)kaum Verbreitung im Vergleich zu relationalen Systemenfruumlhe Formen von NoSQL

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 6 79

NoSQLBegriffsklaumlrung

2009 als Sammelbegriff fuumlr bereits laumlnger existierende SystemeetabliertNot only SQLkeine eindeutige Definitionnicht-relationale Datenspeicher

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 7 79

NoSQLWas NoSQL manchmal (nicht) ist

Verteiltes_ArbeitenSkalierbarkeit Schemafreiheit

Geschwindigkeit Open_Source Open_StandardsGroszlige_Datenmengen

Aufgabe_der_ACID-Prinzipien Einfache_BenutzungFehlertoleranz Concurrency Durchsatz

Zuverlaumlssigkeit

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 8 79

NoSQLBegriffsklaumlrung

Ankuumlndigung nosql(eu) conference April 2010 [11]

era of ldquoone-size-fits-all databaserdquo seems to be overInstead of squeezing all your data into tables we believe thefuture is about choosing a data store that best matches yourdata set and operational requirements Itrsquos a future ofheterogeneous data backends polyglot persistence andchoosing Not Only SQL but sometimes also a documentdatabase a key-value store or a graph database

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 9 79

NoSQL-Systeme im Einsatz

CouchDB (BBC Ubuntu One)BigTable (GoogleMaps GoogleReader YouTube )Dynamo (Amazon Webservices Amazon)Cassandra (Twitter Facebook )Project Voldemort (linkedin)redis (github The Guardian)MongoDB (sourceforge github New York Times)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 10 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzenWeb vs RDBMSVerteilte Systeme

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 11 79

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 3: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 3 79

Uumlbersicht

1 EinfuumlhrungRelationale DatenbanksystemeWeitere DatenbanksystemeNoSQL

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 4 79

Relationale Datenbanksysteme

in der TheorieCodd (1970) [3]

Coddrsquos 12 Regeln (1985) [4 5]

Vollstaumlndigkeit im Sinne der relationalen Algebrain der Praxis und im Kontext des Vortrags

zeilenbasierte Speicherung in TabellenSQL als SprachezB MySQL Postgres Oracle

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 5 79

Weitere Datenbanksysteme

Objektdatenbanken (db4o)XMLSpeicherung als Schluumlssel-Wert-Paare (BerkeleyDB)spaltenorientierte Systeme (Sybase IQ)dokumentenorientierte Systeme (Lotus Notes)kaum Verbreitung im Vergleich zu relationalen Systemenfruumlhe Formen von NoSQL

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 6 79

NoSQLBegriffsklaumlrung

2009 als Sammelbegriff fuumlr bereits laumlnger existierende SystemeetabliertNot only SQLkeine eindeutige Definitionnicht-relationale Datenspeicher

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 7 79

NoSQLWas NoSQL manchmal (nicht) ist

Verteiltes_ArbeitenSkalierbarkeit Schemafreiheit

Geschwindigkeit Open_Source Open_StandardsGroszlige_Datenmengen

Aufgabe_der_ACID-Prinzipien Einfache_BenutzungFehlertoleranz Concurrency Durchsatz

Zuverlaumlssigkeit

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 8 79

NoSQLBegriffsklaumlrung

Ankuumlndigung nosql(eu) conference April 2010 [11]

era of ldquoone-size-fits-all databaserdquo seems to be overInstead of squeezing all your data into tables we believe thefuture is about choosing a data store that best matches yourdata set and operational requirements Itrsquos a future ofheterogeneous data backends polyglot persistence andchoosing Not Only SQL but sometimes also a documentdatabase a key-value store or a graph database

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 9 79

NoSQL-Systeme im Einsatz

CouchDB (BBC Ubuntu One)BigTable (GoogleMaps GoogleReader YouTube )Dynamo (Amazon Webservices Amazon)Cassandra (Twitter Facebook )Project Voldemort (linkedin)redis (github The Guardian)MongoDB (sourceforge github New York Times)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 10 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzenWeb vs RDBMSVerteilte Systeme

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 11 79

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 4: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Uumlbersicht

1 EinfuumlhrungRelationale DatenbanksystemeWeitere DatenbanksystemeNoSQL

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 4 79

Relationale Datenbanksysteme

in der TheorieCodd (1970) [3]

Coddrsquos 12 Regeln (1985) [4 5]

Vollstaumlndigkeit im Sinne der relationalen Algebrain der Praxis und im Kontext des Vortrags

zeilenbasierte Speicherung in TabellenSQL als SprachezB MySQL Postgres Oracle

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 5 79

Weitere Datenbanksysteme

Objektdatenbanken (db4o)XMLSpeicherung als Schluumlssel-Wert-Paare (BerkeleyDB)spaltenorientierte Systeme (Sybase IQ)dokumentenorientierte Systeme (Lotus Notes)kaum Verbreitung im Vergleich zu relationalen Systemenfruumlhe Formen von NoSQL

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 6 79

NoSQLBegriffsklaumlrung

2009 als Sammelbegriff fuumlr bereits laumlnger existierende SystemeetabliertNot only SQLkeine eindeutige Definitionnicht-relationale Datenspeicher

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 7 79

NoSQLWas NoSQL manchmal (nicht) ist

Verteiltes_ArbeitenSkalierbarkeit Schemafreiheit

Geschwindigkeit Open_Source Open_StandardsGroszlige_Datenmengen

Aufgabe_der_ACID-Prinzipien Einfache_BenutzungFehlertoleranz Concurrency Durchsatz

Zuverlaumlssigkeit

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 8 79

NoSQLBegriffsklaumlrung

Ankuumlndigung nosql(eu) conference April 2010 [11]

era of ldquoone-size-fits-all databaserdquo seems to be overInstead of squeezing all your data into tables we believe thefuture is about choosing a data store that best matches yourdata set and operational requirements Itrsquos a future ofheterogeneous data backends polyglot persistence andchoosing Not Only SQL but sometimes also a documentdatabase a key-value store or a graph database

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 9 79

NoSQL-Systeme im Einsatz

CouchDB (BBC Ubuntu One)BigTable (GoogleMaps GoogleReader YouTube )Dynamo (Amazon Webservices Amazon)Cassandra (Twitter Facebook )Project Voldemort (linkedin)redis (github The Guardian)MongoDB (sourceforge github New York Times)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 10 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzenWeb vs RDBMSVerteilte Systeme

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 11 79

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 5: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Relationale Datenbanksysteme

in der TheorieCodd (1970) [3]

Coddrsquos 12 Regeln (1985) [4 5]

Vollstaumlndigkeit im Sinne der relationalen Algebrain der Praxis und im Kontext des Vortrags

zeilenbasierte Speicherung in TabellenSQL als SprachezB MySQL Postgres Oracle

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 5 79

Weitere Datenbanksysteme

Objektdatenbanken (db4o)XMLSpeicherung als Schluumlssel-Wert-Paare (BerkeleyDB)spaltenorientierte Systeme (Sybase IQ)dokumentenorientierte Systeme (Lotus Notes)kaum Verbreitung im Vergleich zu relationalen Systemenfruumlhe Formen von NoSQL

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 6 79

NoSQLBegriffsklaumlrung

2009 als Sammelbegriff fuumlr bereits laumlnger existierende SystemeetabliertNot only SQLkeine eindeutige Definitionnicht-relationale Datenspeicher

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 7 79

NoSQLWas NoSQL manchmal (nicht) ist

Verteiltes_ArbeitenSkalierbarkeit Schemafreiheit

Geschwindigkeit Open_Source Open_StandardsGroszlige_Datenmengen

Aufgabe_der_ACID-Prinzipien Einfache_BenutzungFehlertoleranz Concurrency Durchsatz

Zuverlaumlssigkeit

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 8 79

NoSQLBegriffsklaumlrung

Ankuumlndigung nosql(eu) conference April 2010 [11]

era of ldquoone-size-fits-all databaserdquo seems to be overInstead of squeezing all your data into tables we believe thefuture is about choosing a data store that best matches yourdata set and operational requirements Itrsquos a future ofheterogeneous data backends polyglot persistence andchoosing Not Only SQL but sometimes also a documentdatabase a key-value store or a graph database

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 9 79

NoSQL-Systeme im Einsatz

CouchDB (BBC Ubuntu One)BigTable (GoogleMaps GoogleReader YouTube )Dynamo (Amazon Webservices Amazon)Cassandra (Twitter Facebook )Project Voldemort (linkedin)redis (github The Guardian)MongoDB (sourceforge github New York Times)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 10 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzenWeb vs RDBMSVerteilte Systeme

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 11 79

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 6: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Weitere Datenbanksysteme

Objektdatenbanken (db4o)XMLSpeicherung als Schluumlssel-Wert-Paare (BerkeleyDB)spaltenorientierte Systeme (Sybase IQ)dokumentenorientierte Systeme (Lotus Notes)kaum Verbreitung im Vergleich zu relationalen Systemenfruumlhe Formen von NoSQL

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 6 79

NoSQLBegriffsklaumlrung

2009 als Sammelbegriff fuumlr bereits laumlnger existierende SystemeetabliertNot only SQLkeine eindeutige Definitionnicht-relationale Datenspeicher

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 7 79

NoSQLWas NoSQL manchmal (nicht) ist

Verteiltes_ArbeitenSkalierbarkeit Schemafreiheit

Geschwindigkeit Open_Source Open_StandardsGroszlige_Datenmengen

Aufgabe_der_ACID-Prinzipien Einfache_BenutzungFehlertoleranz Concurrency Durchsatz

Zuverlaumlssigkeit

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 8 79

NoSQLBegriffsklaumlrung

Ankuumlndigung nosql(eu) conference April 2010 [11]

era of ldquoone-size-fits-all databaserdquo seems to be overInstead of squeezing all your data into tables we believe thefuture is about choosing a data store that best matches yourdata set and operational requirements Itrsquos a future ofheterogeneous data backends polyglot persistence andchoosing Not Only SQL but sometimes also a documentdatabase a key-value store or a graph database

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 9 79

NoSQL-Systeme im Einsatz

CouchDB (BBC Ubuntu One)BigTable (GoogleMaps GoogleReader YouTube )Dynamo (Amazon Webservices Amazon)Cassandra (Twitter Facebook )Project Voldemort (linkedin)redis (github The Guardian)MongoDB (sourceforge github New York Times)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 10 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzenWeb vs RDBMSVerteilte Systeme

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 11 79

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 7: Not only SQL - CouchDB und andere NoSQL-Datenbanken

NoSQLBegriffsklaumlrung

2009 als Sammelbegriff fuumlr bereits laumlnger existierende SystemeetabliertNot only SQLkeine eindeutige Definitionnicht-relationale Datenspeicher

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 7 79

NoSQLWas NoSQL manchmal (nicht) ist

Verteiltes_ArbeitenSkalierbarkeit Schemafreiheit

Geschwindigkeit Open_Source Open_StandardsGroszlige_Datenmengen

Aufgabe_der_ACID-Prinzipien Einfache_BenutzungFehlertoleranz Concurrency Durchsatz

Zuverlaumlssigkeit

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 8 79

NoSQLBegriffsklaumlrung

Ankuumlndigung nosql(eu) conference April 2010 [11]

era of ldquoone-size-fits-all databaserdquo seems to be overInstead of squeezing all your data into tables we believe thefuture is about choosing a data store that best matches yourdata set and operational requirements Itrsquos a future ofheterogeneous data backends polyglot persistence andchoosing Not Only SQL but sometimes also a documentdatabase a key-value store or a graph database

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 9 79

NoSQL-Systeme im Einsatz

CouchDB (BBC Ubuntu One)BigTable (GoogleMaps GoogleReader YouTube )Dynamo (Amazon Webservices Amazon)Cassandra (Twitter Facebook )Project Voldemort (linkedin)redis (github The Guardian)MongoDB (sourceforge github New York Times)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 10 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzenWeb vs RDBMSVerteilte Systeme

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 11 79

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 8: Not only SQL - CouchDB und andere NoSQL-Datenbanken

NoSQLWas NoSQL manchmal (nicht) ist

Verteiltes_ArbeitenSkalierbarkeit Schemafreiheit

Geschwindigkeit Open_Source Open_StandardsGroszlige_Datenmengen

Aufgabe_der_ACID-Prinzipien Einfache_BenutzungFehlertoleranz Concurrency Durchsatz

Zuverlaumlssigkeit

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 8 79

NoSQLBegriffsklaumlrung

Ankuumlndigung nosql(eu) conference April 2010 [11]

era of ldquoone-size-fits-all databaserdquo seems to be overInstead of squeezing all your data into tables we believe thefuture is about choosing a data store that best matches yourdata set and operational requirements Itrsquos a future ofheterogeneous data backends polyglot persistence andchoosing Not Only SQL but sometimes also a documentdatabase a key-value store or a graph database

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 9 79

NoSQL-Systeme im Einsatz

CouchDB (BBC Ubuntu One)BigTable (GoogleMaps GoogleReader YouTube )Dynamo (Amazon Webservices Amazon)Cassandra (Twitter Facebook )Project Voldemort (linkedin)redis (github The Guardian)MongoDB (sourceforge github New York Times)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 10 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzenWeb vs RDBMSVerteilte Systeme

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 11 79

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 9: Not only SQL - CouchDB und andere NoSQL-Datenbanken

NoSQLBegriffsklaumlrung

Ankuumlndigung nosql(eu) conference April 2010 [11]

era of ldquoone-size-fits-all databaserdquo seems to be overInstead of squeezing all your data into tables we believe thefuture is about choosing a data store that best matches yourdata set and operational requirements Itrsquos a future ofheterogeneous data backends polyglot persistence andchoosing Not Only SQL but sometimes also a documentdatabase a key-value store or a graph database

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 9 79

NoSQL-Systeme im Einsatz

CouchDB (BBC Ubuntu One)BigTable (GoogleMaps GoogleReader YouTube )Dynamo (Amazon Webservices Amazon)Cassandra (Twitter Facebook )Project Voldemort (linkedin)redis (github The Guardian)MongoDB (sourceforge github New York Times)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 10 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzenWeb vs RDBMSVerteilte Systeme

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 11 79

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 10: Not only SQL - CouchDB und andere NoSQL-Datenbanken

NoSQL-Systeme im Einsatz

CouchDB (BBC Ubuntu One)BigTable (GoogleMaps GoogleReader YouTube )Dynamo (Amazon Webservices Amazon)Cassandra (Twitter Facebook )Project Voldemort (linkedin)redis (github The Guardian)MongoDB (sourceforge github New York Times)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 10 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzenWeb vs RDBMSVerteilte Systeme

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 11 79

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 11: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzenWeb vs RDBMSVerteilte Systeme

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 11 79

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 12: Not only SQL - CouchDB und andere NoSQL-Datenbanken

(Un)strukturierte DatenWeb vs RDBMS

RDBMSDatenbankschema entscheidend

aufwaumlndig zu entwerfen Normalisierung nachtraumlglich schwierig zu aumlndern

stark strukturiert

Webanwendungenuser generated content

unstrukturierte Daten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 12 79

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 13: Not only SQL - CouchDB und andere NoSQL-Datenbanken

AbfragenWeb vs RDBMS

RDBMSdynamische Abfragen (ad hoc reporting)beliebige Abfragen uumlber alle Daten direkt in SQL

Webanwendungenwiederkehrende Abfragen nur Parameter aumlndern sich

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 13 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 14: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengenfruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 15: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Verteiltes Arbeiten

Skalierbarkeitgroszlige Datenmengen

The largest BigTable instance manages about 6 petabytes of dataspread across thousands of machinesJeff Dean Google IO conference Mai 2008 (Shankland [14])

fruumlher nur Groszligrechner Anfrageoptimierung statt Rechenleistungheute preiswerte Hardware ergaumlnzen (auch via cloud)

HochverfuumlgbarkeitRDBMS Verteiltes Arbeiten nachtraumlglich rudimentaumlr zugefuumlgt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 14 79

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 16: Not only SQL - CouchDB und andere NoSQL-Datenbanken

CAP TheoremConsistency Availability Partition Tolerance

TheoremConsistencyDer Client glaubt eine Menge von Operationen sei auf einenSchlag passiert Alle Clients sehen dieselben DatenAvailabilityJede Operation endet mit einer bestimmungsgemaumlszligen AntwortAlle Clients koumlnnen auf eine Version der Daten zugreifenPartition ToleranceOperationen werden zu Ende gefuumlhrt auch wenn die Datenbankpartitioniert ist

Nur zwei der drei Eigenschaften sind gleichzeitig moumlglichsiehe Brewer [2] und Lynch amp Gilbert [10]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 15 79

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 17: Not only SQL - CouchDB und andere NoSQL-Datenbanken

CAP TheoremAnwendung

Availability amp Consistency Paxos BigTable Network Partitioning oft unvermeidlichtrade off Consistency vs AvailabilityConsistency amp Partition Tolerance viele RDBMS

ACID (atomicity consistency isolation durability)siehe Gray [7] und Haerder amp Reuter [8]

Availability amp Partition Tolerance CouchDB MongoDBCassandra Dynamo

BASE (basically available soft-state eventual consistency)siehe Pritchett [13]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 16 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 18: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIsHTTPRESTMapReduce

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 PraxisbeispielK Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 17 79

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 19: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Protokoll und API

viele NoSQL-Systeme nutzenvorhandene Programmiersprachen (neo4j )HTTPREST (CouchDB MongoDB )

verbreitet MapReduce-Techniken (Parallelisierung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 18 79

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 20: Not only SQL - CouchDB und andere NoSQL-Datenbanken

RESTful HTTP API

HTTP ProtokollBrowser curl sind DB-ClientsClients in beliebiger Sprache leicht zu programmierenvorhandene Webtechnologien nutzbarLoad Balancer Proxy HTTPS via SSL-faumlhigen Proxy Vor- und Nachteile von HTTP

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 19 79

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 21: Not only SQL - CouchDB und andere NoSQL-Datenbanken

RESTful HTTP API

REpresentational State Transfer APIArchitekturprinzip fuumlr Kommunikation zwischen heterogenenAnwendungengeeignet fuumlr verteilte SystemeStateless Communication

jeder Request in sich geschlossenAnwendungsinformationen nur im Clientkeine serverseitigen Sitzungen oauml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 20 79

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 22: Not only SQL - CouchDB und andere NoSQL-Datenbanken

CouchDBRESTHTTP

Willkommensnachricht des Servershttplocalhost5984

Alle Datenbanken anzeigenhttplocalhost5984_all_dbs

Informationen uumlber die Datenbank kontaktdatenhttplocalhost5984kontaktdaten

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 21 79

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 23: Not only SQL - CouchDB und andere NoSQL-Datenbanken

MapReduce

map und reduce Funktionen Konzept aus der funktionalenProgrammierungverarbeitet groszlige Datenmengen parallelMapReduce framework zur verteilten Verarbeitung groszligerDatenmengen (Google)freie Implementierung Hadoop

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 22 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 24: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 DatenmodelleSpaltenorientierungObjektorientierungGraphenSchluumlssel-Wert-PaareDokumentenorientierung

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 23 79

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 25: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Relationales Modell

striktes SchemaTabellen und Spalten statischzeilenorientierte Speicherungrsquoechtersquo Beziehungen zwischen Datenforeign key constraints joins

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 24 79

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 26: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Spaltenorientierung

erste spaltenorientierte Datenbanken in den 1970ernCassandra BigTable spaltenorientierte Speicherungmehr Performanz fuumlr bestimmte AbfragenzB Aggregieren innerhalb einer Spalteflexibleres SchemaSpalten dynamischkeine rsquoechtenrsquo Beziehungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 25 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 27: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Cassandrarsquos DatenmodellVereinfachte Darstellung

keyspaceentspricht der Anwendung Beispiel rsquoBlogrsquo

column familyentspricht einer DateiBeispiel rsquoPostsrsquo oder rsquoUsersrsquobeliebig viele Eintraumlge (key + columns)

keyidentifiziert einen Eintrag in der column familywird bei Abfragen benutztkeys sind lokalgleichnamige keys verschiedener column families sind verschiedenkeine rsquoechtenrsquo Beziehungen

columntupel (name value timestamp)Beispiel nameusername valuefoo timestamp12345

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 26 79

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 28: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Cassandrarsquos DatenmodellVereinfachte Darstellung

verschiedene keys koumlnnen verschiedene columns habenkein striktes Schema

BeispielAbfrage (Users 42)

username fooemail fooexamplecomscreen_name FOOOOOAbfrage (Users 23)

username baradmin yes

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 27 79

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 29: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Objektorientierung

Persistenzschicht fuumlr Objektorientierte ProgrammierungAbfragen in objektorientierter ProgrammierspracheOO-Programmiersprache (Java C++ ) oder DBMS-eigeneSprachedb4o JADE Databeans

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 28 79

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 30: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Graphen

Graphen im Sinne der MathematikKnoten und Kantenmodellieren zB Netzwerk Leitungssystem Spezialfall BaumzB Produktkategorien (Eltern-Kind-Beziehung)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 29 79

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 31: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Graphendatenbanken

InfoGrid neo4j Daten als Graphen

Knoteneigenstaumlndige Objekte wie Kunde Bestellung Kanten sind Beziehungen zwischen Knoten

schematisiert oder schemafreiKanten sind ldquofirst class objectsrdquohaumlufige Operation Traversierunggut geeignet fuumlr komplexe BeziehungsgeflechtezB social network

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 30 79

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 32: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Schluumlssel-Wert-Paare

Riak Tokyo Cabinet Schluumlssel-Wert-PaareWert muss kein String sein (Objekte moumlglich)Abfrage per Schluumlsselschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 31 79

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 33: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Dokumentenorientierung

CouchDB MongoDB Riak XML-Datenbanken Dokument weitere Abstraktionsebene oberhalb vonSchluumlssel-Wert-Paarenfuumlr sich genommen sinnvolle Informationseinheitmeist Entsprechung im Real Life (Rechnung Visitenkarte )uumlblicherweise kein leeren Felderschemafreikeine rsquoechtenrsquo Relationen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 32 79

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 34: Not only SQL - CouchDB und andere NoSQL-Datenbanken

CouchDBrsquos Datenmodell

Format JavaScript Object Notation (JSON)Bestandteil von JavaScriptwird zT direkt vom Browser verstandenwenig Datentypendiese werden von nahezu allen Sprachen verstandenSchluumlssel-Wert-Paareobligatorische Schluumlssel

_id zur eindeutigen Identifikation des Dokumentes (UUID)_rev zur Versionierung des Dokumentes

Dokumente koumlnnen Attachments haben

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 33 79

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 35: Not only SQL - CouchDB und andere NoSQL-Datenbanken

CouchDB DokumentJSON

Dokument mit _id 69a aus Datenbank kontaktdatenhttplocalhost5984kontaktdaten69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 34 79

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 36: Not only SQL - CouchDB und andere NoSQL-Datenbanken

CouchDB DokumentJSON

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 35 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 37: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDBImplementierungUpdates and ConcurrencyAbfragenDesign DocumentsAnwendungen

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 36 79

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 38: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Was ist CouchDB

Cluster Of Unreliable Commodity Hardware DataBaseDatenbankcluster auf unzuverlaumlssiger StandardhardwareDatenbanksystem (nicht nur) fuumlr Webanwendungenoffene WebstandardsRobuste Replikationschemafreigeeignet fuumlr unstrukturierte DatenPhilosophie entspanntes Arbeitenkeine Entscheidungen die nicht zu revidieren sind

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 37 79

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 39: Not only SQL - CouchDB und andere NoSQL-Datenbanken

ImplementierungUumlberblick

HTTPREST (Webserver enthalten) bzgl REST siehe auch Tilkov [16]

Erlangfunktional fehlertolerant concurrency optimiertViewserver in JavaScript (Indizes erstellen)alternativ via Plugins auch PHP Ruby Python Perl CommonLisp Erlang dokumentenbasierte Speicherung (JSON)Datenbank und Indizes als B-Tree gespeicherteventual consistency (in verteilten Systemen)Storage Engine ACIDoptimistic locking Multi Version Concurrency Control

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 38 79

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 40: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Replikation

shared nothing clusterServer unabhaumlngig voneinanderinkrementellgefiltertN-Master Master-Slave P2P eigene Cloud Hot failover backup Lastverteilung extrem robustggf manuell Konflikte loumlsen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 39 79

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 41: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Updates

komplettes Dokument abholen veraumlndern zum Speichernzuruumlcksendenneue Version eines Dokumentes wird an DatenbankdateiangehaumlngtRobust was einmal auf Platte steht wird nicht mehr angefaszligtGeschwindigkeit neue Version kann angehaumlngt werden waumlhrendalte noch gelesen wird

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 40 79

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 42: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Multi Version Concurrency Control

optimistic lockingClient schickt veraumlndertes Dokument mit unveraumlnderterVersionsnummer _revServer pruumlft ob diese _rev identisch ist mit der aktuellgespeichertenwenn ja Dokument wird gespeichert (Server vergibt neue _rev)wenn nein Fehlermeldung

keine Versionskontrollees werden nicht alle Versionen aufbewahrt

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 41 79

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 43: Not only SQL - CouchDB und andere NoSQL-Datenbanken

View

(secondary) Index (Schluumlssel-Wert-Paare)Schluumlssel und Werte des Views sind Werte aus Dokumenten

Beispiel Erstellungsdaten als Schluumlssel Blogposttitel als Wertekoumlnnen auch arrays von Werten (aus Dokumenten) seinWerte (im View) koumlnnen auch aggregierte Werte (aus Dokumenten)sein

sortiert nach Schluumlsselneffizientes Abfragen nach bestimmten Schluumlsseln oder Bereichenvon SchluumlsselnrsquoTitel aller Blogposts von Mai 2009rsquozur Abfragezeit erzeugtaktualisiert durch MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 42 79

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 44: Not only SQL - CouchDB und andere NoSQL-Datenbanken

View - Beispiel

Dokument eines Blogpostshttplocalhost5984simple_blog17cf8a2934231a6cedc9e30fd30045a7

Viewhttplocalhost5984simple_blog_designby-date_viewblogposts-by-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designby-date_viewblogposts-by-date

Query Blogpost vom 12 April 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datekey=[2010412]

Query Blogposts aus Maumlrz 2010httplocalhost5984simple_blog_designby-date_viewblogposts-by-datestartkey=[201030]ampendkey=[2010331]

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 43 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 45: Not only SQL - CouchDB und andere NoSQL-Datenbanken

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts dargestellt inFuton

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 44 79

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 46: Not only SQL - CouchDB und andere NoSQL-Datenbanken

ViewBeispiel

View mit Schluumlssel Datum und Wert Titel des Blogposts Rohansicht

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 45 79

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 47: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Map ReduceView erzeugen

map verarbeitet Dokumenteerzeugt Schluumlssel-Wert-Paareoptionales reduce erzeugt aggregierte (Zwischen)Werteverarbeitet Ergebnisse von map oder rekursivZwischenergebnisse von reduce

group anwenden auf Objekte mit gleichem SchluumlsselBeispiel nicht alle Blogposts zaumlhlen sondern Blogposts pro TagMap-Reduce-Funktionen gespeichert in Dokumenten(Designdokumente)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 46 79

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 48: Not only SQL - CouchDB und andere NoSQL-Datenbanken

View - Beispiel

Designdokument (map-Funktion)httplocalhost5984simple_blog_designby-date

Designdokument (map und reduce)httplocalhost5984simple_blog_designper-date

Viewhttplocalhost5984simple_blog_designper-date_viewposts-per-datehttplocalhost5984_utilsdatabasehtmlsimple_blog_designper-date_viewposts-per-date

Gruppierthttplocalhost5984simple_blog_designper-date_viewposts-per-dategroup_level=1

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 47 79

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 49: Not only SQL - CouchDB und andere NoSQL-Datenbanken

DesigndokumentBeispiel

Designdokument mit map-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 48 79

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 50: Not only SQL - CouchDB und andere NoSQL-Datenbanken

DesigndokumentBeispiel

Designdokument mit map- und reduce-Funktionen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 49 79

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 51: Not only SQL - CouchDB und andere NoSQL-Datenbanken

ViewBeispiel

View ohne reduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 50 79

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 52: Not only SQL - CouchDB und andere NoSQL-Datenbanken

ViewBeispiel

View mit reduce

View mit reduce und group_level=2

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 51 79

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 53: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Design Documents

_id beginnt mit _designenthalten Anwendungscode sprich Funktionen

Map-Reduce-Funktionen fuumlr ViewsValidation Zulaumlssigkeit von Updatesinput pruumlfen nur eingeloggte user serverseitige Bearbeitung vor dem Speichern eines DokumentesShowList JSON in HTML XML konvertieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 52 79

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 54: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Beispiel Show Functions

Design Dokument (Show)httplocalhost5984kontaktdaten_designoutput

Dokument anzeigenhttplocalhost5984kontaktdaten_designoutput_showcard69a87107057813de1414e08a9f000912

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 53 79

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 55: Not only SQL - CouchDB und andere NoSQL-Datenbanken

DesigndokumentBeispiel

Designdokument mit show-Funktion

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 54 79

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 56: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Webanwendungen mit CouchDBKlassische Webanwendungen

Serverseitige Skripte lesen Daten aus CouchDBerzeugen daraus dynamisch HTMLWebserver liefert aus

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 55 79

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 57: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Webanwendungen mit CouchDBCouchApps

leben vollstaumlndig in der Datenbankkeine middlewareShowList-FunktionenAttachments (HTMLCSS Javascript) direkt ausliefernAusgelieferte Webseite greift per JavascriptHTTP auf CouchDBzuReplikation update fork backup von Anwendungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 56 79

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 58: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Dezentrale offline WebanwendungEin Usecase fuumlr CouchApps

Daten und Anwendung lokal beim useroffline verfuumlgbarlokale Datenhaltung = niedrige Latenzdezentral(gefilterte) Replikation mit anderen usern

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 57 79

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 59: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Desktop-Anwendungen

Beispiel Synchronisation von Anwendungsdatenbereits realisiert in UbuntuBookmarks Adreszligbuch in CouchDB speichernper Replikation mit anderen Rechnern synchronisieren

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 58 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 60: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 59 79

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 61: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Herausforderungen und Kritik

HTMLJS HTTP vorhandene Probleme bleiben bestehenkein ad hoc reportingBASE vs ACIDZuverlaumlssigkeit zB bei FinanztransaktionenZweifel an der GeschwindigkeitStonebraker et al [15] siehe auch Lai [9] und Pavlo et al [12]

CouchApps und Co Verteilte Identitaumltenserverseitiger Code noumltig fuumlr AuthentifizierungAutorisierungvertrauenswuumlrdiger Server noumltig

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 60 79

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 62: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Uumlbersicht

1 Einfuumlhrung

2 Why Not Only SQL - warum nicht immer SQL einsetzen

3 Protokolle amp APIs

4 Datenmodelle

5 CouchDB

6 Herausforderungen und Kritik

7 Praxisbeispiel

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 61 79

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 63: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Einfache BloganwendungER-Diagramm

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 62 79

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 64: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Einfache BloganwendungRelationes Schema

Tabelle Posts mit Spaltenpost_id Titel Text user Datum

Tabelle Kommentare mit Spaltencomment_id Text user Datum post_id

foreign key constraintKommentarepost_id Postspost_id

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 63 79

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 65: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Einfache BloganwendungER-Diagramm

Dokumentenorientierter Ansatz

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 64 79

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 66: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Einfache BloganwendungBlogpost ohne Kommentare

httplocalhost5984blog0cc50e8668ff421c1c09be1b71000077a

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 65 79

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 67: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Einfache BloganwendungBlogpost ohne Kommentare

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 66 79

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 68: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Einfache BloganwendungBlogpost mit Kommentare ldquoinlinerdquo

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 67 79

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 69: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Einfache BloganwendungKommentar als eigenes Dokument

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 68 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 70: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

map-Funktion

function(doc) if (doctype == post) emit([doc_id 0] doc)

else if (doctype == comment) emit([docpost_id 1] doc)

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 69 79

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 71: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Einfache BloganwendungKommentar als eigenes Dokument

View zur Ausgabe von Posts mit zugehoumlrigen Kommentarenzusammengesetzter Schluumlssel mit _id und 0 bzw 1 fuumlr Post bzwKommentar

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 70 79

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 72: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Einfache BloganwendungBlogposts und Kommentare

Kommentare ldquoinlinerdquoDirekter Zugriff auf Kommentare durch geeigneten ViewVorteil alles beisammen beim Loumlschen des Posts werden alleKommentare mit geloumlscht Nachteil jeder neue Kommentar ist ein Update des Posts beivielen Kommentaren Konflikte wahrscheinlich

Alternative Kommentare in eigenen DokumentenGemeinsame Ausgabe eines Posts und seiner Kommetare durchgeeigeneten View

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 71 79

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 73: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Noch Fragen

Vielen Dank fuumlr Ihre Aufmerksamkeit

Fragen und Anmerkungen

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 72 79

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 74: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Referenzen I

J Chris Anderson Jan Lehnardt and Noah SlaterCouchDB The definitive GuideOrsquoReilly 2010URL httpbookscouchdborgrelax

Eric A BrewerTowards robust distributed systemsIn Principles of Distributed Computing (Keynote) 2000URL httpwwwcsberkeleyedu~brewercs262b-2004PODC-keynotepdf

Edgar F CoddA relational model of data for large shared data banksCommunications of the ACM 13(6)377ndash387 1970doi101145362384362685

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 73 79

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 75: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Referenzen II

Edgar F CoddDoes your dbms run by the rulesComputerWorld Oktober 1985

Edgar F CoddIs your dbms really relationalComputerWorld Oktober 1985

Jeffrey Dean and Sanjay GhemawatMapreduce Simplified data processing on large clustersIn Sixth Symposium on Operating System Design andImplementation 2004URL httplabsgooglecompapersmapreducehtml

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 74 79

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 76: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Referenzen III

Jim GrayThe transaction concept Virtues and limitationsIn Proceedings of the 7th International Conference on Very LargeDatabases pages 144ndash154 1981

Theo Haerder and Andreas ReuterPrinciples of transaction-oriented database recoveryACM Computing Surveys 15287ndash317 1983

Eric LaiResearchers Databases still beat googlersquos mapreduceComputer World April 2009URL httpwwwcomputerworldcomsarticle9131526Researchers_Databases_still_beat_Google_s_MapReduce

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 75 79

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 77: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Referenzen IV

Nancy Lynch and Seth GilbertBrewerrsquos conjecture and the feasibility of consistent availablepartition-tolerant web servicesACM SIGACT News 33(2)51ndash59 2002doi1011201495URL httpciteseerxistpsueduviewdocdownloaddoi=1011201495amprep=rep1amptype=pdf

nosql(eu)nosql(eu) April 2010URL httpwwwnosqleucom

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 76 79

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 78: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Referenzen V

Andrew Pavlo Erik Paulson Alexander Rasin Daniel J AbadiDavid J Dewitt Samuel Madden and Michael StonebrakerA comparison of approaches to large-scale data analysisIn SIGMOD rsquo09 Proceedings of the 2009 ACM SIGMODInternational Conference ACM June 2009URL httpdatabasecsbrownedusigmod09benchmarks-sigmod09pdf

Dan PritchettBase An acid alternativeACM Queue 6(3)48ndash55 2008URL httpqueueacmorgdetailcfmid=1394128

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 77 79

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 79: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Referenzen VI

Stephen ShanklandGoogle spotlights data center inner workingscnet news Mai 2008URLhttpnewscnetcom8301-10784_3-9955184-7html

Michael Stonebraker Daniel Abadi David J DeWitt SamMadden Erik Paulson Andrew Pavlo and Alexander RasinMapreduce and parallel dbmss Friends or foesCommunications of the ACM 53(1)64ndash71 2010ISSN 0001-0782doihttpdoiacmorg10114516291751629197URL httpdatabasecsbrownedupapersstonebraker-cacm2010pdf

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 78 79

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang
Page 80: Not only SQL - CouchDB und andere NoSQL-Datenbanken

Referenzen VII

Stefan TilkovA brief introduction to restInfo Queue 2007URLhttpwwwinfoqcomarticlesrest-introduction

K Puschke (Vortrag HAW Hamburg) NoSQL 3 Juni 2010 79 79

  • Einfuumlhrung
    • Relationale Datenbanksysteme
    • Weitere Datenbanksysteme
    • NoSQL
      • Why Not Only SQL - warum nicht immer SQL einsetzen
        • Web vs RDBMS
        • Verteilte Systeme
          • Protokolle amp APIs
            • HTTPREST
            • MapReduce
              • Datenmodelle
                • Spaltenorientierung
                • Objektorientierung
                • Graphen
                • Schluumlssel-Wert-Paare
                • Dokumentenorientierung
                  • CouchDB
                    • Implementierung
                    • Updates and Concurrency
                    • Abfragen
                    • Design Documents
                    • Anwendungen
                      • Herausforderungen und Kritik
                      • Praxisbeispiel
                      • Anhang