Eine Einführung in Apache CouchDB. Java-Forum Stuttgart 2011



Ähnliche Dokumente
NoSQL Datenbanken am Beispiel von CouchDB

Einführung in CouchDB

Apache HBase. A BigTable Column Store on top of Hadoop

Big Data Mythen und Fakten

1 Einführung Die Grundlagen Praxis 1 das Kassenbuch (zentraler CouchDB-Server) Praxis 2 das Kassenbuch als CouchApp...

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

OP-LOG

Upgrade-Leitfaden. Apparo Fast Edit. Wechsel von Version 2 auf Version oder Wechsel von Version auf Version 3.0.

Updatehinweise für die Version forma 5.5.5

Überblick und Vergleich von NoSQL. Datenbanksystemen

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

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

Die Rückgabe kann über folgende, von uns getestete Programme / Apps vorgenommen werden: Adobe Digital Editions Sony Reader for PC Bluefire Reader

Konsistenzproblematik bei der Cloud-Datenspeicherung

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Internet online Update (Mozilla Firefox)

SJ OFFICE - Update 3.0

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

KEIL software. Inhaltsverzeichnis UPDATE. 1. Wichtige Informationen 1.1. Welche Änderungen gibt es?

Internet online Update (Internet Explorer)

Lokale Installation von DotNetNuke 4 ohne IIS

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

ZW3D 2013 Lizenzierungshinweis

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Big Data Informationen neu gelebt

Vgl. Kapitel 4 aus Systematisches Requirements Engineering, Christoph Ebert

Benutzerhandbuch MedHQ-App

Was meinen die Leute eigentlich mit: Grexit?

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Anleitung zur Erstellung und Bearbeitung von Seiten in Typo3. Typo3. Anleitung. Wenpas Informatik

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Spiel und Spaß im Freien. Arbeitsblat. Arbeitsblatt 1. Zeichnung: Gisela Specht. Diese Vorlage darf für den Unterricht fotokopiert werden.

FEHLER! TEXTMARKE NICHT DEFINIERT.

PostgreSQL und memcached

Jahresabschluss Finanzbuchhaltung INGARA. Provisorisch und Definitiv. INGARA Version

Brainloop Secure Client für ios Version 1.5 Schnellstartanleitung

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Guide DynDNS und Portforwarding

So funktioniert die NetWorker 7.5 Eigenschaft zum Sichern umbenannter Verzeichnisse ( Backup renamed Directories )

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Speicher in der Cloud

Print2CAD 2017, 8th Generation. Netzwerkversionen

ERPaaS TM. In nur drei Minuten zur individuellen Lösung und maximaler Flexibilität.

bizsoft Rechner (Server) Wechsel

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Netzwerkversion PVG.view

UserManual. Handbuch zur Konfiguration einer FRITZ!Box. Autor: Version: Hansruedi Steiner 2.0, November 2014

BitDefender Client Security Kurzanleitung

Auf einen Blick. 1 Einführung Die Grundlagen Praxis 1 - das Kassenbuch. (zentraler CouchDB-Server) 139

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Präsentation Von Laura Baake und Janina Schwemer

Mediumwechsel - VR-NetWorld Software

Vorarlberger Standardschulinstallation Anbindung von Android Mobile Devices

e-books aus der EBL-Datenbank

PRESman. Presentation Manager. Reduzieren Sie nachhaltig die Kosten für das. Erstellen, Verwalten und Verteilen Ihrer

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Anwendungsbeispiele Buchhaltung

Windows 7 Winbuilder USB Stick

Synchronisation von redundanten Datenbeständen

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

Firewalls für Lexware Info Service konfigurieren

MSDE 2000 mit Service Pack 3a

Kurzanleitung zu. von Daniel Jettka

Kombinierte Attacke auf Mobile Geräte

Microsoft Update Windows Update

PostgreSQL in großen Installationen

Das Projekt wird durchgeführt von den Bezirksregierungen in Nordrhein- Westfalen in ihrer Funktion als Fachstelle für die öffentlichen Bibliotheken

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Die Post hat eine Umfrage gemacht

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Hinweise zum Update des KPP Auswahltools (Netzwerkinstallation) auf Version 7.2

Virtual Desktop Infrasstructure - VDI

WLAN Konfiguration. Michael Bukreus Seite 1

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

GeoPilot (Android) die App

GeODin 7 Installationsanleitung

Ihr Benutzerhandbuch AVIRA ANTIVIR EXCHANGE

1 Was ist das Mediencenter?

ECO-Manager - Funktionsbeschreibung

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Online bezahlen mit e-rechnung

Datensicherung EBV für Mehrplatz Installationen

Reporting Services und SharePoint 2010 Teil 1

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

:: Anleitung Hosting Server 1cloud.ch ::

Zunächst ist dieser Service nur für Mac OS verfügbar. Drucken unter Windows wird Ihnen im Laufe des Semesters zur Verfügung stehen.

