Mar 2010

Scalaris - Ein Peer-to-Peer NoSQL-System mit Transaktionen

Überblick
Scalaris erweitert das Anwendungsspektrum bisheriger Peer-to-Peer-Systeme, die beispielsweise in Tauschbörsen genutzt werden, um strenge Konsistenz und Transaktionen, zwei Eigenschaften traditioneller Datenbankmanagementsysteme – ohne die Vorteile des Peer-to-Peer-Computing wie Ausfalltoleranz und Skalierbarkeit aufzugeben. Dies gelingt durch geschickte Einbettung ausfalltoleranter Algorithmen in die zugrundeliegenden strukturierten Overlay-Netzwerke.

Hintergrund
Globale Informationsdienste, die aufgrund wachsender Datenvolumina und hoher Zugriffsraten nicht länger von einzelnen zentralisierten Servern realisiert werden können, sondern mit Hilfe vieler weltweit verteilter Computer erbracht werden, benötigen neue Softwarearchitekturen, um Ausfälle einzelner Systeme ohne Betriebsunterbrechung tolerieren zu können.

Insbesondere sogenannte Peer-to-Peer Systeme und strukturierte Overlay-Netzwerke bieten hierfür eine attraktive Basis. Sie betrachten jeden Computer (Peer) als gleichwertige Ressource, die genutzt wird, um den geforderten Dienst zu erbringen. Dadurch vermeiden sie Verfügbarkeits- und Skalierbarkeitsengpässe, die bei dedizierter Rollenzuweisung zwangsläufig entstehen würden. Durch Selbstregulation und –überwachung passen sich strukturierte Overlay-Netzwerke autonom den jeweils zur Verfügung stehenden Ressourcen und Nutzungsbedingungen optimal an. Als Datenstruktur betrachtet erlauben sie die Speicherung von Schlüssel-Wert-Paaren. Im Gegensatz zu relationalen Datenbanken bieten solche Systeme nur einen deutlich reduzierten Funktionsumfang, der oft nur einfache Lese- und Schreib-Operationen auf einem verteilen Dictionary (Map) beinhaltet.  Insbesondere Transaktionen werden von NoSQL Systemen nicht unterstützt.

Wem hilft Scalaris?
Scalaris kann die aufwendigen Backends heutiger Web 2.0-Anwendungen ersetzen, indem es mit Peer-to-Peer-Algorithmen aus unzuverlässigen Einzelsystemen einen ausfalltoleranten, zuverlässigen verteilten Key-Value-Store bildet. Dies spart Kosten für die Serverinfrastruktur, macht sie ausfalltolerant und vereinfacht durch Selbstkonfiguration den Betrieb.

Im Gegensatz zu anderen Key-Value-Stores, wie z.B. Dynamo, Hypertable oder CouchDB, garantiert Scalaris eine strenge Datenkonsistenz mit atomaren Transaktionen bei nebenläufigen Operationen (ACID-Eigenschaft).

scalaris


Scalaris ist in drei Architekturebenen für Skalierbarkeit Replikation und Transaktionen realisiert (siehe Abbildung). Die unterste Ebene bildet aus Einzelsystemen ein spezielles strukturiertes Overlay-Netzwerk, das Flexibilität für Lastverteilung und Zugriffszeit-Optimierung bietet -- beides wichtige Aspekte für die darüberliegenden Schichten.

Um Ausfallsicherheit gewährleisten zu können, werden Daten in der zweiten Ebene repliziert gespeichert. Der Replikationsgrad für ein Scalaris-System kann je nach Bedarf gewählt werden.

Alle Datenbankänderungen werden in Transaktionen ausgeführt, so dass die Kopien der beteiligten Daten atomar geändert werden. Zur Steuerung der Transaktionen wird der Paxos-Commit-Algorithmus verwendet, der auch beim Ausfall einzelner Server die effiziente und korrekte Ausführung der Transaktionen garantiert. Peers können ihre Daten mittels eines Storage-Backends speichern, beispielsweise auf der Basis von Tokyo Cabinet.

P2P in Rechenzentren.
Im Gegensatz zu P2P-Tauschbörsen, die strukturierte Overlay-Netze zwischen den Rechnern der Heimanwender aufbauen, nutzt Scalaris die Vorteile dieser Systeme für Server in Rechenzentren. Es werden dadurch ohne den Einsatz teurer Speziallösungen:

- Selbstorganisation und -konfiguration
- Skalierbarkeit und
- Ausfalltoleranz

erreicht.

Ein Scalaris – mehrere Anwendungen.
Um mehrere Anwendungen getrennt in einer Scalaris-Instanz auszuführen, wird jeder Anwendung ein Teil des Overlays zugeordnet. Die Trennung der Anwendungen in der logischen Struktur erlaubt es dank der Flexibilität unseres Overlays präzise einzelne Server den verschiedenen Anwendungen zuzuordnen. Gleichzeitig kann flexibler auf geänderte Leistungsanforderungen reagiert werden, indem dynamisch Server zwischen den Anwendungen ausgetauscht werden.

Ein Scalaris – mehrere Rechenzentren.
Für global agierende Dienstleister kann Scalaris die Server mehrerer Rechenzentren effizient zu einer großen Datenbasis zusammenschließen. Durch die Trennung der Applikationen in der logischen Ringstruktur des Overlay-Netzwerks können individuell jedem Replikat und jeder Anwendung Server in verschiedenen Rechenzentren zugeordnet werden, um die Daten möglichst nahe beim Anwender zu speichern und so die Zugriffszeit zu minimieren.

Scalaris (scalaris.googlecode.com) wird vom Zuse-Institut Berlin (www.zib.de) und von der Firma onScale solutions (www.onscale.de) entwickelt, ist Open-Source und kann von Anwendungen bequem über ein JSON-Interface, eine Erlang- oder eine Java-Schnittstelle angesprochen werden. Ein erweiterter Funktionsumfang, kommerzieller Support, Anwendungsanpassung und Beratung wird durch die Fa. onScale solutions angeboten.

Eigenschaften von Scalaris:
- Transaktionen
- strenge Datenkonsistenz
- Skalierbarkeit
- geringer Wartungsaufwand
- Selbstorganisation
- Ausfalltoleranz
- autom. Lastverteilung
- Replikation