Database Reference
In-Depth Information
Der cURL-Befehl @- legt fest, dass der Standard-Eingang der Console offen
bleibt, bis ein Ctrl + D empfangen wird. Diese Daten werden im HTTP-Body an
die URL gesendet, den wir an den /mapred -Befehl senden (Vorsicht: Die URL
lautet /mapred ,nicht /riak/mapred ).
$ curl -X POST -H "content-type:application/json" \
http://localhost:8091/mapred --data @-
{
"inputs":[
["rooms","101"],["rooms","102"],["rooms","103"]
],
"query":[
{"map":{
"language":"javascript",
"source":
"function(v) {
/ * Aus dem Riak-Objekt Daten extrahieren und als JSON parsen * /
var parsed _ data = JSON.parse(v.values[0].data);
var data = {};
/ * Kapazität mit Raumtyp verknüpfen * /
data[parsed _ data.style] = parsed _ data.capacity;
return [data];
}"
}}
]
}
Ctrl - D
Der /mapred -Befehl verlangt gültiges JSON und hier haben wir die Form un-
serer Mapreduce-Befehle festgelegt. Wir wählen die drei gewünschten Räu-
me, indem wir die „Eingangswerte“ als Array mit [bucket, key] -Paaren an-
geben. Das Wesentliche bei diesen Einstellungen findet sich aber unter dem
query -Wert, der ein Array von JSON-Objekten akzeptiert, das Objekte ent-
hält, bei denen map , reduce und/oder links die Schlüssel bilden (mehr über
Links erfahren Sie später).
Damit werden die Daten abgerufen ( v.values[0].data ), die Werte als JSON-
Objekt geparst ( JSON.parse(...) ) und die Kapazität ( parsed _ data.capacity )
zusammen mit dem Zimmertyp ( parsed _ data.style ) zurückgegeben. Das Er-
gebnis sieht dann etwa so aus:
[{"suite":6},{"single":1},{"double":1}]
Das sind einfach die JSON-Daten der Objekte für die Zimmer 101, 102, und
103.
Wir müssen die Daten nicht im JSON-Format ausgeben. Wir können den
Wert jedes Schlüssels in das umwandeln, was wir brauchen. Wir haben nur
auf die Body-Daten zugegriffen, aber wir hätten auch Metadaten, Link-Infor-
mationen, den Schlüssel oder die Daten selbst abrufen können. Letztlich ist
Search WWH ::




Custom Search