Last active
December 16, 2015 19:00
-
-
Save PHP-Magazin/5482165 to your computer and use it in GitHub Desktop.
Edis: Schnell persistierendes Drop-in Replacement für Redis
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* 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