SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
NoSQL und CouchDB

                  Dr. Kerstin Puschke


                       Mai 2010




K. Puschke ()            NoSQL          Mai 2010   1 / 30
Lizenz




Lizenz
Dieser Text steht unter einer Creative Commons
Attribution 3.0 Germany Lizenz, siehe
http://creativecommons.org/licenses/by/3.0/de/




      K. Puschke ()            NoSQL             Mai 2010   2 / 30
NoSQL
Begriffsklärung




      2009 als Sammelbegriff für bereits länger existierende Systeme
      etabliert
      Not only SQL
      keine eindeutige Definition
      nicht-relationale Datenspeicher




        K. Puschke ()              NoSQL                    Mai 2010   3 / 30
NoSQL
Begriffsklärung




                                        no:sql(eu) conference.   http://www.nosqleu.com, April 2010

      . . . era of “one-size-fits-all database” seems to be over.




        K. Puschke ()               NoSQL                                        Mai 2010      4 / 30
NoSQL
Begriffsklärung




                                       no:sql(eu) conference.   http://www.nosqleu.com, April 2010

      . . . era of “one-size-fits-all database” seems to be over.
      Instead of squeezing all your data into tables, we believe the
      future is about choosing a data store that best matches your
      data set and operational requirements.




        K. Puschke ()              NoSQL                                        Mai 2010      4 / 30
NoSQL
Begriffsklärung




                                       no:sql(eu) conference.   http://www.nosqleu.com, April 2010

      . . . era of “one-size-fits-all database” seems to be over.
      Instead of squeezing all your data into tables, we believe the
      future is about choosing a data store that best matches your
      data set and operational requirements. It’s a future of
      heterogeneous data backends, polyglot persistence and
      choosing Not Only SQL but sometimes also a document
      database, a key-value store or a graph database.




        K. Puschke ()              NoSQL                                        Mai 2010      4 / 30
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 ()                NoSQL                 Mai 2010   5 / 30
(Un)strukturierte Daten
Web vs. RDBMS




RDBMS
    Datenbankschema entscheidend
          aufwändig zu entwerfen: Normalisierung,. . .
          nachträglich schwierig zu ändern
    stark strukturiert

Webanwendungen
    user generated content
          unstrukturierte Daten




      K. Puschke ()                 NoSQL                Mai 2010   6 / 30
Abfragen
Web vs. RDBMS




RDBM
    dynamische Abfragen (ad hoc reporting)
    beliebige Abfragen über alle Daten direkt in SQL
    Abfrage-Optimierung oft erforderlich

Webanwendungen
    wiederkehrende Abfragen, nur Parameter ändern sich




      K. Puschke ()             NoSQL                    Mai 2010   7 / 30
Verteiltes Arbeiten




   Skalierbarkeit
   Hochverfügbarkeit
   RDBMS: Verteiltes Arbeiten nachträglich rudimentär zugefügt
   Problem: Fallacies of Distributed Computing




     K. Puschke ()             NoSQL                    Mai 2010   8 / 30
CAP Theorem
Consistency, Availability, Partition Tolerance



Theorem
      Consistency
      Der Client glaubt, eine Menge von Operationen sei auf einen
      Schlag passiert: Alle Clients sehen dieselben Daten.
      Availability
      Jede Operation endet mit einer bestimmungsgemäßen Antwort:
      Alle Clients können auf eine Version der Daten zugreifen.
      Partition Tolerance
      Operationen werden zu Ende geführt, auch wenn die Datenbank
      partitioniert ist.
Nur zwei der drei Eigenschaften sind gleichzeitig möglich!



        K. Puschke ()                      NoSQL             Mai 2010   9 / 30
CAP Theorem
Anwendung




    Availability & Consistency: Paxos, BigTable . . .
    Consistency & Partition Tolerance: viele RDBMS, . . .
          ACID (atomicity, consistency, isolation, durability)
    Availability & Partition Tolerance: CouchDB, MongoDB,
    Cassandra, Dynamo,. . .
          BASE (basically available, soft-state, eventual consistency)




      K. Puschke ()                   NoSQL                       Mai 2010   10 / 30
Relationales Modell




   striktes Schema
   zeilenorientierte Speicherung
   ’echte’ Beziehungen zwischen Daten
   foreign key constraints, joins. . .




     K. Puschke ()             NoSQL     Mai 2010   11 / 30
