目次


論文引用・書籍等に引用する場合の著作権についての連絡>>okinawa

目的

R言語とデータベースとの連携についての情報の集積。(データベースごとに分類)
参考:Rとインターフェースのあるアプリ

利用するパッケージ

[sqldf]
[SQLiteDF]
[RODBC]
マイクロソフトが提唱したODBCを用いてRからDBへの接続を行うパッケージ。接続のためには、ODBCドライバとデータソース(DSN)の設定が別途必要になるが、ODBCに対応しているDBが多数あるため利用しやすい
[RJDBC]
[DBI]
[RSQLite]
[ROracle]
[RMySQL]
[RPgSQL]
[R(D)COM]

SQL: Data munging with SQL and R (Josh Reich) SQL と R の比較

コメント欄


データベース(及びデータベースに類するもの)

Rデータフレーム

[解説]
R言語のデータ構造のひとつ。Rのコマンドを使って操作を行う。
[sqldf]
sqldfパッケージを利用して、Rデータフレームに対してSQL文を発行できる。(selectのみ?)Rのデータフレームをデータベースのテーブルとして利用する。
(たぶん)メモリ上でSQLクエリが実行されるので、スピードは速いと思われるが、データフレームの永続化の問題があるので、キャッシュ的に使うのがいいかも。
http://cran.md.tsukuba.ac.jp/src/contrib/Descriptions/sqldf.html
[リサーチ]
データフレームを含むRObjectを拡張するパッケージが存在する。R.huge,R.cache

SQLite

[解説]
組込用のRDBMS。SQL92のサブセットをサポートするCライブラリ。OracleやPostgreSQL、 MySQLのようにサーバ・クライアント構成ではなく、Microsoft Accessのようなファイルを直接読み書きするタイプでサーバを必要としない。
http://www.sqlite.org/
[SQLiteDF]
Rから透過的にSQLiteを利用できる。sdfという中間オブジェクトを利用して、RデータフレームとSQLiteデータベースのやりとりを行う。SQLiteDFではSQL文は使えないので注意。Select=sdfSelect(),insert=rbindSdf(),Update&Deleteは見当たらない。sqldfと組み合わせて使う?
http://cran.md.tsukuba.ac.jp/src/contrib/Descriptions/SQLiteDF.html
[RSQLite]
DBIパッケージを用いてSQLiteに直接つなげることができる。SQL文を用いた一通りの操作が可能。
http://cran.md.tsukuba.ac.jp/src/contrib/Descriptions/RSQLite.html
[ツール]
SQLite Database Browser:http://sourceforge.net/projects/sqlitebrowser/ GUIでSQLiteの操作が可能。
[リサーチ]
SQLiteは(ひそかに)アプリケーションに組込まれている。特にMacOSXの標準アプリに多数利用されている。MailやSpotlightはSQLiteを利用して構築されている。また、GoogleGearsでも利用されているため、GoogleGearsで作成したDBとRを連携させることが可能になると思われる。また、Adobe AIRにも搭載される予定。

Cache' (キャシエ)

[解説]
Cache'はポストリレーショナルデータベースを自称する、マルチプラットホームのオブジェクトデータベース。古くはM言語(MUMPS)に起源を持つが、一般的なRDBとは異なったデータ管理方式にて発展してきたDBであり、高速性・Javaとの親和性が売り。データベースのコアはスパース配列にて管理されており、データ配置はB-TREE方式などRDBとは根本的に異なり、どちらかというとOLAP用DBの構造に近い。ODBC/SQLが実装されている。標準プログラム言語は、Cashe'ObjectScriptでM言語の文法を継承している。他にCashe'BasicというVBScriptコンパチの言語も持っている。
http://www.intersystems.co.jp/index.html
[RODBC]
RODBCからCache'に対して直接クエリをかけるためには以下のパラメータで接続すること

channel<-odbcConnect(dsn,believeNRows = FALSE)

これでAccessのトリックが必要なくなった!

[リサーチ]
Cache'内のActivateウイザードを利用することにより、R(D)COMをCache'のクラスに変換できるため、Cache'からRを直接操作することができる。(WINのみ)
Cache'とRで rcomを使ってRからダイレクトにCache'を操作する方法を公開しています。

SAS server

[RODBC]
SAS's 9.1 ODBC driverでRODBCからSAS serverに対して直接クエリをかけるためには以下のパラメータで接続すること

channel<-odbcConnect(dsn,believeNRows = FALSE)

Microsoft Access

[解説]
マイクロソフトが、Microsoft Windows向けに販売しているリレーショナルデータベース。データはmdbという単一のファイルに格納される。大規模なDB開発には向かない。Access2007では新しいファイル形式に変更されている。
[RODBC]

FileMakerPro

[解説]
ファイルメーカー社が開発しているデータベース。当初はカード型であったが、バージョンアップ毎に様々な機能を追加し、現在ではODBC/SQLにも対応している。大規模なDB開発には向かないが、データベースと画面の作成が非常に簡単に行えるため根強い人気がある。
[RODBC]

MySQL

[解説]
有名なマルチプラットフォーム・オープンソース・データベース。 他のフリーRDBMSと比較して高速性に定評があり、特に更新よりも参照の頻度の高いWebアプリケーションに向く。
[RODBC]
[RMySQL]
[リンク]
RMySQL

PostgreSQL

[解説]
BSDライセンスにより配布されているフリーのデータベース。その名称は Ingres の後継を意味する「Post-Ingres」に由来している。また、PostGIS(GIS用)やPL/R(R言語の呼び出し)といった特別な仕組みも持つ。大規模なDB開発向き。
[RODBC]
[RPgSQL]
[リンク]
R と PostgreSQL
RとPostGIS

Microsoft SQLServer

[解説]
もともとはUNIX上で稼動していたSybaseの製品で、WindowsOSに移植されたデータベース。Sybaseとの提携解消後、マイクロソフト独自にバージョンアップを行うようになり、現在に至っている。大規模なDB開発向き。Windowsでしか動かないのが辛い。
[RODBC]

Oracle

[解説]
言わずと知れたデータベース界の雄、米国Oracle社が開発・販売しているリレーショナルデータベース。Oracleは世界初の商用RDBMSであり、メインフレームからパーソナルコンピュータまで、幅広いプラットフォームをサポートしている。大規模なDB開発向き。メインフレーム優位の時代をUNIX&Oracleで切り開いてきたが、最近は殿様商売が過ぎるんじゃないかい?
[RODBC]
[ROracle]

Microsoft Excel

[解説]
マイクロソフトがWindows及びMac OS向けに販売している表計算(スプレッドシート)ソフト。(つまり、データベースではない。)Excelは当初MacOS用に開発され、その後WindowsOS上に移植された。表形式の操作性の良さが定評であるが、統計学者からは計算精度の低さから嫌われる向きもある。
[RODBC]

LibreOffice Base(HSQLDB)

[解説]
LibreOffice Baseは、Javaで作成されたHSQLDBをコアにしたリレーショナルデータベース。一般的に作られるサイズは小さくなる特徴がある。画面構成は、比較的Microsoft Accessと似ている。大規模なDB開発には向かない。
[RJDBC]?未確認

H2

Amazon

RAmazonS3 S3 アマゾンストレッジサーバー用インターフェース

RAmazonDBREST Amazon's Simple DB API 用 REST インターフェース

NoSQL

R と NoSQL [#i19f7a7d]

RODBCでDBに上手く接続できない場合のトリック

Cache'の項にも書いたのだが、RODBCでうまく接続できないDBも存在する。
その時に用いる回避策として、Microsoft Accessのmdbを介して接続する方法がある。
R => mdb => Cache' という接続形態である。 設定は、
(1)AccessでCache'対して、テーブルのリンクを張る。(AccessにSQLserverのテーブルのリンクを張る方法と同じ)
(2)作成されたmdbに対して、RからODBCの設定を行う。
(3)RODBCからmdbへ接続すると、リンクされたCach醇Pのテーブルも見える。
(4)SQL文を発行すると、Cache'のテーブルの中身がきちんと表示される。
(5)RのdataframeをSQLsaveすると、mdbにテーブルが作られる。
この方法の利点は
DBならば、一般にAccessからの接続を考慮して作られているので、RODBCとODBCドライバの相性の善し悪しに左右されないこと、DBサーバーに直接接続しないため間違ってdataframeをDBサーバーに保存してしまうことが防げること。セキュリティの設定がmdbでできることや、複数のDBを利用する場合mdb側でリンクを吸収することで、Rのコードが複雑になることを防げたりする。
欠点として、mdb経由なので大規模なデータのやり取りに不安があること。基本的にAccessが必要なこと(つまりWindowsでしか使えない方法であること)がある。
(注)あくまでも、RODBCでうまく接続できない場合の代替え案として考えてください。

アクセス数:

7542 人

参考リンク


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:17