1 Dokumentenorientierte Datenbanken Eine Einführung am Beispiel von CouchDB.

Slides:



Advertisements
Ähnliche Präsentationen
Die Performance von Webseiten optimieren
Advertisements

Martin Köllner XMLCompany XML-Datenbanken Xindice als Datenquelle einer Website im Zusammenspiel mit Cocoon und authentic TM.
MySQL.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
XINDICE The Apache XML Project Name: Jacqueline Langhorst
SQL als Abfragesprache
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Seminar Web-Engineering Nina Aschenbrenner / Ruben Jubeh 1 FG Software Engineering Software Engineering Seminar Web Engineering Seminar des Fachgebiet.
2.2 Definition eines Datenbankschemas (SQL-DDL)
Einführung und Überblick
Xindice Datenbanken vs. Markup Prof Dr. Manfred Thaller WS 2009 / 2010 Referent: Seyda Kurt.
... und alles was dazugehört
Wir bauen uns eine Webapplikation!
Relationale Datenbanken III
Projektarbeit PHP 5.3 / MySQL & Content Management Systems
Erstellen einer Webseitenstatistik mithilfe eines OLAP-Servers
Erstellen einer Webseitenstatistik mithilfe eines OLAP-Servers
Entwicklung verteilter Anwendungen II, SS 13 Prof. Dr. Herrad Schmidt SS 13 Kapitel 4 Folie 2 REST Web Services (1)
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
Projekt Systemintegration Datler, Kroiß, Sachs Systemintegration ILV, FL / MIC- 2 (SS2014)
Einführung in Datenbankmodellierung und SQL
Torque robert.resch-wolfgang.schneider. uebersicht Was ist Torque Komponenten von Torque Generator Erzeugte Klassen Methoden Torque in Turbine Demobeispiel.
Webseiten mit PHP, SQL, XML und Webservices Anhand praktischer Beispiele.
Webhosting an der Universität Zürich
Structured Query Language
SharePoint 2013 Web Services
->Prinzip ->Systeme ->Peer – to – Peer
TypoScript.
Peter Brezany Institut für Softwarewissenschaften Universität Wien
Datenbank System (DBS) - Warum?
Zürcher Fachhochschule Einführung in Big Data I Kurt Stockinger 1.
© 2015 TravelTainment NoSQL – Eine Alternative zu relationalen Datenbanken Dominik Schmitz.
Key-Value Paare (KVP) - Metadaten für Kanäle speichern und nach MDF4 exportieren PM (V1.0)
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
IS: Datenbanken, © Till Hänisch 2000 Relationenalgebra Die mathematische Grundlage von relationalen Datenbanken.
Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige.
© Till Hänisch, 2002 BA Heidenheim Methoden zur Aufwandsabschätzung Allgemein: –Reduktion der Komplexität –Vergleich mit Erfahrungswerten Probleme: –Erfassen.
WebServices Vortrag zur Diplomarbeit WebServices Analyse und Einsatz von Thomas Graf FH Regensburg
© 2008 TravelTainment The Amadeus Leisure Group Webanwendungen mit Java - HttpServlets 17.Dezember 2010 Sebastian Olscher Erstprüfer: Hon.-Prof. Dr. H.
Zehn Schritte zu Linux Der Weg in eine andere Welt...
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
MapReduce programming model Astrid Rheinländer & Stefan Bethge
PHPUG Karlsruhe 1. Juli 2009 Zend_ProgressBar und Zend_Tag_Cloud Ben Scholzen Software Entwickler DASPRiD's.
Inhaltsverzeichnis Was ist bsozial? Ziele Ressourcen Frontend API ER-Modell Qualitätssicherung Gantt Diagramm Fazit 1.
SQL Basics Schulung –
Geräteverwaltung mit der Cloud
Aufgabe 1: Begriffswelt
Google App Engine - Technische Stärken und Schwächen
Architektur von Web-Anwendungen
© ISY Informationssysteme GmbH
Logisches Datenmodell
ORACLE XE Bernd Tuba, Trier, Deutsche Post ITSolutions GmbH.
Alles wird gut! Suche im MyCoRe Jens Kupferschmidt
Abfragesprache SQL in ORACLE
AURIS-MM Spezifikation
Create Table, Rechte und Rollen
Excel-Berichte erstellen und verteilen
1.
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
Web-Kartografie in der amtlichen Statistik Deutschlands − Regionale Statistik, Bundes- und Europawahlen, zukünftige Aktivitäten − Arbeitsgruppentreffen.
Von Wietlisbach, Lenzin und Winter
Datenbanksystem Von Anna und Robin.
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
Da·ten·bank /Dátenbank/ Substantiv, feminin [die]
Schätzmethoden: CoCoMo und FPA
Datenbanken Von Amed und Alicia.
Von Wietlisbach, Lenzin und Winter
SOFTWARE- UND WEB-LÖSUNGEN
Schmock Mutter nicht ausreichend versorgt  fast verhungert Mutter bei Geburt verstorben Schmock mit Flasche aufgezogen.
(Structured Query Language)
 Präsentation transkript:

