7

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

因此,与 Microsoft SQL Server 的连接(odbcDriverConnect由在 R。

我目前的想法是:

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

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

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

在 Java 中,我可能会拥有一个填充了许多连接的 DatabaseConnectionPool,然后根据需要从该池中获取连接并将它们返回到该池。当我指定autoReconnect=TRUE.

任何建议都非常感谢。

4

2 回答 2

2

pool是用于池连接(如数据库)的 R 包。如果您喜欢使用 github 包,请查看https://github.com/rstudio/pool。将根据需要重用或重新创建连接。

于 2017-03-20T04:57:03.370 回答
1

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

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

于 2013-02-08T19:35:06.430 回答