Databases Reference
In-Depth Information
r = function(key, values) {
return values.length;
}
Sobald sie vereinbart sind, werden beide Funktionen der Methode mapReduce
übergeben; ihr dritter Parameter enthält das Ergebnis der Berechnungen:
db.personen.mapReduce(m,r, {out: "distinctPersons"})
Nach Ausführung der Anweisung werfen wir einen Blick auf das Ergebnis:
db.distinctPersons.find()
{ "_id" : null, "value" : 1 }
{ "_id" : "Donald", "value" : 1 }
{ "_id": "Mickey", "value":{"name": "Mickey", "count": 21}}
Wie erwartet, enthält ein Dokument unserer kleinen Collection personen den
Schlüssel name gar nicht. Donald tritt einmal und Mickey insgesamt 21 Mal auf.
Auf den ersten Blick erscheint das MapReduce-Verfahren sehr umständlich. Tat-
sächlich wird es von sehr großen Internet-Firmen genutzt, wurde bei Google ent-
wickelt [Dea08] und dort auch eingesetzt. Viele der NoSQL-DBMS verwenden
den Algorithmus, um Daten zu aggregieren. Auch wenn man aus SQL-Sicht nur
den Kopf schüttelt, wie kompliziert man doch die Anweisung
select name, count( * )
from personen
group by name
ausdrücken kann, besteht der Vorteil darin, dass das Verfahren hochgradig paral-
lelisierbar ist und somit auf vielen Knoten gleichzeitig ausgeführt werden kann.
Wir haben schemafreie Daten in eine MongoDB eingefügt, einzelne Dokumen-
te mit Prädikaten wie name : "Dagobert" ausgewählt und Daten aggregiert.
Auch wenn wir insbesondere die Optionen zur Gestaltung von Abfragen noch
nicht vollständig kennen, können wir uns bereits ein erstes Bild von den Möglich-
keiten und Grenzen dieser Technologie machen.
23.6
Sharding mit MongoDB
Interessant sind natürlich noch die Replikation und das Sharding von Daten.
Auch hier soll keine vollständige Diskussion stattfinden, 9 sondern exemplarisch
aufgezeigt werden, wie einfach ein Cluster aus zwei Knoten aufgesetzt werden
kann, in dem die Daten automatisch und gleichmäßig auf beide Knoten verteilt
werden.
9
Eine umfassende Einführung in MongoDB erfährt man in den beiden Büchern [Cho10] und [Cho11].
 
Search WWH ::




Custom Search