1 Dokumentenorientierte Datenbanken Eine Einführung am Beispiel von CouchDB

2 Wer bin ich? Mario Müller, 27 TWT Interactive GmbH - Düsseldorf PHP, Java, Groovy, Javascript, Python, Ruby Webservices, SOA, Software Qualität, diverse Frameworks MySQL, MongoDb, CouchDb Mac-Head & Linux Enthusiast Xing: Twitter: Github:

3 Agenda Schemalosigkeit und Dokumente CouchDB... und Lotus Domino? ReST on the CouchDB Batteries included Map & Reduce Anwendungsbeispiele CouchDB... und sonst noch?

4 Schema? Nein! Trennung nach Datenbanken, einige kennen zusätzlich „Collections“ und „Subcollections“ Kein CREATE TABLE, kein ALTER TABLE Keine feste Definition der Datenstruktur und der Datentypen keine NULL Werte im RDBMS - Verständnis... keine SQL Queries ;)

5 Dokumente Entsprechen „in etwa“ einer Zeile in einer relationalen DB Haben „beliebig“ viele Attribute in „beliebiger“ Verschachtelung Normalisierung der Daten spielt eine geringere Rolle Dokumente kennen keine Relationen zu anderen Dokumenten (Foreign Keys oder Constraints) Viele Datenbanken können binäre Attachments verwalten

6 Abfragen Verschiedene Herangehensweisen Direkt per ID (eigentl. alle) Map & Reduce (z. B. CouchDB, Amazon SDB) Index (z. B. CouchDB, Google Bigtable) Volltext Index (z. B. per Lucene für CouchDB)

7 CouchDB

8 Erfinder ist Damien Katz Damien hat vorher Lotus Domino bei IBM (mit) entwickelt CouchDB ist in Erlang geschrieben Seit Nov ein Apache Top-Level Projekt Läuft auf allen Systemen, dank der Erlang VM connect(Host, User, Password) -> {ftp_server,Host} ! {connect,self(),User,Password}, receive {ftp_server, Reply} -> Reply; Other -> Other after > timeout end Erlang Beispiel

9 Herausragend ACID ähnliches Verhalten bei der Datenspeicherung dank MVCC Implementierung Map & Reduce als Abfrage- Sprache/Filter in Form von Views Entwickelt für verteilte Systeme, omni- direktionale Synchronisation Alle Dokumente sind im JSON Format abzubilden

10 ReST on the Couch CouchDB wird via ReST angesprochen Dokumente PUT /dbname GET /dbname/id POST /dbname/(id) DELETE /dbname/id Datenbanken werden nach dem selben Prinzip behandelt

11 MVCC MVCC = Multi-Version Concurrency Control Dokumente werden Versioniert Kommt eine Revision zustande, bekommen alle Requests solange den alten Stand, bis der neue geschrieben ist Verhindert jegliches Locking auf Dokument- oder Attributslevel Daraus resultiert eine sehr hohe Abfrage-Performance

12 Batteries Included Apache Futon, eine eingebaute GUI Versionierung von Dokumenten Authentifizierung via HTTP ReST API JavaScript & JSON Plugins für weitere Sprachen

13

14

15 PHP Bibliotheken Zend_Http_Client, PHPillow, CouchPHP, PHPCouch, CouchDB C-Extension,

16

17 Map & Reduce

18 Map & Reduce Ist eine Art, Datenbestände abzufragen, Die Kombination von Map&Reduce nennt CouchDB „View“ Besteht aus zwei/drei nacheinander gelagerten Schritten, wobei der Reduce Schritt n-Mal wiederholt werden kann Map Bildet Paare aus Schlüssel und Wert Für jedes Element aus der gesamten Datenmenge Reduce / Rereduce Übernimmt die Zwischenergebnisse aus der Map-Phase oder der vorherigen Reduce-Phase (= Rereduce) Kann Berechnungen auf Basis der Daten durchführen

