Open Source im professionellen Einsatz

Anwendungsdesign

Die Möglichkeit, dass in einer Couch-DB-Anwendung Replikationskonflikte entstehen, sollten Entwickler zwingend im Anwendungsdesign berücksichtigen. In den Lotus-Notes-Hochzeiten wurden nicht selten hochbezahlte IT-Consultants beauftragt diese zu lösen. Verschärfend wirkte der Umstand, dass häufig Workflow-Hintergrundprozesse diese mitverursachten, sodass keine automatisierte Konfliktlösung in Betracht kam.

Es gibt daher einige wichtige Designprinzipien, die Replikationskonflikte innerhalb einer Anwendung vermeiden helfen. Dazu gehört zunächst die Verteilung der Daten auf einzelne Dokumente. Beispielsweise sollte eine CRM-Anwendung die verschiedenen Daten innerhalb eines Kundenkontextes auf einzelne Dokumente aufspalten. Während das Hauptdokument nur die reinen Stammdaten des Kunden enthält, sind Kampagnendaten, Kommunikationsprotokolle und Ähnliches jeweils in eigenen Dokumenten abgebildet.

Schreibrechte

Ebenfalls empfehlenswert ist ein feingranulares Autorisierungsmodell der Schreibberechtigungen. Das oben genannte Hauptdokument sollten nur organisatorisch zuständige Mitarbeiter des Marketings ändern dürfen. Couch DB definiert die Schreibberechtigungen innerhalb einer Datenbank über die Auswertung der Validierungsfunktionen aller Designdokumente einer Datenbank. Sinnvoll ist auch eine Abstraktion über Rollen, wie dies exemplarisch der Javascript-Code in Listing 1 umsetzt.

Listing 1

Rollen

01 function(new_doc, old_doc, userCtx) {
02  if(userCtx.roles.indexOf("marketing") == -1) {
03     throw({unauthorized: "Sie haben nicht die Rolle 'marketing'."});
04   }
05 }

Sollen dennoch mehrere Parteien ein Dokument manipulieren dürfen, ist eine Request-basierte Anwendungsarchitektur eine gute Wahl (Abbildung 3). Diese folgt dem Grundsatz, dass prinzipiell alle Parteien ihren Änderungsauftrag in eine Request-Datenbank einstellen. Die Anwendungskonfiguration (»Config-DB« ) enthält die Information, auf welchem Datenbankserver die Requests abgearbeitet werden.

Abbildung 3: Bei mehreren schreibberechtigten Nutzern empfiehlt sich eine Request-basierte Anwendungsarchitektur.

Abbildung 3: Bei mehreren schreibberechtigten Nutzern empfiehlt sich eine Request-basierte Anwendungsarchitektur.

Ein Szenario hierfür wäre die regelmäßige Dokumentenaktualisierung durch ein zentral gepflegtes Schlagwortregister bei synchroner redaktioneller Dokumentenpflege. Eine solche Architektur vermeidet nicht nur Konflikte, sondern erhöht auch die Anwendungssicherheit, indem beispielsweise externe Schnittstellen keinen direkten Schreibzugriff auf die eigentliche Anwendung erhalten.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook