如何管理R包中的数据库连接

Ina*_*Ina 6 sql-server r rodbc

我正在构建一个R包,其主要目的是消除处理专有数据库的痛苦,该数据库需要一些相当复杂的SQL查询才能获取数据.

因此,与Microsoft SQL Server的连接(由此获得odbcDriverConnect)是此包的一个不变且重要的部分,但我无法弄清楚如何最好地管理这个,我希望有关如何实现这一点的建议在R.

我目前的想法是:

  1. 让用户在调用任何函数之前确保他们具有有效的连接.然后每个函数都有connection一个必须传递的参数.这给用户带来了负担.

  2. 在每个函数中,每次调用get.connection()都会获得新的连接.然后允许旧连接自然超时,这似乎是一种草率的方法.

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

在Java中,我可能会有一个DatabaseConnectionPool,其中填充了许多连接,只需从中获取连接,并根据需要将它们返回到该池.当我指定时,我似乎也没有在Java中出现超时问题autoReconnect=TRUE.

任何建议非常感谢.

iTe*_*ech 1

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

基本上就像您手动实施一样autoReconnect=TRUE