RJDBC を介して MS SQL データベースへの SQL 接続を (再) 使用するためのベスト プラクティスを理解したいと思います。
次の 3 つのシナリオが考えられます。
- 接続をグローバル変数に保存し、一度初期化して、コード内のあらゆる場所で使用します
- リクエストごとに新しい接続を作成する
- より複雑なことを行います。たとえば、開いている接続のプールを事前設定し、必要に応じてプールからの接続を (再) 使用します。
私は数十のクライアントを持つ光沢のあるアプリケーションでコードを使用しています。方法 1 を使用すると何か問題が発生するのではないかと心配しています。そのため、方法 2 を使用して、以下のコードですべてのリクエストに対して新しい接続を作成します。
このアプローチには、パフォーマンス、データベース リソースへの負担など、いくつかの潜在的な欠点があることがわかります。
したがって、私の具体的な質問は次のとおりです。
A. 光沢のあるアプリケーション全体で、RJDBC を介して MS SQL データベースへの単一の接続を安全に使用できますか?
B. 上記のシナリオ 2 に実際の欠点 (メモリ リーク、パフォーマンスなど) はありますか?
NewConnection <- function() {
file = NULL
# make it work on three different OSes - Linux, MacOS, Windows
for (path in c('/Users/victor/Documents/R/sqljdbc_3.0/enu/sqljdbc4.jar',
'/home/oracle/sqljdbc_3.0/enu/sqljdbc4.jar',
'C:/Projects/jdbc/sqljdbc_4.0/enu/sqljdbc4.jar')) {
if (file.exists(path)) {
file = path
break
}
}
if (is.null(file))
return(NULL)
else {
drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver", file)
passwd <- GetUserNamePassword()
conn <- dbConnect(drv, "jdbc:sqlserver://sql.server.address.com",
passwd$username, passwd$password)
return(conn)
}
}
PS 関連: R パッケージでデータベース接続を管理する方法