Database Reference
In-Depth Information
Erneut müssen Sie eine Änderung an der
app.config
-Datei vornehmen. Än-
dern Sie das Storage-Backend (wie nachfolgend zu sehen) von bitcask in eLe-
velDB und starten Sie die Server neu:
{riak
_
kv, [
%% Storage
_
backend specifies the Erlang module defining the
%% storage mechanism that will be used on this node.
{storage
_
backend, riak
_
kv
_
eleveldb
_
backend},
eLevelDB ist eine Erlang-Implementierung des Google Key/Value-Stores na-
mens LevelDB.
14
Diese neue Backend-Implementierung erlaubt Sekundärin-
dizes in Riak.
Sobald unser System bereit ist, können wir jedes Objekt mit einer beliebigen
Zahl von Header-Tags indexieren. Diese
index entries
definieren, wie ein Ob-
jekt indexiert werden soll. Die Feldnamen beginnen mit
x-riak-index-
und
enden mit
_
int
oder
_
bin
für Integer- oder Binärwerte (alles außer Integer).
Bei Blue II, dem Maskottchen der Butler Bulldogs, wollen wir über den Na-
men der Universität, dessen Maskottchen dieser Hund (
butler
) ist, indexie-
ren, aber auch über die Versionsnummer (Blue 2 ist das zweite Bulldog-Mas-
kottchen).
$ curl -X PUT http://localhost:8098/riak/animals/blue
-H "x-riak-index-mascot
_
bin: butler"
-H "x-riak-index-version
_
int: 2"
-d '{"nickname" : "Blue II", "breed" : "English Bulldog"}'
Sie werden bemerkt haben, dass die Indizes nichts mit den Werten zu tun
haben, die im Schlüssel gespeichert sind. Das ist tatsächlich ein sehr mäch-
tiges Feature, da wir Daten orthogonal zu den von uns gespeicherten Werten
indexieren können. Wenn Sie also ein Video als Wert speichern wollen, kön-
nen Sie es dennoch indexieren.
Den Wert über den Index abzurufen, ist eine einfache Sache.
$ curl http://localhost:8098/riak/animals/index/mascot
_
bin/butler
Zwar sind die Sekundärindizes bei Riak ein großer Schritt in die richtige
Richtung, dennoch liegt noch ein langer Weg vor uns. Wenn Sie beispielswei-
se Datumswerte indexieren wollen, müssen Sie einen String speichern, der
entsprechend sortiert werden kann - etwa
"JJJJMMTT"
. Die Speicherung von
Fließkommawerten verlangt zuerst die Multiplikation mit einem signifikan-
ten Vielfachen von 10 und die Speicherung als Integerwert - etwa 1.45 * 100