Spaltenorientierung




   Cassandra, BigTable,. . .
   spaltenorientierte Speicherung
   mehr Performanz für bestimmte Abfragen
   z.B. Aggregieren innerhalb einer Spalte
   flexibleres Schema
   keine ’echten’ Beziehungen




     K. Puschke ()              NoSQL        Mai 2010   12 / 30
Cassandra’s Datenmodell
Vereinfachte Darstellung

     keyspace
            entspricht der Anwendung; Beispiel: ’Blog’
     column family
            entspricht einer Datei
            Beispiel: ’Posts’ oder ’Users’
            beliebig viele Einträge (key + columns)
     key
            identifiziert einen Eintrag in der column family
            wird bei Abfragen benutzt
            keys sind lokal
            gleichnamige keys verschiedener column families sind verschieden
            keine ’echten’ Beziehungen
     column
            tupel (name, value, timestamp)
            Beispiel: {name:username, value:foo, timestamp:12345}
            verschiedene keys können verschiedene columns haben
        K. Puschke ()                 NoSQL                      Mai 2010   13 / 30
Objektorientierung




   Persistenzschicht für Objektorientierte Programmierung
   Abfragen in objektorientierter Programmiersprache
   OO-Programmiersprache (Java, C++,. . . ) oder DBMS-eigene
   Sprache
   db4o, JADE, Databeans,. . .




     K. Puschke ()               NoSQL                  Mai 2010   14 / 30
Graphen




   Graphen im Sinne der Mathematik
   Knoten und Kanten
   modellieren z.B. Netzwerk, Leitungssystem,. . .
   Spezialfall: Baum
   z.B. Produktkategorien (Eltern-Kind-Beziehung)




    K. Puschke ()               NoSQL                Mai 2010   15 / 30
Graphendatenbanken



   InfoGrid, neo4j, . . .
   Daten als Graphen
         Knoten
         eigenständige Objekte wie Kunde, Bestellung,. . .
         Kanten sind Beziehungen zwischen Knoten
   schematisiert oder schemafrei
   Kanten sind “first class objects”
   gut geeignet für komplexe Beziehungsgeflechte
   z.B. social network




     K. Puschke ()                 NoSQL                     Mai 2010   16 / 30
Schlüssel-Wert-Paare




   Riak, Tokyo Cabinet,. . .
   Schlüssel-Wert-Paare
   Abfrage per Schlüssel
   schemafrei
   keine ’echten’ Relationen




     K. Puschke ()             NoSQL   Mai 2010   17 / 30
Dokumentenorientierung




   CouchDB, MongoDB, Riak, XML-Datenbanken. . .
   Dokument: weitere Abstraktionsebene oberhalb von
   Schlüssel-Wert-Paaren
   für sich genommen sinnvolle Informationseinheit
   meist Entsprechung im Real Life (Rechnung, Visitenkarte,. . . )
   schemafrei
   keine ’echten’ Relationen




    K. Puschke ()               NoSQL                      Mai 2010   18 / 30
CouchDB’s Datenmodell




   Format: JavaScript Object Notation (JSON)
   Bestandteil von JavaScript
   Schlüssel-Wert-Paare
   obligatorische Schlüssel:
        _id zur eindeutigen Identifikation des Dokumentes (UUID),
        _rev zur Versionierung des Dokumentes
   Dokumente können Attachments haben




    K. Puschke ()                NoSQL                      Mai 2010   19 / 30
Was ist CouchDB?



   Cluster Of Unreliable Commodity Hardware DataBase
   Datenbankcluster auf unzuverlässiger Standardhardware
   Datenbanksystem (nicht nur) für Webanwendungen
   offene Webstandards
   Robuste Replikation
   verteiltes Arbeiten ohne Fallacies of Distributed Computing
   schemafrei
   geeignet für unstrukturierte Daten




    K. Puschke ()              NoSQL                      Mai 2010   20 / 30
Implementierung
Überblick



     HTTP/REST (Webserver enthalten)
     Erlang
     funktional, fehlertolerant, concurrency optimiert
     Viewserver in JavaScript (Indizes erstellen)
     alternativ via Plugins auch PHP, Ruby, Python, Perl, Common
     Lisp, Erlang,. . .
     dokumentenbasierte Speicherung (JSON)
     Datenbank und Indizes als B-Tree gespeichert
     eventual consistency (in verteilten Systemen)
     Storage Engine: ACID
     optimistic locking, Multi Version Concurrency Control


        K. Puschke ()             NoSQL                      Mai 2010   21 / 30
