Skip to content

Instantly share code, notes, and snippets.

@PHP-Magazin
Last active December 16, 2015 19:00
Show Gist options
  • Save PHP-Magazin/5482165 to your computer and use it in GitHub Desktop.
Save PHP-Magazin/5482165 to your computer and use it in GitHub Desktop.
Edis: Schnell persistierendes Drop-in Replacement für Redis
/* Da phpmagazin.de auf Grund von Serverproblemen offline ist, werden wir
unsere News temporär als Gist bereitstellen. Sorry für die schmucklose Aufmachung.
Bald werden wir uns wieder im vertrauten Gewand präsentieren. */
Wenn sich im Nachhinein herausstellt, dass man sich für die verkehrte Datenbank
entschieden hat, dann ist der Ärger groß. Oft muss man dann große Teile der Logik
neu schreiben, weil die Ersatz-Datenbank komplett anders angesteuert wird. Besonders
Redis ist hier ein Spezialfall, kommt doch die NoSQL-Datenbank mit einer eigenen
Syntax daher. Und zu allem Übel gehört sie mit ihrem In-Memory-Fokus zu einem der
heißesten Eisen seiner Klasse: Zwar profitiert sie damit voll von den kurzen
Latenzen des RAMs, doch gehen im Falle eines Stromausfalls oder anderen Fehlern
mehrere Minuten, wenn Stunden an Daten verloren. </p>
<p>Wer also hier einen Plan B braucht, um seine Daten unverzüglich in die Sicherheit
eines Massenspeichers zu bringen, dem könnte Edis gefallen: Der Erlang-basierte
Server-Ersatz befindet sich erst in Version 1.0.0, die dahinter stehende App-Schmiede
Inaka hat aber großes mit dem Apache-2.0-lizenzierten Tool vor. Noch dient Edit
nur als Wrapper von Redis-Anfragen für <a href=”http://code.google.com/p/leveldb/”
target=blank title=”LevelDB is a fast key-value storage library”>Googles LevelDB</a>,
dafür aber in Form eines Drop-in Replacements. Es sei hier allerdings angemerkt,
dass noch nicht alle Features übertragen wurden, wie sich dem
<a href=”http://inaka.github.io/edis/comparisons.html” target=blank title=”Edis compared with Redis”>
Vergleich auf der Edis-Website</a> entnehmen lässt. </p>
<p>Seinen Einsatz findet Edis also, wenn sich in Eurem Projekt der Anspruch an
das CAP-Theorem von der Konsistenz entfernt, und dafür in Richtung Verfügbarkeit und
Partitionstoleranz verschiebt. Denn anders als Redis soll der Erlang-Klon einen
anderen Ansatz für das Multi-Master-Management und High Availybility liefern, wie
einer der Autoren <a href=”https://news.ycombinator.com/item?id=5621574”
target=blank title=”rubyrescue auf Hacker News”>in der Diskussion auf Hacker News</a>
erklärt. Der Fokus liegt hierbei darauf, dass möglichst viele Clients gleichezeitig
Lese- und Schreibzugriffe machen können, und weniger darauf, ob die daraus
resultierenden Daten für alle Beteiligten konsistent sind. Um hier den Performance-
Malus durch die Verwendung von Massenspeicher anstelle von RAM wieder wett zu machen,
soll bald eine Clustering-Logik in Edis implementiert werden, die sich ohne Euer
Zutun um die horizontale Skalierung der Datenstruktur kümmert. Mehr Infos und einen
Download-Link findet Ihr auf der Projekt-Homepage. Den Erlang-Code findet Ihr
<a href=”https://github.com/inaka/edis/tree/master/src” target=blank title=”Edis Code”>
auf GitHub</a>.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment