Mongodb-Karte auf Multicore-Server reduzieren

Ich habe eine Mongodb mit Tausenden von Datensätzen, die sehr lange Vektoren enthalten. Ich suche nach Korrelationen zwischen einem Eingabevektor und meinem MDB-Datensatz unter Verwendung eines bestimmten Algorithmus.

Psudo-Code:

function find_best_correlation(input_vector)
    max_correlation = 0
    return_vector = []
    foreach reference_vector in dataset:
        if calculateCorrelation(input_vector,reference_vector) > max_correlation then:
            return_vector = reference_vector
    return return_vector

Dies ist ein sehr guter Kandidat für Kartenreduzierungsmuster, da mir die Reihenfolge, in der die Berechnungen ausgeführt werden, egal ist.

Das Problem ist, dass sich meine Datenbank auf einem Knoten befindet. Ich möchte viele Zuordnungen gleichzeitig ausführen (ich habe eine 8-Kern-Maschine)

Soweit ich weiß, verwendet MongoDb nur einen Ausführungsthread pro Knoten - in der Praxis wird mein Datensatz seriell ausgeführt. Ist das richtig?

Wenn ja, kann ich die Anzahl der Prozesse / Threads pro Map-Reduce-Lauf konfigurieren? Wenn ich mehrere Threads verwalte, die Map-Reduce parallel ausführen, und dann die Ergebnisse aggregiere, habe ich dann eine erhebliche Leistungssteigerung (hat jemand versucht)? Wenn nicht - kann ich mehrere Replikationen meiner Datenbank auf demselben Knoten haben und mongoDb "tricksen", um mit 2 Replikationen zu laufen?

Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage