【发布时间】:2012-07-31 20:56:13
【问题描述】:
我有一个 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
这是 map-reduce 模式的一个很好的候选,因为我不关心计算的运行顺序。
问题是我的数据库在一个节点上。 我想同时运行多个映射(我有一台 8 核机器)
据我了解,MongoDb 每个节点只使用一个执行线程——实际上我是串行运行我的数据集。 这是正确的吗?
如果可以,我可以配置每次 map-reduce 运行的进程/线程数吗? 如果我管理并行运行 map-reduce 的多个线程,然后汇总结果,我会显着提高性能(有没有人尝试过)? 如果没有 - 我可以在同一个节点上对我的数据库进行多次复制并“欺骗”mongoDb 以在 2 次复制上运行吗?
谢谢!
【问题讨论】:
标签: multithreading mongodb parallel-processing mapreduce nodes