我目前正在设计一个应用程序,它有一个模块可以从数据库加载大量数据,并根据具体情况通过各种计算将其减少到更小的数据集.
许多更密集的操作具有确定性,并且可以用于并行处理.
如果我有一个循环遍历从db到达的大量数据块,并且每个都调用一个没有副作用的确定性函数,我将如何使它成为程序不等待函数返回而是设置接下来的电话,他们可以并行处理?现在我可以用一种天真的方法来证明这个原则.
我已经阅读过谷歌的MapReduce论文了,虽然我可以在很多地方使用整体原理,但我现在不会针对大型集群,而不是1.0版本的单核多CPU或多CPU机器.所以目前,我不确定我是否可以实际使用该库,或者我必须自己推出一个简单的基本版本.
我处于设计过程的早期阶段,到目前为止,我的目标是C-something(用于速度关键位)和Python(用于生产力关键位)作为我的语言.如果有令人信服的理由,我可能会改变,但到目前为止,我对我的选择很满意.
请注意,我知道从数据库中检索下一个块可能需要更长的时间,而不是处理当前的块,整个过程将受I/O限制.但是,我现在假设它不是并且实际上在此时使用数据库集群或内存缓存或其他东西不是I/O绑定的.