Updates



   neue Version eines Dokumentes wird an Datenbankdatei
   angehängt
   keine diffs, keine partiellen updates
   Robust: was einmal auf Platte steht, wird nicht mehr angefaßt
   serialisierte Schreibzugriffe (pro Datenbank)
   Geschwindigkeit: neue Version kann angehängt werden, während
   alte noch gelesen wird
   MVCC




    K. Puschke ()                NoSQL                    Mai 2010   22 / 30
View


   (secondary) Index (Schlüssel-Wert-Paare)
   Schlüssel und Werte des Views sind Werte aus Dokumenten
           Beispiel: Erstellungsdaten als Schlüssel, Blogposttitel als Werte
           können auch arrays von Werten (aus Dokumenten) sein
           Werte (im View) können auch aggregierte Werte (aus Dokumenten)
           sein
   sortiert nach Schlüsseln
   effizientes Abfragen nach bestimmten Schlüsseln oder Bereichen
   von Schlüsseln
   ’Titel aller Blogposts von Mai 2009’
   zur Abfragezeit erzeugt/aktualisiert durch MapReduce




       K. Puschke ()                NoSQL                       Mai 2010   23 / 30
MapReduce
View erzeugen




     map verarbeitet Dokumente
     erzeugt Schlüssel-Wert-Paare
     optionales reduce erzeugt aggregierte (Zwischen)Werte
     verarbeitet Ergebnisse von map oder rekursiv
     Zwischenergebnisse von reduce
     group: anwenden auf Objekte mit gleichem Schlüssel
     Beispiel: nicht alle Blogposts zählen, sondern Blogposts pro Tag
     MapReduce-Funktionen gespeichert in Dokumenten
     (Designdokumente)




       K. Puschke ()             NoSQL                      Mai 2010   24 / 30
Design Documents




   CouchDB-Dokumente
   _id beginnt mit _design
   enthalten Anwendungscode, sprich Funktionen
        MapReduce-Funktionen für Views
        Validation: Zulässigkeit von Updates
        input prüfen, nur eingeloggte user,. . .
        serverseitige Bearbeitung vor dem Speichern eines Dokumentes
        Show/List: JSON in HTML, XML,. . . konvertieren




    K. Puschke ()               NoSQL                      Mai 2010   25 / 30
Webanwendungen mit CouchDB
Klassische Webanwendungen




     Serverseitige Skripte lesen Daten aus CouchDB
     erzeugen daraus dynamisch HTML
     Webserver liefert aus




      K. Puschke ()            NoSQL                 Mai 2010   26 / 30
Webanwendungen mit CouchDB
CouchApps




    leben vollständig in der Datenbank
    keine middleware
    Show/List-Funktionen
    Attachments (HTML,CSS, Javascript) direkt ausliefern
    Ausgelieferte Webseite greift per Javascript/HTTP auf CouchDB
    zu
    Replikation: update, fork, backup von Anwendungen




      K. Puschke ()             NoSQL                      Mai 2010   27 / 30
Dezentrale offline Webanwendung
Ein Usecase für CouchApps




     Daten und Anwendung lokal beim user
     offline verfügbar
     lokale Datenhaltung = niedrige Latenz
     dezentral
     (gefilterte) Replikation mit anderen usern




       K. Puschke ()             NoSQL           Mai 2010   28 / 30
Desktop-Anwendungen




   Beispiel: Synchronisation von Anwendungsdaten
   bereits realisiert in Ubuntu
   Bookmarks, Adreßbuch,. . . in CouchDB speichern
   per Replikation mit anderen Rechnern synchronisieren




    K. Puschke ()                 NoSQL                   Mai 2010   29 / 30
Herausforderungen und Kritik



   HTML/JS, HTTP,. . .
   vorhandene Probleme bleiben bestehen
   kein ad hoc reporting
   BASE vs. ACID
   Zweifel an der Geschwindigkeit?
   CouchApps und Co: Verteilte Identitäten
        serverseitiger Code nötig für Authentifizierung/Autorisierung
        vertrauenswürdiger Server nötig




    K. Puschke ()                 NoSQL                        Mai 2010   30 / 30

Más contenido relacionado

Destacado

Behind the scenes of a grown-up web application
Behind the scenes of a grown-up web applicationBehind the scenes of a grown-up web application
Behind the scenes of a grown-up web applicationKerstin Puschke
 