Advolux Konsolen- und Unattended-Installation

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

TECHNISCHE INFORMATION LESSOR LOHN/GEHALT BEITRAGSNACHWEIS-AUSGLEICH BUCH.-BLATT MICROSOFT DYNAMICS NAV

Saldo-Konto eines Mitarbeiters korrigieren

repostor möchte Ihre TCO senken

INFOBLATT FÜR DAS NEU AUFSETZEN IHRES COMPUTERS

Anleitung zur Einrichtung des WDS / WDS with AP Modus

Live Update (Auto Update)

Wie können Sie eine Client Lizenz wieder freigeben?

Car-Net über WLAN Aufbau einer Internet-Verbindung über WLAN zur Nutzung von Car-Net

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Transkript:

Eine Einführung in Apache CouchDB Java-Forum Stuttgart 2011

Johannes Schneider, cedarsoft GmbH js@cedarsoft.com http://blog.cedarsoft.com http://cedarsoft.com

Vielen Dank

CouchDB The VERY Basics

Vorerfahrung? Nebenan spricht... über... CouchDB The VERY Basics

Inhalt NoSQL (ein paar) theoretische Grundlagen CouchDB praktisch

Was ist CouchDB?

Apache Top-Level-Projekt Apache 2.0 Lizenz Implementiert in Erlang (uuuh...)

Dokumentenorientiert (JSON) Queries per Map/Reduce Inkrementelle Replikation (Master to Master) Bi-Direktionales Konfliktmanagement REST-API

Leichtgewichtig Kein Treiber Internet-fähig

E6 RESTful APIs - warum REST mehr als http und XML ist Dr. Stefan Schlott ab 15:35 Uhr

Erste Eindrücke... Test-DB http://couchdb.cedarsoft.com:5984/_utils sandbox für Spielereien

Multi-Version-Concurrency

1 Client - 1 Database initial put Client w reply _1 v e r ith <Updating file> Update with rev_1 repl _2 v e r h y wi t CouchDB

2 Clients - 1 Database Client A initial put _1 v e r ith w y l rep get with rev_1 <Updating file> put with rev_1 reply w ith rev _2 CouchDB <Updating file> put with rev_1 l i ct f n o -c 409 Client B

2 Clients - 2 Databases initial put Replicate rev_1 rev_1 get with rev_1 Replication rev_2 Konflikt rev_2a rev_2b beide verfügbar rev_2 B Client B Couch B A rev_2 put with rev_1 Couch A Client A put with rev_1

Was ist NoSQL?

Neu entdeckt 2009 Not only SQL

Wir sind geprägt

Datenbank == Relationale Datenbank

gute Erfahrungen gute Tools Know-How

Wo liegt das Problem?

CAP-Theorem Brewer's Theorem

Consistency oder Availability opfern, um Partition Tolerance zu erreichen?

Bitte entscheiden Sie sich jetzt...

Partition Tolerance Funktioniert, auch wenn das Netzwerk mal hustet...

Consistency Jeder sieht zur selben Zeit die selben Daten

Änderungen sind atomar

Intuition: Absolut unerlässlich

Wirklich?

Availability Jeder kann immer Lesen und Schreiben

Wenn ein Netzwerk beteiligt ist, welches unter Umständen Pakete verlieren kann...

... oder Hardware, die unter Umständen ausfallen kann...

... dann können entweder Consistency oder Availability garantiert werden.

Consistency + Availability nur mit perfekter Netzwer-Infrastruktur und Hardware (Irgendwas geht immer schief)

Partition Tolerance P C Consistency A Availability

Partition Tolerance P Immer konsistent. Aber Downtime bei Ausfällen CP C Consistency A Availability

Postgres MySQL relational Partition Tolerance P BigTable Hbase Tabular MongoDB Terrastore Doc Redis Berkley DB Immer konsistent. Aber Downtime bei Ausfällen CP Key-Value C Consistency A Availability

weiterer Tradeoff: Consistency vs Latenz

Typisches Problem Zur Hauptzugriffszeit fällt das System aus

Partition Tolerance Immer verfügbar. P Aber nicht immer konsistent. CP C Consistency AP A Availability

Immer verfügbar. Tabular P Aber nicht immer konsistent. CP C Consistency Cassandra Partition Tolerance CouchDB SimpleDB Dynamo Voldemort AP Doc Key-Value A Availability

CouchDB opfert Consistency um immer verfügbar zu sein auch wenn keine Netzverbindung da ist

Anwendung muss dafür vorbereitet sein!

Replication

CouchDB: Alle DBs sind Master

Inkrementelles Replizieren put Replication Replication Replication

Änderungen werden (eventuell) verzögert propagiert

Eventual Consistency Local Consistency

Konflikte können auftreten

Konflikte müssen (manuell) gelöst werden

