MongoDB, HBase, Redis, Apache Cassandra, Couch DB

Datenflut bereitet NoSQL den Weg

23.04.2013
Von Eberhard Wolff, Kai Spichale, Thomas  Westphal und Andreas Hartmann

Redis

Die Redis-Website: Das in C geschriebene Open-Source-Projekt verwendet als NoSQL-Verfahren einen Key-Value-Store und ist auf hohe Geschwindigkeit eingerichtet.
Die Redis-Website: Das in C geschriebene Open-Source-Projekt verwendet als NoSQL-Verfahren einen Key-Value-Store und ist auf hohe Geschwindigkeit eingerichtet.

Redis ist ein in C geschriebenes Open-Source-Projekt mit einer liberalen Lizenz und unterstützt die meisten gängigen Plattformen. Es läuft als Server-Prozess mit einem sehr einfachen Protokoll. Bibliotheken zum Ansprechen des Servers gibt es für zahlreiche Programmiersprachen. Redis fällt in die Kategorie der Key-Value-Stores, wobei die Werte auch komplexere Typen wie Listen, sortierte oder unsortierte Mengen oder auch Maps sein können. Dadurch sind auch komplexere Strukturen abbildbar.

Auf Schnelligkeit getrimmt

Außerdem eröffnen sich weitere Möglichkeiten für die Lösung typischer Probleme bei der Implementierung großer Systeme: So kann eine Liste auch sehr einfach eine Warteschlange implementieren. Man legt die Aufgaben in die Liste, und die Bearbeiter holen sich jeweils das oberste Element.

Redis ist vor allem auf hohe Geschwindigkeit ausgerichtet: Die Daten werden meistens im Speicher gehalten und asynchron auf die Platte geschrieben oder auch auf andere Server repliziert. Dadurch erreicht Redis eine sehr hohe Performance: Beim Lesen lassen sich die Daten direkt aus dem RAM auslesen, und beim Schreiben blockiert der Zugriff auf die Festplatte das System nicht, weil er asynchron im Hintergrund ausgeführt wird. Durch Replikation lässt sich der Lese-Durchsatz weiter erhöhen, indem zusätzliche Server für Lese-Operationen zur Verfügung gestellt werden.

Wenn so viele Daten zu verwalten sind, dass sie nicht mehr in den Speicher passen, kann eine Redis-eigene Virtual-Memory-Verwaltung die Daten auch auf die Platte auslagern. Darüber hinaus ist es möglich, ähnlich wie in einem Cache, die Daten mit einer Lebensdauer (Time to Live = TTL) auszustatten, nach der sie aus der Datenbank verschwinden.

Redis arbeitet mit Master-Slave-Replikation. Das heißt, es gibt einen Master-Server für Lese- und Schreiboperationen und beliebig viele Slave-Server. Diese können lediglich Leseoperationen abarbeiten und werden ständig mit dem Master synchronisiert. Bei einem Failover übernimmt einer der Slave-Server die Rolle des ausgefallenen Masters. Aufgrund dieser Master-Slave-Rollenaufteilung kann Redis starke Konsistenz garantieren.

Sharding soll folgen

Eine Cluster-Funktion mit Sharding ist für Redis geplant. Bei Sharding handelt es sich um ein Verfahren zur Aufteilung von großen Datenmengen auf mehrere Datenbank-Server. Ein Beispiel sind Kunden, die je nach Region auf einem anderen Server gespeichert oder nach Kundennummer aufgeteilt werden. Durch Sharding kann es mehrere Master geben, die für jeweils einen Teil der Daten verantwortlich sind. Außerdem wird an der Möglichkeit gearbeitet, in der Datenbank Skripte in der Sprache Lua auf die Daten anzuwenden. Unter http://try.redis-db.com besteht die Möglichkeit, eigene Erfahrungen mit der Datenbank ohne Installation zu sammeln.

Redis

Vorteile:

+ Hohe Performance durch Halten der Daten im Speicher und asynchrones Schreiben auf die Festplatte;

+ nützliche Datentypen für verteilte Algorithmen.

Nachteile:

- Keine Unterstützung für komplexe Datentypen;

- ohne Clustering eher für kleine Datenmengen geeignet.

Im Video: NoSQL-Datenbanken - Redis