R 并行进程的数据库连接池

Ale*_*lex 3 mysql postgresql parallel-processing r

我有一个PostgreSQL使用包的数据库连接RPostgreSQL。目前我执行以下操作:

  1. 从我的数据库中检索列表
  2. 通过 for 循环运行列表,进行计算并将值写回数据库

我对并行化这个过程很感兴趣。显而易见的是使用foreach同名包中的功能。但是,我们需要使用连接池:在这种情况下,如果有人知道我可以用来共享我的数据库连接的并行后端,我很感兴趣。这是一个具体的未解决的例子:

foreach %dopar% + RPostgreSQL

在上述情况下,registerDoMC并行后端中没有连接池,需要在每个dopar工作程序中打开和关闭连接。registerDoSnowsnow包中查看并行后端也没有提供此功能。

另一种方法是使用mclapply而不是dopar. 在这种情况下,有谁知道是否或如何与每个mclapply工作人员共享数据库连接?

Ste*_*ton 5

您不能在任何通用 R 并行编程包中的不同工作人员之间共享数据库连接,因为工作人员是单独的进程。但是,您可以为每个工作人员创建一个连接,并让工作人员将其用于他们执行的每个任务。我在回答您引用的问题时讨论了如何做到这一点。