TestDisk User Manual
TestDisk User ManualTestDisk User Manual
TestDisk User ManualRockety Ryder
 
Linux slides fort_2013_upload
Linux slides fort_2013_uploadLinux slides fort_2013_upload
Linux slides fort_2013_uploadRosa Freund
 
Timetable identity
Timetable identityTimetable identity
Timetable identityheiko.vogl
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Kerstin Puschke
 
Rsyslog - Deutsche Qualitätsarbeit für Linux
Rsyslog - Deutsche Qualitätsarbeit für LinuxRsyslog - Deutsche Qualitätsarbeit für Linux
Rsyslog - Deutsche Qualitätsarbeit für LinuxTrivadis
 
Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)Kerstin Puschke
 
Nmon Analysis - Performance monitoring tool for LINUX and AIX
Nmon Analysis - Performance monitoring tool for LINUX and AIXNmon Analysis - Performance monitoring tool for LINUX and AIX
Nmon Analysis - Performance monitoring tool for LINUX and AIXGanesh Mandala
 
Extreme Linux Performance Monitoring and Tuning
Extreme Linux Performance Monitoring and TuningExtreme Linux Performance Monitoring and Tuning
Extreme Linux Performance Monitoring and TuningMilind Koyande
 
Windows command prompt a to z
Windows command prompt a to zWindows command prompt a to z
Windows command prompt a to zSubuh Kurniawan
 
Webentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLWebentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLKerstin Puschke
 
Linux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA'sLinux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA'sMydbops
 
Linux Troubleshooting
Linux TroubleshootingLinux Troubleshooting
Linux TroubleshootingKeith Wright
 
Course on Ehtical Hacking - Introduction
Course on Ehtical Hacking - IntroductionCourse on Ehtical Hacking - Introduction
Course on Ehtical Hacking - IntroductionBharat Thakkar
 
The New CSS Layout - dotCSS
The New CSS Layout - dotCSSThe New CSS Layout - dotCSS
The New CSS Layout - dotCSSRachel Andrew
 

Destacado (20)

Behind the scenes of a grown-up web application
Behind the scenes of a grown-up web applicationBehind the scenes of a grown-up web application
Behind the scenes of a grown-up web application
 
In der Ruhe liegt die Kraft
In der Ruhe liegt die KraftIn der Ruhe liegt die Kraft
In der Ruhe liegt die Kraft
 
Linux- und Windows Rechner…
Linux- und Windows Rechner…Linux- und Windows Rechner…
Linux- und Windows Rechner…
 
TestDisk User Manual
TestDisk User ManualTestDisk User Manual
TestDisk User Manual
 
Linux slides fort_2013_upload
Linux slides fort_2013_uploadLinux slides fort_2013_upload
Linux slides fort_2013_upload
 
Timetable identity
Timetable identityTimetable identity
Timetable identity
 
oEmbed (on rails)
oEmbed (on rails)oEmbed (on rails)
oEmbed (on rails)
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
 
Rsyslog - Deutsche Qualitätsarbeit für Linux
Rsyslog - Deutsche Qualitätsarbeit für LinuxRsyslog - Deutsche Qualitätsarbeit für Linux
Rsyslog - Deutsche Qualitätsarbeit für Linux
 
Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)
 
Linux monitoring
Linux monitoringLinux monitoring
Linux monitoring
 
Nmon Analysis - Performance monitoring tool for LINUX and AIX
Nmon Analysis - Performance monitoring tool for LINUX and AIXNmon Analysis - Performance monitoring tool for LINUX and AIX
Nmon Analysis - Performance monitoring tool for LINUX and AIX
 
3 infomeeting
3 infomeeting3 infomeeting
3 infomeeting
 
Extreme Linux Performance Monitoring and Tuning
Extreme Linux Performance Monitoring and TuningExtreme Linux Performance Monitoring and Tuning
Extreme Linux Performance Monitoring and Tuning
 
Windows command prompt a to z
Windows command prompt a to zWindows command prompt a to z
Windows command prompt a to z
 
Webentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLWebentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQL
 
Linux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA'sLinux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA's
 
Linux Troubleshooting
Linux TroubleshootingLinux Troubleshooting
Linux Troubleshooting
 
Course on Ehtical Hacking - Introduction
Course on Ehtical Hacking - IntroductionCourse on Ehtical Hacking - Introduction
Course on Ehtical Hacking - Introduction
 