Konflikte praktisch kaum relevant wenn beim Design darauf geachtet wird

Updates möglichst vermeiden - statt dessen ergänzen

Beispiel: Blog-Kommentare Alle Kommentare in einem Dokument vs Pro Kommentar ein Dokument?

Wenn Konflikt-Vermeidung /-Resolving funktioniert, dann Availability maximieren Latenz minimieren

Local Data is King

Mindestens im LAN Sowieso auf mobilem Gerät (Notebook, Android, IOS)

Let's talk about Transactions

Gibt es nicht, braucht man nicht

Gibt es nicht, braucht man nicht Schreiben eines Dokuments ist (lokal) atomar

Faustregel Was bei RDBMs in einer Transaktion passiert, gehört bei CouchDB in ein Dokument

Serious Business

Open your mind

Noch ein kleiner Tipp C3: 11:10 Uhr Das nächste große (Java-)Ding Michael Wiedeking

Große Herausforderungen in Java-Land? js@cedarsoft.com

Johannes Schneider, cedarsoft GmbH js@cedarsoft.com http://blog.cedarsoft.com http://cedarsoft.com

Quellen Visual Guide to NoSQL Systems http://blog.nahurst.com/visual-guide-to-nosql-systems CouchDB The Definitive Guide http://guide.couchdb.org/

Nachtrag

Was kommt in eine DB?

Was gemeinsam abgefragt wird

Security...

Wie speichert CouchDB die Daten?

Key Value (JSON-Dokument)

UUID / natural ID Key Value (JSON-Dokument) optional mit Attachments

{ } "_id": "8629b62422fde9744c80f55c21000b09", "_rev": "1-83611c612f3e113912d5c1b6ef21ea77", "firstname": "Markus", "lastname": "Mustermann"

{ } "_id": "8629b62422fde9744c80f55c21000b09", "_rev": "2-ed3408bb4c7fa9cf2d2cb32e34f49f04", "firstname": "Markus", "lastname": "Mustermann", "phones": { "mobile": "+49 177 123456789", "work": "+49 7122 123456484", "private": "+49 7032 123456789" }, "createdat": "2011-07-07"

Warum JSON-Dokumente?

Views Map/Reduce in der Datenbank

Aufbau von B-Trees Key JSON Value JSON

Query in B-Tree über Key-Range GET.../byName?startkey= a &endkey= z

JavaScript (oder andere Sprachen mit Hilfe von View Servern)

map: function(doc){ emit (doc.firstname, doc); }

Resultat Ein B-Tree nach firstname strukturiert

{ "total_rows" : 2, "rows" : [ { "id" : "8629b62422fde9744c80f55c21000b09", "key" : "Markus", "value" : { "_id" : "8629b62422fde9744c80f55c21000b09", "_rev" : "3-3d7a92f5f459935df5b92bedc906bd7e" "firstname" : "Markus", [...] } }, { "id" : "8629b62422fde9744c80f55c21001a74", "key" : "Martha" [...] } ], "offset" : 0 }

Jedes Dokument wird gemappt pro Dokument können 0..n Einträge erstellt werden

{ } "_id": "8629b62422fde9744c80f55c21000b09", "_rev": "2-ed3408bb4c7fa9cf2d2cb32e34f49f04", "firstname": "Markus", "lastname": "Mustermann", "phones": { "mobile": "+49 177 123456789", "work": "+49 7122 123456484", "private": "+49 7032 123456789" }, "createdat": "2011-07-07"

map: function(doc){ emit (doc.phones.mobile,doc); emit (doc.phones.work,doc); emit (doc.phones.private,doc); }

Key und Value sind JSON

Komplexer Key

map: function(doc){ emit ([doc.lastname, doc.firstname], doc); }

kein Schema

map: function(doc){ if (doc.lastname && doc.firstname) { emit ([doc.lastname, doc.firstname], doc); } }

Best practise [...] "@type": "person", "@version": 1, [..]

map: function(doc){ if ( doc['@type'] == "person") { emit ([doc.lastname, doc.firstname], doc); } }

Reduce Mehrere Values werden verrechnet aber bitte auch wirklich reduzieren

Summen-Bildung Kontostand Anzahl Einträge Statistik Durchschnitts-Bewertungen Standard-Abweichung Min/Max/... Unique Values Top N Tags

Queries Start-Key End-Key Reverse Grouping (mit Level)

Query-Einschränkungen Keys müssen bekannt sein kein (performantes) Skip keine absolute Pagination (Linked List Pagination)

Queries machen Spaß Aber es geht nicht alles wie gewohnt Vorher kurz nachdenken

Serious Business: Banken

Konten-Bewegungen mit Transaktionen?

Jede Buchung ein Dokument aktueller Kontostand durch Map/Reduce Keine Konflikte möglich

Cleanup? DB pro Konto und Monat/Quartal? initialer Übertrag