2009-07-23 10 views
6

一部のデータベースはRでネイティブサポート(MySQLなど)していますが、RODBCを使用しているMS SQL Serverなどの他のデータベースに接続できます。ネイティブドライバーとRODBCの読み書きにどれくらいのスピードアップが得られますか?他のどのDBにRのネイティブドライバがありますか?一般的な文章よりも読み方が速いか遅いですか?ネイティブデータベースとODBCデータベースの接続

答えて

1
  • これは経験的な質問なので、興味のある組み合わせについて測定しないのはなぜですか?
  • パブリックコードが隠されていないので、CRANの他のDBインターフェイスの数を調べてみてはいかがですか? DBIだけでは、SQLite、MySQL、Postgresql、Oracleを持っています。カスタムdbバックエンドにはVhayuのようなものがあります。
  • 専門フォーラムが存在するので、r-sig-dbについて質問してみませんか?
  • 最後に、APIと必要に応じてすぐに人々は2つを結合する傾向があります。私は、2つの異なる(作業中、したがって未リリースの)パッケージを、2つの高度に特殊化された高速バックエンドに書きました。
+0

経験的な質問には良い点がありますが、それらをすべてテストすることはできません。他の誰かがDBエンジンの切り替えに関する良い経験と証拠を持っていれば、私は切り替えるでしょう。 –

+0

さて、ODBCとネイティブを比較するオプションがあるかもしれません(たとえば、ODBCの場合はMS SQLではなく、MySQLまたはPostgreSQLと言います)。それで、あなたが行っているテストケースのタイプをシミュレートし、それがどう動くかを見てください。 –

2

特にSQL Serverに興味がある場合、以下の参照は少し時代遅れですが、おそらくそれはまだ保持されていると思います。

Using ODBC with Microsoft SQL Server

ネイティブAPIとしてODBCのパフォーマンスODBCに関する永続的な噂の

一つは、それがネイティブDBMSのAPIよりも本質的に遅いということです。この推論は、ODBCドライバをネイティブDBMS API上の余分な層として実装し、アプリケーションからのODBCステートメントをネイティブDBMS API関数とSQL構文に変換する必要があるという前提に基づいています。この変換作業は、アプリケーション呼び出しをネイティブAPIに直接行う場合と比較して、余分な処理を追加します。この仮定は、ネイティブDBMS APIを介して実装された一部のODBCドライバでは当てはまりますが、Microsoft SQL Server ODBCドライバはこのように実装されていません。

Microsoft SQL Server ODBCドライバは、DB-Libraryの機能的な置き換えです。 SQL Server ODBCドライバは、DB-Library DLLとまったく同じ方法で、基になるNet-Libraryと連携して動作します。 Microsoft SQL Server ODBCドライバはDB-Library DLLに依存せず、DB-Libraryがクライアント上に存在しない場合でもドライバは正しく機能します。

Microsoftのテストでは、ODBCベースおよびDB-LibraryベースのSQL Serverアプリケーションのパフォーマンスはほぼ同等であることがわかりました。

+0

これは本当に良い参考になります。ありがとう!残念ながら、私は物事のR側にも対処しなければならない。 RからRODBCレイヤーに行くのは、書き込みが特に遅いようです。しかし、おそらくRODBCであり、ODBCからSQL Serverへのレイヤーではないことを知っておくとよいでしょう。再度、感謝します。 –

+0

好奇心を要して、保存しているデータフレームの量はどれくらいですか?一度に1行または一括してデータを挿入しているかどうかを調べるためにプロファイリングを試しましたか?あなたが1つの行を挿入する場合は、多くのあなたを遅らせるだろう。 私は最近、RODBCの保存機能に関するいくつかの問題に直面しました。 INSERT/UPDATEのみを実行している場合、sqlQuery()はエラーをスローし、少なくともSQL Serverでは動作します。 –