The New CSS Layout - dotCSS
The New CSS Layout - dotCSSThe New CSS Layout - dotCSS
The New CSS Layout - dotCSS
 

Similar a NoSQL und CouchDB

SWIB 2010: Linked Open Projects
SWIB 2010: Linked Open ProjectsSWIB 2010: Linked Open Projects
SWIB 2010: Linked Open ProjectsKai Eckert
 
Cloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenCloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenMagnus Pfeffer
 
Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Dietmar Leher
 
sones NoSQL GraphDatenbank für Bilderportale
sones NoSQL GraphDatenbank für Bilderportalesones NoSQL GraphDatenbank für Bilderportale
sones NoSQL GraphDatenbank für Bilderportalesones GmbH
 
RDBMS oder NoSQL – warum nicht beides?
RDBMS oder NoSQL – warum nicht beides?RDBMS oder NoSQL – warum nicht beides?
RDBMS oder NoSQL – warum nicht beides?Capgemini
 
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenAMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenBjörn Muschall
 
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen HochschulbibliothekenKickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen HochschulbibliothekenLydiaU
 
Ist ADO.NET EntityFramework das bessere LINQ?
Ist ADO.NET EntityFramework das bessere LINQ?Ist ADO.NET EntityFramework das bessere LINQ?
Ist ADO.NET EntityFramework das bessere LINQ?.NET User Group Dresden
 
Jakarta EE 10: Ein erster Blick auf Eclipse JNoSQL
Jakarta EE 10: Ein erster Blick auf Eclipse JNoSQLJakarta EE 10: Ein erster Blick auf Eclipse JNoSQL
Jakarta EE 10: Ein erster Blick auf Eclipse JNoSQLgedoplan
 
amsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-Förderphaseamsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-FörderphaseBjörn Muschall
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBMario Müller
 
Big Data Konnektivität
Big Data KonnektivitätBig Data Konnektivität
Big Data KonnektivitätTrivadis
 
The Hadoop Connection
The Hadoop ConnectionThe Hadoop Connection
The Hadoop Connectioninovex GmbH
 
MapRecude: The Hadoop Connection
MapRecude: The Hadoop ConnectionMapRecude: The Hadoop Connection
MapRecude: The Hadoop Connectionvesparun
 
Objekt-Relationales Mapping - von Java zu relationalen DBs
Objekt-Relationales Mapping - von Java zu relationalen DBsObjekt-Relationales Mapping - von Java zu relationalen DBs
Objekt-Relationales Mapping - von Java zu relationalen DBsSebastian Dietrich
 
Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)sones GmbH
 
Einbindung von Linked Data in existierende Bibliotheksanswendungen
Einbindung von Linked Data in existierende BibliotheksanswendungenEinbindung von Linked Data in existierende Bibliotheksanswendungen
Einbindung von Linked Data in existierende Bibliotheksanswendungenredsys
 
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBDocker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBPeter Ramm
 

Similar a NoSQL und CouchDB (20)

SWIB 2010: Linked Open Projects
SWIB 2010: Linked Open ProjectsSWIB 2010: Linked Open Projects
SWIB 2010: Linked Open Projects
 
Cloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenCloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von Metadaten
 
Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)
 
sones NoSQL GraphDatenbank für Bilderportale
sones NoSQL GraphDatenbank für Bilderportalesones NoSQL GraphDatenbank für Bilderportale
sones NoSQL GraphDatenbank für Bilderportale
 
RDBMS oder NoSQL – warum nicht beides?
RDBMS oder NoSQL – warum nicht beides?RDBMS oder NoSQL – warum nicht beides?
RDBMS oder NoSQL – warum nicht beides?
 
Linked Library Data & RDA
Linked Library Data & RDALinked Library Data & RDA
Linked Library Data & RDA
 
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenAMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
 
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen HochschulbibliothekenKickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
 
Ist ADO.NET EntityFramework das bessere LINQ?
Ist ADO.NET EntityFramework das bessere LINQ?Ist ADO.NET EntityFramework das bessere LINQ?
Ist ADO.NET EntityFramework das bessere LINQ?
 
Jakarta EE 10: Ein erster Blick auf Eclipse JNoSQL
Jakarta EE 10: Ein erster Blick auf Eclipse JNoSQLJakarta EE 10: Ein erster Blick auf Eclipse JNoSQL
Jakarta EE 10: Ein erster Blick auf Eclipse JNoSQL
 
amsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-Förderphaseamsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-Förderphase
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDB
 
Big Data Konnektivität
Big Data KonnektivitätBig Data Konnektivität
Big Data Konnektivität
 
The Hadoop Connection
The Hadoop ConnectionThe Hadoop Connection
The Hadoop Connection
 
MapRecude: The Hadoop Connection
MapRecude: The Hadoop ConnectionMapRecude: The Hadoop Connection
MapRecude: The Hadoop Connection
 
Objekt-Relationales Mapping - von Java zu relationalen DBs
Objekt-Relationales Mapping - von Java zu relationalen DBsObjekt-Relationales Mapping - von Java zu relationalen DBs
Objekt-Relationales Mapping - von Java zu relationalen DBs
 
Wir sind aber nicht Twitter
Wir sind aber nicht TwitterWir sind aber nicht Twitter
Wir sind aber nicht Twitter
 
Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)
 
Einbindung von Linked Data in existierende Bibliotheksanswendungen
Einbindung von Linked Data in existierende BibliotheksanswendungenEinbindung von Linked Data in existierende Bibliotheksanswendungen
Einbindung von Linked Data in existierende Bibliotheksanswendungen
 
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBDocker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
 

NoSQL und CouchDB

  • 1. NoSQL und CouchDB Dr. Kerstin Puschke Mai 2010 K. Puschke () NoSQL Mai 2010 1 / 30
  • 2. Lizenz Lizenz Dieser Text steht unter einer Creative Commons Attribution 3.0 Germany Lizenz, siehe http://creativecommons.org/licenses/by/3.0/de/ K. Puschke () NoSQL Mai 2010 2 / 30
  • 3. NoSQL Begriffsklärung 2009 als Sammelbegriff für bereits länger existierende Systeme etabliert Not only SQL keine eindeutige Definition nicht-relationale Datenspeicher K. Puschke () NoSQL Mai 2010 3 / 30
  • 4. NoSQL Begriffsklärung no:sql(eu) conference. http://www.nosqleu.com, April 2010 . . . era of “one-size-fits-all database” seems to be over. K. Puschke () NoSQL Mai 2010 4 / 30
  • 5. NoSQL Begriffsklärung no:sql(eu) conference. http://www.nosqleu.com, April 2010 . . . era of “one-size-fits-all database” seems to be over. Instead of squeezing all your data into tables, we believe the future is about choosing a data store that best matches your data set and operational requirements. K. Puschke () NoSQL Mai 2010 4 / 30
  • 6. NoSQL Begriffsklärung no:sql(eu) conference. http://www.nosqleu.com, April 2010 . . . era of “one-size-fits-all database” seems to be over. Instead of squeezing all your data into tables, we believe the future is about choosing a data store that best matches your data set and operational requirements. It’s a future of heterogeneous data backends, polyglot persistence and choosing Not Only SQL but sometimes also a document database, a key-value store or a graph database. K. Puschke () NoSQL Mai 2010 4 / 30
  • 7. 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 () NoSQL Mai 2010 5 / 30
  • 8. (Un)strukturierte Daten Web vs. RDBMS RDBMS Datenbankschema entscheidend aufwändig zu entwerfen: Normalisierung,. . . nachträglich schwierig zu ändern stark strukturiert Webanwendungen user generated content unstrukturierte Daten K. Puschke () NoSQL Mai 2010 6 / 30
  • 9. Abfragen Web vs. RDBMS RDBM dynamische Abfragen (ad hoc reporting) beliebige Abfragen über alle Daten direkt in SQL Abfrage-Optimierung oft erforderlich Webanwendungen wiederkehrende Abfragen, nur Parameter ändern sich K. Puschke () NoSQL Mai 2010 7 / 30
  • 10. Verteiltes Arbeiten Skalierbarkeit Hochverfügbarkeit RDBMS: Verteiltes Arbeiten nachträglich rudimentär zugefügt Problem: Fallacies of Distributed Computing K. Puschke () NoSQL Mai 2010 8 / 30
  • 11. CAP Theorem Consistency, Availability, Partition Tolerance Theorem Consistency Der Client glaubt, eine Menge von Operationen sei auf einen Schlag passiert: Alle Clients sehen dieselben Daten. Availability Jede Operation endet mit einer bestimmungsgemäßen Antwort: Alle Clients können auf eine Version der Daten zugreifen. Partition Tolerance Operationen werden zu Ende geführt, auch wenn die Datenbank partitioniert ist. Nur zwei der drei Eigenschaften sind gleichzeitig möglich! K. Puschke () NoSQL Mai 2010 9 / 30
  • 12. CAP Theorem Anwendung Availability & Consistency: Paxos, BigTable . . . Consistency & Partition Tolerance: viele RDBMS, . . . ACID (atomicity, consistency, isolation, durability) Availability & Partition Tolerance: CouchDB, MongoDB, Cassandra, Dynamo,. . . BASE (basically available, soft-state, eventual consistency) K. Puschke () NoSQL Mai 2010 10 / 30
  • 13. Relationales Modell striktes Schema zeilenorientierte Speicherung ’echte’ Beziehungen zwischen Daten foreign key constraints, joins. . . K. Puschke () NoSQL Mai 2010 11 / 30
  • 14. Spaltenorientierung Cassandra, BigTable,. . . spaltenorientierte Speicherung mehr Performanz für bestimmte Abfragen z.B. Aggregieren innerhalb einer Spalte flexibleres Schema keine ’echten’ Beziehungen K. Puschke () NoSQL Mai 2010 12 / 30
  • 15. Cassandra’s Datenmodell Vereinfachte Darstellung keyspace entspricht der Anwendung; Beispiel: ’Blog’ column family entspricht einer Datei Beispiel: ’Posts’ oder ’Users’ beliebig viele Einträge (key + columns) key identifiziert einen Eintrag in der column family wird bei Abfragen benutzt keys sind lokal gleichnamige keys verschiedener column families sind verschieden keine ’echten’ Beziehungen column tupel (name, value, timestamp) Beispiel: {name:username, value:foo, timestamp:12345} verschiedene keys können verschiedene columns haben K. Puschke () NoSQL Mai 2010 13 / 30
  • 16. Objektorientierung Persistenzschicht für Objektorientierte Programmierung Abfragen in objektorientierter Programmiersprache OO-Programmiersprache (Java, C++,. . . ) oder DBMS-eigene Sprache db4o, JADE, Databeans,. . . K. Puschke () NoSQL Mai 2010 14 / 30
  • 17. Graphen Graphen im Sinne der Mathematik Knoten und Kanten modellieren z.B. Netzwerk, Leitungssystem,. . . Spezialfall: Baum z.B. Produktkategorien (Eltern-Kind-Beziehung) K. Puschke () NoSQL Mai 2010 15 / 30
  • 18. Graphendatenbanken InfoGrid, neo4j, . . . Daten als Graphen Knoten eigenständige Objekte wie Kunde, Bestellung,. . . Kanten sind Beziehungen zwischen Knoten schematisiert oder schemafrei Kanten sind “first class objects” gut geeignet für komplexe Beziehungsgeflechte z.B. social network K. Puschke () NoSQL Mai 2010 16 / 30
  • 19. Schlüssel-Wert-Paare Riak, Tokyo Cabinet,. . . Schlüssel-Wert-Paare Abfrage per Schlüssel schemafrei keine ’echten’ Relationen K. Puschke () NoSQL Mai 2010 17 / 30
  • 20. Dokumentenorientierung CouchDB, MongoDB, Riak, XML-Datenbanken. . . Dokument: weitere Abstraktionsebene oberhalb von Schlüssel-Wert-Paaren für sich genommen sinnvolle Informationseinheit meist Entsprechung im Real Life (Rechnung, Visitenkarte,. . . ) schemafrei keine ’echten’ Relationen K. Puschke () NoSQL Mai 2010 18 / 30
  • 21. CouchDB’s Datenmodell Format: JavaScript Object Notation (JSON) Bestandteil von JavaScript Schlüssel-Wert-Paare obligatorische Schlüssel: _id zur eindeutigen Identifikation des Dokumentes (UUID), _rev zur Versionierung des Dokumentes Dokumente können Attachments haben K. Puschke () NoSQL Mai 2010 19 / 30
  • 22. Was ist CouchDB? Cluster Of Unreliable Commodity Hardware DataBase Datenbankcluster auf unzuverlässiger Standardhardware Datenbanksystem (nicht nur) für Webanwendungen offene Webstandards Robuste Replikation verteiltes Arbeiten ohne Fallacies of Distributed Computing schemafrei geeignet für unstrukturierte Daten K. Puschke () NoSQL Mai 2010 20 / 30
  • 23. Implementierung Überblick HTTP/REST (Webserver enthalten) Erlang funktional, fehlertolerant, concurrency optimiert Viewserver in JavaScript (Indizes erstellen) alternativ via Plugins auch PHP, Ruby, Python, Perl, Common Lisp, Erlang,. . . dokumentenbasierte Speicherung (JSON) Datenbank und Indizes als B-Tree gespeichert eventual consistency (in verteilten Systemen) Storage Engine: ACID optimistic locking, Multi Version Concurrency Control K. Puschke () NoSQL Mai 2010 21 / 30
  • 24. Updates neue Version eines Dokumentes wird an Datenbankdatei angehängt keine diffs, keine partiellen updates Robust: was einmal auf Platte steht, wird nicht mehr angefaßt serialisierte Schreibzugriffe (pro Datenbank) Geschwindigkeit: neue Version kann angehängt werden, während alte noch gelesen wird MVCC K. Puschke () NoSQL Mai 2010 22 / 30
  • 25. View (secondary) Index (Schlüssel-Wert-Paare) Schlüssel und Werte des Views sind Werte aus Dokumenten Beispiel: Erstellungsdaten als Schlüssel, Blogposttitel als Werte können auch arrays von Werten (aus Dokumenten) sein Werte (im View) können auch aggregierte Werte (aus Dokumenten) sein sortiert nach Schlüsseln effizientes Abfragen nach bestimmten Schlüsseln oder Bereichen von Schlüsseln ’Titel aller Blogposts von Mai 2009’ zur Abfragezeit erzeugt/aktualisiert durch MapReduce K. Puschke () NoSQL Mai 2010 23 / 30
  • 26. MapReduce View erzeugen map verarbeitet Dokumente erzeugt Schlüssel-Wert-Paare optionales reduce erzeugt aggregierte (Zwischen)Werte verarbeitet Ergebnisse von map oder rekursiv Zwischenergebnisse von reduce group: anwenden auf Objekte mit gleichem Schlüssel Beispiel: nicht alle Blogposts zählen, sondern Blogposts pro Tag MapReduce-Funktionen gespeichert in Dokumenten (Designdokumente) K. Puschke () NoSQL Mai 2010 24 / 30
  • 27. Design Documents CouchDB-Dokumente _id beginnt mit _design enthalten Anwendungscode, sprich Funktionen MapReduce-Funktionen für Views Validation: Zulässigkeit von Updates input prüfen, nur eingeloggte user,. . . serverseitige Bearbeitung vor dem Speichern eines Dokumentes Show/List: JSON in HTML, XML,. . . konvertieren K. Puschke () NoSQL Mai 2010 25 / 30
  • 28. Webanwendungen mit CouchDB Klassische Webanwendungen Serverseitige Skripte lesen Daten aus CouchDB erzeugen daraus dynamisch HTML Webserver liefert aus K. Puschke () NoSQL Mai 2010 26 / 30
  • 29. Webanwendungen mit CouchDB CouchApps leben vollständig in der Datenbank keine middleware Show/List-Funktionen Attachments (HTML,CSS, Javascript) direkt ausliefern Ausgelieferte Webseite greift per Javascript/HTTP auf CouchDB zu Replikation: update, fork, backup von Anwendungen K. Puschke () NoSQL Mai 2010 27 / 30
  • 30. Dezentrale offline Webanwendung Ein Usecase für CouchApps Daten und Anwendung lokal beim user offline verfügbar lokale Datenhaltung = niedrige Latenz dezentral (gefilterte) Replikation mit anderen usern K. Puschke () NoSQL Mai 2010 28 / 30
  • 31. Desktop-Anwendungen Beispiel: Synchronisation von Anwendungsdaten bereits realisiert in Ubuntu Bookmarks, Adreßbuch,. . . in CouchDB speichern per Replikation mit anderen Rechnern synchronisieren K. Puschke () NoSQL Mai 2010 29 / 30
  • 32. Herausforderungen und Kritik HTML/JS, HTTP,. . . vorhandene Probleme bleiben bestehen kein ad hoc reporting BASE vs. ACID Zweifel an der Geschwindigkeit? CouchApps und Co: Verteilte Identitäten serverseitiger Code nötig für Authentifizierung/Autorisierung vertrauenswürdiger Server nötig K. Puschke () NoSQL Mai 2010 30 / 30