Database Reference
In-Depth Information
Schlüssel und der _ id des Dokuments, das ihn erzeugt hat. Das zweite Ar-
gument, values , ist ein Array mit den zu den Schlüsseln gehörenden Werten.
Das dritte Argument, rereduce , ist ein Boolescher Wert, der wahr ist, wenn
dieser Aufruf eine erneute Reduktion ( rereduction ) ist. Das bedeutet, dass
bei diesem Aufruf anstelle der Schlüssel und Werte, die von den Mapper-
Aufrufen emittiert wurden, die Produkte vorangegangener Reducer-Aufrufe
übergeben werden. In diesem Fall ist der key -Parameter null .
Reducer-Aufrufe durchlaufen
Lassen Sie uns die Ausgabe einmal beispielhaft durchgehen.
Wir wollen die Dokumente (Künstler) mit Titeln betrachten, die als „ambient“
getaggt wurden. Die Mapper gehen die Dokumente durch und emittieren
Schlüssel/Wert-Paare der Form „ambient“/1.
An irgendeinem Punkt werden so viele emittiert worden sein, dass CouchDB
einen Reducer aufruft. Dieser Aufruf könnte wie folgt aussehen:
reduce(
[[ "ambient" , id1], [ "ambient" , id2], ...],
// Schlüssel sind gleich
[1, 1, ...],
// Alle Werte sind 1
false
// rereduce ist falsch
)
Erinnern Sie sich daran, dass wir in unserer Reducer-Funktion die sum me der
values berechnen. Da die Werte alle 1 sind, ist die Summe einfach die Länge
- also die Anzahl der Tracks, die den „ambient“-Tag enthalten. CouchDB
hält diesen Rückgabewert zur späteren Verarbeitung fest. Lassen Sie uns
annehmen, dass diese Zahl 10 ist.
Etwas später, nachdem CouchDB diese Aufrufe wiederholt ausgeführt hat,
entscheidet es sich, die Zwischenergebnisse der Reducer zu kombinieren,
indem es einen Rereduce ausführt:
reduce(
null,
// key-Array ist null
[10, 10, 8],
// Werte sind die Ergebnisse früherer Reducer-Aufrufe
true
// rereduce ist wahr
)
Unsere Reducer-Funktion berechnet wieder die sum() der values . Diesmal
summieren sich die Werte auf 28 . Rereduce-Aufrufe können rekursiv sein.
Sie gehen solange weiter, bis die Reduce-Operation abgeschlossen ist, d. h.,
bis alle Zwischenwerte zu einem zusammengefasst wurden.
Die meisten Mapreduce-Systeme, einschließlich diejenigen, die von den an-
deren in diesem Buch behandelten Datenbanken wie Riak und MongoDB
Search WWH ::




Custom Search