Database Reference
In-Depth Information
sie in einer Reihe von Szenarien unglaublich performant sein, bei komplexe-
ren Abfragen und Aggregationen sind sie jedoch wenig hilfreich.
Wie bei relationalen Datenbanken stehen auch hier viele Open-Source-Lö-
sungen zur Verfügung. Einige der bekannteren Vertreter dieser Gattung sind
memcached (und dessen Cousins memcachedb und membase), Voldemort
und die beiden, die wir in diesem Buch betrachten: Redis und Riak.
Riak
Riak ,dasinKapitel3, Riak , auf Seite 57 behandelt wird, ist mehr als ein
Schlüssel/Wert-Speicher. Es unterstützt von Grund auf Web-Konzepte wie
HTTP und REST. Es stellt eine originalgetreue Implementierung von Ama-
zons Dynamo dar, besitzt aber fortgeschrittene Features wie Vektoruhren zur
Auflösung von Konflikten. Werte können bei Riak alles sein, von reinem Text
über XML bis hin zu Bilddaten. Die Beziehungen zwischen Schlüsseln wer-
den über benannte Strukturen, sog. Links , beschrieben. Als eine der weniger
bekannten Datenbanken in diesem Buch gewinnt Riak zunehmend an Popu-
larität, und sie ist die erste, über die wir reden, die fortgeschrittene Queries
über mapreduce unterstützt.
Redis
Redis bietet komplexe Datentypen wie sortierte Sets (Mengen) und Hashes
sowie grundlegende Messaging-Muster wie Publish/Subscribe und blockie-
rende Queues. Es besitzt darüber hinaus einen der stabilsten Query-Mecha-
nismen für KV-Stores. Und weil Schreiboperationen zuerst im Speicher ge-
cached werden, bevor sie über einen Commit auf die Platte geschrieben wer-
den, ist die Performance von Redis beachtlich, auch wenn bei einem Hard-
ware-Fehler die Gefahr eines Datenverlustes steigt. Diese Eigenschaft macht
sie zu einem guten Kandidaten zum Caching unkritischer Daten und als
Message-Broker. Wir heben sie uns bis zum Schluss auf - siehe Kapitel 8,
Redis , auf Seite 285 - , so dass wir mit Redis und anderen Datenbanken eine
harmonische Multidatenbank-Anwendung aufbauen können.
Spaltenorientiert
Spaltenorientierte Datenbanken werden so genannt, weil der wichtigste As-
pekt ihres Entwurfs darin besteht, dass die Daten einer gegebenen Spalte
(im Sinne einer zweidimensionalen Tabelle) zusammen gespeichert werden.
Im Gegensatz dazu werden bei zeilenorientierten Datenbanken (wie einem
RDBMS) Informationen einer Zeile zusammen festgehalten. Der Unterschied
mag belanglos erscheinen, doch die Auswirkungen sind enorm. Bei spalten-
orientierten Datenbanken ist das Einfügen von Spalten mit geringen Kosten
Search WWH ::




Custom Search