如何管理在R包一个数据库连接(How to manage a database connection

2019-08-16 20:16发布

我建立的R包,它的主要目的是抽象掉处理的专有数据库,需要一些相当复杂的SQL查询,以便获取数据了疼痛。

因此,使用Microsoft SQL服务器(通过获得连接odbcDriverConnect )是这个包的一个恒定的重要组成部分,但我不能工作了如何最好地管理这一点,我希望的意见,这应该怎么在R.实施

我现在的想法是:

  1. 使用户确保他们有一个有效的连接,他们调用任何函数之前。 每个函数然后有connection作为必须被传递的参数。 这使得一个麻烦使用者。

  2. 在每一个功能,请调用get.connection()这将每次获得新的连接。 那么旧的连接被允许自然超时,这似乎是一个草率的做法。

  3. 如上所述,但每次返回相同的连接。 这似乎不是一个可行的建议,因为我无法阻止通过R.超时连接autoReconnect=TRUE ,我已经在不同语言中使用其他的技巧似乎没有任何效果。

在Java中,我可能会填充了一系列连接的DatabaseConnectionPool,只是抓住从连接,并根据需要他们,游泳池返回。 我也似乎没有在Java中的超时问题,当我指定autoReconnect=TRUE

任何建议非常赞赏。

Answer 1:

pool是R包汇集诸如数据库的连接。 如果你很酷使用GitHub的包,看看https://github.com/rstudio/pool 。 将重复使用或需要重新连接。



Answer 2:

看来,第二和第三种方法之间的混合,即是每次都得到相同的连接,但是在返回您可以在连接之前,合理的解决方案检查它是否仍然打开 ,否则创建一个新的连接。

它基本上是因为如果要手动执行autoReconnect=TRUE



文章来源: How to manage a database connection in an R Package