19 Beispiel - Map Die Map-Funktion emittiert alle Tags aus der Liste jedes Dokuments Der Key ist die String-Repräsentation des Tags Der Key ist der Wert für genau diesen Tag Über Werte != 1 könnte man eine Gewichtung abbilden. CouchDB unterstützt Range-Angaben in Views function(doc) { for (tag in doc.tags) { emit(doc.tags[tag], 1); }

20 Beispiel Map&Reduce Über die Reduce-Funktion wird die Summe der Werte ermittelt Die Reduce-Funktion bekommt alle Werte aus der Map, also das gesamte Zwischenergebnis Damit die Vorkommnisse der Tags gezählt werden, muss in CouchDB der View mit dem Parameter „group“ aufgerufen werden. Damit werden doppelte Keys vor dem Reduce zusammengeführt. Dieser Vorgang wird auch „Combine“ Phase genannt Beim Combine werden nur die Keys gruppiert, nicht die Werte. Bei 12 Tags bleibt 12x der Wert 1 stehen, alle gleichen Keys (= Tags) werden jedoch Gruppiert. => Tag - Cloud Beispiel! function(doc) { for (tag in doc.tags) { emit(doc.tags[tag], 1); } function(keys, values) { return sum(values); }

21 Vor- und Nachteile von Map & Reduce Vorteile Hohes Maß an Parallelisierung möglich Komplexe Ergebnismengen sind möglich In CouchDB ist das Anlegen und Abfragen von Views sehr einfach Nachteile Simple „WHERE“ Abfragen sind kaum möglich Ohne Parallelisierung mit erhöhter Komplexität wenig sinnvoll Keine Indizes auf Feld-Ebene -> „Alles oder nichts“

22 Replikation

23 Replikation einfach gemacht Replikation findet über HTTP statt Konfiguration über Futon Dokumente werden auf Attributsbasis synchronisiert Konflikte werden werden, sofern möglich, automatisch behoben Unlösbare Konflikte werden ausgesteuert und im Futon angezeigt

24 Anwendungsbeispiele

25 Arbit Tracker Geschrieben in PHP5.3 von Kore Nordmann Nutzt CouchDB als alleinige Datenbank Nutzt Zend_Seach_Lucene als Volltext- Suche Infos

26 CouchApps Applikationen die direkt auf der CouchDB ausgeführt werden Bestehen aus HTML5 und Javascript Infos unter Beispiel App „Blue Ink“ ist ein kleines CMS basierend auf CouchDB Infos nk_cms nk_cms

27 Sonstige Anwendungsgebiete Content / Webservice Caching Queue Persistenz Personen Datenbank (ähnlich Filemaker oder Access) Warenkorb für ein Shop System Blogs Map & Reduce Engine für RDBMS (es gibt sicherlich bessere M&R Frameworks)

28 CouchDB... und sonst noch?

29 MongoDB Funktionsumfang „ähnlich“ zu CouchDB Es gibt Attributs-basierte Indexe Generell auf hohe Performanz ausgelegt Keine Versionierung Map & Reduce ist für die Verarbeitung von Daten intern, nicht für die Abfrage Native PHP C-Extension und div. Bibliotheken vorhanden Kein MVCC, sondern update-in-place, => BASE statt ACID

30 Amazon SimpleDB Cloud-basierte Datenbank SOAP & ReST-ähnliche API Jede Query darf max. 5 Sekunden dauern (von Amazon festgelegt) Format ist XML, kein JSON PHP Adapter von Amazon bereitgestellt Kostenpflichtig In Deutschland wg. Datenschutz nicht für pers. Bez. Daten einsetzbar

31 Google Bigtable (AppEngine) Gibt es nativ nur für Python & Java Kann per Quercus auch für PHP verwendet werden „Endloser Speicher“ für normale Inhalte Begrenzter Speicher für Binärdaten Abfragemöglichkeiten eingeschränkt vorhanden In Deutschland wg. Datenschutz eingeschränkt für pers. Bez. Daten einsetzbar

32 Vielen Dank für die Aufmerksamkeit!

33 Fragen