一部のデータベースは R (MySQL など) でネイティブにサポートされていますが、RODBC を使用して MS SQL Server などの他の DB に接続できることは理解しています。ネイティブ ドライバーと RODBC を使用した場合、読み取り/書き込みの速度はどの程度向上しますか? R のネイティブ ドライバーを備えている他の DB はありますか? 一般的に、読むことは書くことよりも速いですか、それとも遅いですか?
2 に答える
特に SQL Server に興味がある場合、以下のリファレンスは少し古くなっていますが、おそらくまだ有効であると思います。
Microsoft SQL Server での ODBC の使用
ネイティブ API としての ODBC のパフォーマンス
ODBC に関する根強いうわさの 1 つは、ODBC はネイティブの DBMS API より本質的に遅いというものです。この推論は、アプリケーションからの ODBC ステートメントをネイティブ DBMS API 関数と SQL 構文に変換して、ODBC ドライバーをネイティブ DBMS API 上の追加レイヤーとして実装する必要があるという前提に基づいています。この変換作業により、アプリケーションがネイティブ API を直接呼び出す場合と比較して、余分な処理が追加されます。この仮定は、ネイティブ DBMS API を介して実装された一部の ODBC ドライバーには当てはまりますが、Microsoft SQL Server ODBC ドライバーはこの方法で実装されていません。
Microsoft SQL Server ODBC ドライバーは、DB-Library の機能を置き換えるものです。SQL Server ODBC ドライバーは、DB-Library DLL とまったく同じ方法で、基礎となる Net-Libraries と連携します。Microsoft SQL Server ODBC ドライバーは DB-Library DLL に依存していないため、DB-Library がクライアントに存在しなくても、ドライバーは正しく機能します。
Microsoft のテストでは、ODBC ベースの SQL Server アプリケーションと DB-Library ベースの SQL Server アプリケーションのパフォーマンスはほぼ同等であることが示されています。
- これは経験的な質問ですが、興味のある組み合わせについて測定してみませんか?
- 公開コードは隠されていないので、CRANが持っている他のDBインターフェースを数えてみませんか?DBIだけでも、SQLite、MySQL、Postgresql、Oracleがあります。カスタムdbバックエンドには、Vhayuのようなものがあります。
- 専門のフォーラムがありますので、r-sig-dbで聞いてみませんか?
- 最後に、APIがあり、必要になるとすぐに、人々は2つを組み合わせる傾向があります。私は2つの異なる(作業中の、したがってリリースされていない)パッケージを2つの高度に専門化された高速バックエンドに書き込みました。