簡體   English   中英

如何管理R包中的數據庫連接

[英]How to manage a database connection in an R Package

我正在構建一個R包,其主要目的是消除處理專有數據庫的痛苦,該數據庫需要一些相當復雜的SQL查詢才能獲取數據。

因此,與Microsoft SQL Server的連接(由odbcDriverConnect獲得)是此包的一個不變且重要的部分,但我無法弄清楚如何最好地管理它,我希望得到關於如何應該這樣做的建議在R.中實現

我目前的想法是:

  1. 讓用戶在調用任何函數之前確保他們具有有效的連接。 然后,每個函數都connection作為必須傳遞的參數。 這給用戶帶來了負擔。

  2. 在每個函數中,調用get.connection() ,每次都會得到新的連接。 然后允許舊連接自然超時,這似乎是一種草率的方法。

  3. 如上所述,但每次都返回相同的連接。 這似乎不是一個可行的命題,因為我不能通過R. autoReconnect=TRUE防止連接超時,而我在不同語言中使用的其他技巧似乎沒有效果。

在Java中,我可能會有一個DatabaseConnectionPool,其中填充了許多連接,只需從中獲取連接,並根據需要將它們返回到該池。 當我指定autoReconnect=TRUE時,我似乎也沒有在Java中出現超時問題。

任何建議非常感謝。

pool是一個用於池連接的R包,例如數據庫。 如果您使用github軟件包很酷,請查看https://github.com/rstudio/pool 將根據需要重用或重新創建連接。

似乎第二種和第三種方法之間的混合是一種合理的解決方案,即每次都獲得相同的連接,但是在返回連接之前,您可以檢查它是否仍然打開 ,否則創建一個新連接。

它基本上就像您手動實現autoReconnect=TRUE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM