Request-basiert
Abbildung 3 zeigt exemplarisch eine solche Anwendungsarchitektur. Ein Nutzer, der eine Änderung in der Replik der Applikation auf dem Berliner Server umsetzen möchte, erstellt dafür ein Request-Dokument in der Request-Datenbank. Die Anwendungskonfiguration (in der Config-DB) bestimmt, dass alle Änderungen der Daten ausschließlich auf dem Münchener Server umzusetzen sind. Das Request-Dokument repliziert auf den Münchener Server, wo der Request ausgeführt wird.
Da sich derzeit in Couch DB Leseberechtigungen nur datenbankweit vergeben lassen, ist es sinnvoll, derartige Konfigurationsinformationen in einer separierten Konfigurationsdatenbank abzulegen, die dann ebenso Teil der replizierenden Anwendungssuite wird.
Nicht direkt ein Designprinzip, aber dennoch dazu geeignet, die Wahrscheinlichkeit von Datenkonflikten zu verringern, sind Maßnahmen zur möglichst schnellen Verbreitung von Änderungen. Bewährt hat sich hierfür die Hub-Spoke-Topologie: Die Clients (Spokes, Speichen) replizieren jeweils mit einer Zentralinstanz (Hub, Nabe). Die Hubs gleichen ihren Datenbestand untereinander mit hoher Frequenz ab, sodass auch topologisch entfernte Clients Änderungen schnell erfahren.
Hintergrundprozesse
Couch DB galt anfänglich als nur für kleine bis mittlere Anwendungs-Setups geeignet. Ein typisches Szenario war das private Adressbuch, das zwischen Smartphone, Notebook und heimischem PC hin und her repliziert. Durch Umsetzung der oben genannten Designprinzipien lassen sich aber auch komplexere Anforderungen bedienen. Jedoch spätestens wenn Eskalationen, SLAs und Notifikationen Teil der Anforderungen werden, sind zeitgesteuerte Hintergrundprozesse notwendig. Bedauerlicherweise existiert in Couch DB bisher kein interner Scheduler, um Hintergrundprozesse anzustoßen. Natürlich lässt sich beispielsweise unter Linux der Cron-Daemon als Scheduler benutzen, die Nachteile eines solchen Designbruchs sind jedoch Plattformabhängigkeit, nicht konsistente Berechtigungen und die Unmöglichkeit, derartige anwendungsrelevante Konfigurationen in die Replikation einzubeziehen.
Weniger die Dezentralität von Anwendungen als vielmehr die massive Skalierung sind der Fokus einiger interessanter Projekte im Ökosystem rund um Couch-DB. Es existieren bereits verschiedene Lösungen und Ansätze, um horizontale Skalierung über mehrere Knoten zu verwirklichen.
Couch-DB-Lounge [5] ist ein Framework zur Partitionierung per HTTP-Reverse-Proxy und basiert auf dem Webserver/Proxy Nginx. Es umfasst ein Nginx-Modul sowie einen Python-Daemon und arbeitet als Consistent Hashing-Ring über alle Dokumente. Mit Hilfe der Datei »shards.conf«
lässt sich die Datenpartitionierung (Sharding) definieren. Daten-Failover mit verschiedenen Nodes ist möglich.
Eine weitere Möglichkeit für die Partitionierung bietet Pillow [6]. Es stammt von dem Norweger Knut Hellan, der in dem überschaubaren Softwareprojekt insbesondere seine eigenen Anforderungen an die Fähigkeit zum automatischen Resharding umgesetzt hat.
Couch App
Wer einmal selbst eine Anwendung für Couch DB entwickeln möchte, dem sei als nützliches Entwicklungstool Couch App [4] empfohlen. Dabei handelt es sich um eine erweiterbare Sammlung von Python-Skripten, die eine Couch-DB-Applikation als Dateien in einer definierten Ordnerstruktur anlegt. In dieser Form lässt sich der Quelltext in ein verteiltes Versionskontrollsystem wie Git einchecken.
Das Deployment findet statt, indem der Entwickler die Dateien in eine Couch-DB-Instanz lädt. Couch App unterstützt damit den dezentralen Ansatz von Couch DB, indem es orthogonal zur replizierenden lauffähigen Couch-DB-Anwendung auch den Entwicklungsprozess verteilen kann.
Couch App setzt mindestens Python 2.5 voraus und lässt sich einfach installieren. Nach der Installation erzeugt der Befehl
couchapp generate Anwendung
eine neue Applikation. Die beiden Zeilen
cd Anwendung/ couchapp generate show Funktion
schreiben in das Verzeichnis »shows«
die Datei »hello.js«
, die der Entwickler nach dem Hinzufügen des Javascript-Programmcode mit
couchapp push http://localhost:5984/Anwendung
in die lokale Couch-DB-Instanz pusht.
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 4 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





