Database Reference
In-Depth Information
alles möglich, weil wir jeden Schlüssel auf irgendeinen anderen Wert abbil-
den.
Wenn Ihnen danach ist, können Sie alle 10000 Zimmer verarbeiten, indem
Sie die input-spezifischen [bucket, key]-Arrays durch das rooms -Bucket er-
setzen:
"inputs":"rooms"
Ein freundliche Warnung: Das liefert eine Menge Daten zurück. Abschlie-
ßend ist noch erwähnenswert, dass Mapreduce-Funktionen seit Riak Version
1.0 durch ein Subsystem namens Riak Pipe verarbeitet werden. Beim alten
System werden Sie das veraltete mapred_system nutzen. Als Endanwender
betrifft Sie das nicht sonderlich, es wirkt sich aber spürbar auf Geschwin-
digkeit und Stabilität aus.
Stored Functions
Eine weitere Möglichkeit, die Riak uns bietet, ist die Speicherung der map-
Funktion als Bucket-Wert. Das ist ein weiteres Beispiel dafür, den Algorith-
mus auf die Datenbank zu verschieben. Das ist eine Stored Procedure oder
genauer gesagt, eine benutzerdefinierte Funktion - mit einer ähnlichen Phi-
losophie, die seit Jahren bei relationalen Datenbanken verwendet wird.
$ curl -X PUT -H "content-type:application/json" \
http://localhost:8091/riak/my _ functions/map _ capacity --data @-
function(v) {
var parsed _ data = JSON.parse(v.values[0].data);
var data = {};
data[parsed _ data.style] = parsed _ data.capacity;
return [data];
}
Nachdem unsere Funktion gespeichert wurde, führen wir sie aus, indem wir
auf den Bucket und Schlüssel zeigen, der die Funktion enthält.
$ curl -X POST -H "content-type:application/json" \
http://localhost:8091/mapred --data @-
{
"inputs":[
["rooms","101"],["rooms","102"],["rooms","103"]
],
"query":[
{"map":{
"language":"javascript",
"bucket":"my _ functions",
"key":"map _ capacity"
}}
]
}
Search WWH ::




Custom Search