Карта Mongodb уменьшить на многоядерном сервере
У меня есть mongodb с тысячами записей с очень длинными векторами. Я ищу корреляции между входным вектором с моим набором данных MDB, используя определенный алгоритм.
псевдокод:
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
Это очень хороший кандидат для схемы уменьшения карты, так как мне не важен порядок выполнения вычислений.
Проблема в том, что моя база данных находится на одном узле. Я хотел бы запустить много отображений одновременно (у меня 8-ядерный компьютер)
Насколько я понимаю, MongoDb использует только один поток выполнения для каждого узла - на практике я запускаю свой набор данных последовательно. Это правильно?
Если да, могу ли я настроить количество процессов / потоков на один прогон карты? Если я буду управлять несколькими потоками, выполняющими map-Reduction параллельно, а затем объединю результаты, получу ли я существенное повышение производительности (кто-нибудь пробовал)? Если нет - могу ли я иметь несколько копий моей БД на одном узле и "трюк"? mongoDb для запуска на 2 репликации?
Спасибо!