7

私は R パッケージを構築しています。その主な目的は、データを取得するためにかなり複雑な SQL クエリを必要とする独自のデータベースを処理する苦痛を取り除くことです。

そのため、Microsoft SQL Server への接続 ( によって取得されるodbcDriverConnect) は、このパッケージの一定の重要な部分です。 Rで。

私の現在の考えは次のとおりです。

  1. 関数を呼び出す前に、有効な接続があることをユーザーに確認してもらいます。各関数にはconnection、渡す必要があるパラメーターがあります。これはユーザーに負担をかけます。

  2. get.connection()すべての関数で、毎回新しい接続を取得する呼び出しを行います。その後、古い接続は自然にタイムアウトすることが許可されますが、これはずさんなアプローチのようです。

  3. 上記と同様ですが、毎回同じ接続を返します。Rを介した接続のタイムアウトを防ぐことはできないため、これは実行可能な提案ではないようです。autoReconnect=TRUEまた、さまざまな言語で使用した他のトリックは効果がないようです。

Java では、おそらく DatabaseConnectionPool に多数の接続を設定し、必要に応じてそのプールから接続を取得して返すだけです。を指定すると、Javaでタイムアウトの問題も発生しないようですautoReconnect=TRUE

どんな提案でも大歓迎です。

4

2 に答える 2

1

2 番目と 3 番目のアプローチの組み合わせが合理的な解決策のようです。つまり、毎回同じ接続を取得しますが、接続を返す前に、まだ開いているかどうかを確認できます。それ以外の場合は、新しい接続を作成します。

基本的には手動で実装しているかのようですautoReconnect=TRUE

于 2013-02-08T19:35:06.430 に答える