目次

#contents
----
&color(black){論文引用・書籍等に引用する場合の著作権についての連絡>>[[okinawa]]};~
~
*目的 [#c74284a1]
R言語とデータベースとの連携についての情報の集積。(データベースごとに分類)~
参考:[[Rとインターフェースのあるアプリ]]
*COLOR(blue){SIZE(20){利用するパッケージ}} [#q1b9efb5]
[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):http://blog.revolutionanalytics.com/2010/01/the-r-rosetta-stone.html]] SQL と R の比較 [#o2b01a04]

*コメント欄 [#ne4dfd4e]
#comment(below)
- SAS server 追加 -- [[okinawa]] &new{2009-09-16 (水) 08:31:16};
- ようやくCache'とRODBCを直接つなぐことができました。 -- [[okinawa]] &new{2009-09-15 (火) 14:52:44};
- [[Cache'とR]]公開 -- [[okinawa]] &new{2007-12-24 (月) 10:16:21};
- rcomを使ってRからCache'へダイレクト接続することに成功した。そのうちパッケージを作ってみようかな。 -- [[okinawa]] &new{2007-10-13 (土) 16:24:48};
- sqldfでのDBの永続化のことですが、こまめにsave.image()すれば可能なような気がしてきました。SQLを実行するたびにsave.imageすればとりあえずRのみで永続化できますね。 -- [[okinawa]] &new{2007-08-15 (水) 16:34:26};
- RJDBCの資料が少ない。情報求む!また、DBの種類も増やしたいので、載ってないDBとRとの連携の情報があれば投稿お願いします。 -- [[okinawa]] &new{2007-07-25 (水) 15:28:44};

*データベース(及びデータベースに類するもの) [#c60a5434]
**Rデータフレーム [#ld99e35d]
[解説]~
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~
- データフレーム操作の実例:[[Rで学ぶデータマイニング I:http://www.amazon.co.jp/dp/4861671760]] データ・ハンドリング
- sqldfの実例:[[Rで学ぶデータマイニング II:http://www.amazon.co.jp/exec/obidos/ASIN/4861671981/]] SQL超入門
**SQLite [#wf4d0840]
[解説]~
組込用の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にも搭載される予定。~
- RSQLiteの実例:[[Rで学ぶデータマイニング II:http://www.amazon.co.jp/exec/obidos/ASIN/4861671981/]] SQL超入門
**Cache' (キャシエ) [#y04d99f2]
[解説]~
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のトリックが必要なくなった!~

///20070725現在、RODBCからCache'に対して直接クエリをかけることができない。(テーブルリストの取得がうまくできないため)Accessのmdb経由であればうまく作動する。(RODBCでDBに上手く接続できない場合のトリック参照)~
[リサーチ]~
Cache'内のActivateウイザードを利用することにより、R(D)COMをCache'のクラスに変換できるため、Cache'からRを直接操作することができる。(WINのみ)~
[[Cache'とR]]で
rcomを使ってRからダイレクトにCache'を操作する方法を公開しています。~

**SAS server [#tf39aa37]

[RODBC]~
SAS's 9.1 ODBC driverでRODBCからSAS serverに対して直接クエリをかけるためには以下のパラメータで接続すること~
 channel<-odbcConnect(dsn,believeNRows = FALSE)

**Microsoft Access [#cd3c4d04]
[解説]~
マイクロソフトが、Microsoft Windows向けに販売しているリレーショナルデータベース。データはmdbという単一のファイルに格納される。大規模なDB開発には向かない。Access2007では新しいファイル形式に変更されている。~
[RODBC]~
**FileMakerPro [#kf2ee399]
[解説]~
ファイルメーカー社が開発しているデータベース。当初はカード型であったが、バージョンアップ毎に様々な機能を追加し、現在ではODBC/SQLにも対応している。大規模なDB開発には向かないが、データベースと画面の作成が非常に簡単に行えるため根強い人気がある。~
[RODBC]~
**MySQL [#c51b41b8]
[解説]~
有名なマルチプラットフォーム・オープンソース・データベース。 他のフリーRDBMSと比較して高速性に定評があり、特に更新よりも参照の頻度の高いWebアプリケーションに向く。~
[RODBC]~
[RMySQL]~
[リンク]~
[[RMySQL]]~

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

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

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

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

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

**H2 [#pc8a85ad]
-RH2: DBI/RJDBC interface to H2 Database

*Amazon [#g4208b20]
**[[RAmazonS3:http://www.omegahat.org/RAmazonS3/]] S3 アマゾンストレッジサーバー用インターフェース [#pc2592ab]
**[[RAmazonDBREST:http://www.omegahat.org/RAmazonDBREST/]] Amazon's Simple DB API 用 REST インターフェース [#acc4cf69]

*NoSQL [#d2b5f0da]
[[R と NoSQL]] [#i19f7a7d]

*RODBCでDBに上手く接続できない場合のトリック [#ld1dda8c]
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でうまく接続できない場合の代替え案として考えてください。~

*アクセス数: [#m25cab31]
&counter;


*参考リンク [#ve6c8aa6]
-[[Which RDMS or NOSQL database do you use for R? MySQL, Cassandra, HBase, MongoDB, Oracle, PostgreSQL, CouchDB, SQLite?:http://quantlabs.net/r-blog/2012/06/which-rdms-or-nosql-database-do-you-use-for-r-mysql-cassandra-hbase-mongodb-oracle-postgresql-couchdb-sqlite/]]



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS