O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
データベースのお話 2012.07.07 Tokyo.R #24   by @holidayworking
自己紹介• Hidekazu Tanaka• システムエンジニア• 好きなもの • T-SQUARE • F1
Rを使っていると
こんな経験がありますよね?
ファイルがたくさん
どのファイルにデータが あるのか分からない
そんな人に今回紹介するのは
データベース
データベースとは?• 大量のデータを一定の規則に従って蓄積し、一元 的に管理できるようにしたもの• データベースを構築することによって、データの 重複や散逸を防ぎ、ある項目に着目して特定の データを抽出するといった、効率的なデータ利用 が可能になる
データモデル• データベースに格納するデータをどのように配置 するか理論的・物理的な側面から規定するもの• 代表的なデータモデル • 階層型データモデル • ネットワーク型データモデル • 関係モデル • オブジェクトデータモデル
データモデル• データベースに格納するデータをどのように配置 するか理論的・物理的な側面から規定するもの• 代表的なデータモデル • 階層型データモデル • ネットワーク型データモデル • 関係モデル • オブジェクトデータモデル
関係モデル• E.F.Codd が集合論と述語理論に基づいて考案し たモデル• 基本的な前提は、あらゆるデータは n 項の関係で 表現されるということ• 詳細は Wikipedia で!!
RDBMS• 関係モデルに基づいて設計されたデータが格納さ れ、管理されるシステムのこと• データは2次元の表として格納し、データ間の関連 をデータを使って表現される• データの操作や定義を行うためには SQL と呼ば れる言語を使うのが一般的
RDBMS• 商用、オープンソースを含め様々な実装が存在 • Oracle Database • Microsoft SQL Server • MySQL • PostgreSQL • SQLite
SQL• RDBMS において、データの操作や定義を行うた めの問い合わせ言語• ISO で言語仕様の標準化が行われているため、異 なる RDBMS でも同じように使うことができる• 標準規格の対応の程度は RDBMS によって異な ることがあ...
SQL• DDL : Data Definition Language • CREATE • DROP • ALTER • TRUNCATE
SQL• DML : Data Manipulation Language • SELECT • INSERT • UPDATE • DELETE
Rから操作する方法• R から RDBMS を操作する方法は2種類存在 • RODBC パッケージ • DBI パッケージ
RODBC パッケージ• ODBC で RDBMS を操作するパッケージ • ODBC : Open Database Connectivity • Microsoft が提案した RDBMS にアクセス   するための共通インターフェイス •...
DBI パッケージ• R から RDBMS を操作するためのインターフェ イスを定義したパッケージ• RDBMS に対応したパッケージのインストールが 必要• Mac OS X や Linux を使っている場合は、この パッケージを使ったほうが良い
ドライバパッケージ• RMySQL• RPostgreSQL• RSQLite• ROracle• RJDBC
RDBMS への接続方法# 接続> conn <- dbConnect(MySQL(), host = "localhost",            user = "scott", password = "tiger",           ...
簡単な使用方法# データフレームをテーブルに保存> dbWriteTable(conn, name="iris", value=iris)[1] TRUE# テーブルからデータフレームを作成> data <- dbReadTable(conn,...
SQLの使用方法# dbGetQuery 関数を使う方法> data <- dbGetQuery(conn, "select * from quakes")> dim(data)[1] 1000    6# 大規模なデータを扱う場合は、クエリを...
実践編• R と RDBMS を組み合わせの例としてテキスト マイニングをやってみます• 「Rによるテキストマイニング入門」の第9章のテ キスト分類• 上記の本では新聞記事をファイルに保存し解析し ているが、今回は RDBMS に保存し解析をする
新聞記事収集スクリプト• 某新聞の RSS から記事を取得、RDBMS に保存• 収集スクリプトは Ruby で実装• スクリプトは GitHub で公開 • http://github.com/holidayworking/   sankei
テーブル構成
テキスト分類# 記事の取得> news <- dbGetQuery(conn, "select news.id, news.title, news.content,categories.name as category from news in...
データベースのお話
データベースのお話
Próximos SlideShares
Carregando em…5
×

データベースのお話

3.060 visualizações

Publicada em

第24回R勉強会@東京(#TokyoR)で発表したスライド

Publicada em: Tecnologia
  • Dating direct: ♥♥♥ http://bit.ly/39sFWPG ♥♥♥
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Dating for everyone is here: ❤❤❤ http://bit.ly/39sFWPG ❤❤❤
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

データベースのお話

  1. 1. データベースのお話 2012.07.07 Tokyo.R #24 by @holidayworking
  2. 2. 自己紹介• Hidekazu Tanaka• システムエンジニア• 好きなもの • T-SQUARE • F1
  3. 3. Rを使っていると
  4. 4. こんな経験がありますよね?
  5. 5. ファイルがたくさん
  6. 6. どのファイルにデータが あるのか分からない
  7. 7. そんな人に今回紹介するのは
  8. 8. データベース
  9. 9. データベースとは?• 大量のデータを一定の規則に従って蓄積し、一元 的に管理できるようにしたもの• データベースを構築することによって、データの 重複や散逸を防ぎ、ある項目に着目して特定の データを抽出するといった、効率的なデータ利用 が可能になる
  10. 10. データモデル• データベースに格納するデータをどのように配置 するか理論的・物理的な側面から規定するもの• 代表的なデータモデル • 階層型データモデル • ネットワーク型データモデル • 関係モデル • オブジェクトデータモデル
  11. 11. データモデル• データベースに格納するデータをどのように配置 するか理論的・物理的な側面から規定するもの• 代表的なデータモデル • 階層型データモデル • ネットワーク型データモデル • 関係モデル • オブジェクトデータモデル
  12. 12. 関係モデル• E.F.Codd が集合論と述語理論に基づいて考案し たモデル• 基本的な前提は、あらゆるデータは n 項の関係で 表現されるということ• 詳細は Wikipedia で!!
  13. 13. RDBMS• 関係モデルに基づいて設計されたデータが格納さ れ、管理されるシステムのこと• データは2次元の表として格納し、データ間の関連 をデータを使って表現される• データの操作や定義を行うためには SQL と呼ば れる言語を使うのが一般的
  14. 14. RDBMS• 商用、オープンソースを含め様々な実装が存在 • Oracle Database • Microsoft SQL Server • MySQL • PostgreSQL • SQLite
  15. 15. SQL• RDBMS において、データの操作や定義を行うた めの問い合わせ言語• ISO で言語仕様の標準化が行われているため、異 なる RDBMS でも同じように使うことができる• 標準規格の対応の程度は RDBMS によって異な ることがあるため、特定の RDBMS では使えな い構文もあることもある
  16. 16. SQL• DDL : Data Definition Language • CREATE • DROP • ALTER • TRUNCATE
  17. 17. SQL• DML : Data Manipulation Language • SELECT • INSERT • UPDATE • DELETE
  18. 18. Rから操作する方法• R から RDBMS を操作する方法は2種類存在 • RODBC パッケージ • DBI パッケージ
  19. 19. RODBC パッケージ• ODBC で RDBMS を操作するパッケージ • ODBC : Open Database Connectivity • Microsoft が提案した RDBMS にアクセス するための共通インターフェイス • Windows 環境で利用されることが多い• Windows で R を使っている場合は、このパッ ケージを使ったほうが良い
  20. 20. DBI パッケージ• R から RDBMS を操作するためのインターフェ イスを定義したパッケージ• RDBMS に対応したパッケージのインストールが 必要• Mac OS X や Linux を使っている場合は、この パッケージを使ったほうが良い
  21. 21. ドライバパッケージ• RMySQL• RPostgreSQL• RSQLite• ROracle• RJDBC
  22. 22. RDBMS への接続方法# 接続> conn <- dbConnect(MySQL(), host = "localhost",            user = "scott", password = "tiger", dbname = "ellison")# 接続情報の確認> summary(conn)<MySQLConnection:(49423,0)> User: scott Host: localhost Dbname: ellison Connection type: localhost via TCP/IP No resultSet available# 切断> dbDisconnect(conn)
  23. 23. 簡単な使用方法# データフレームをテーブルに保存> dbWriteTable(conn, name="iris", value=iris)[1] TRUE# テーブルからデータフレームを作成> data <- dbReadTable(conn, name="iris")> head(data) Sepal_Length Sepal_Width Petal_Length Petal_Width Species1 5.1 3.5 1.4 0.2 setosa2 4.9 3.0 1.4 0.2 setosa3 4.7 3.2 1.3 0.2 setosa4 4.6 3.1 1.5 0.2 setosa5 5.0 3.6 1.4 0.2 setosa6 5.4 3.9 1.7 0.4 setosa# テーブルの削除> dbRemoveTable(conn, name="iris")[1] TRUE
  24. 24. SQLの使用方法# dbGetQuery 関数を使う方法> data <- dbGetQuery(conn, "select * from quakes")> dim(data)[1] 1000 6# 大規模なデータを扱う場合は、クエリを分割して取得する dbSendQuery を使うのが安全> rs <- dbSendQuery(conn, "select * from quakes")> data <- fetch(rs)> dim(data)[1] 500 6# 残りの結果を全て取得> data <- fetch(rs, n=-1)> dim(data)[1] 500 6# 全て取得されているか> dbHasCompleted(rs)[1] TRUE
  25. 25. 実践編• R と RDBMS を組み合わせの例としてテキスト マイニングをやってみます• 「Rによるテキストマイニング入門」の第9章のテ キスト分類• 上記の本では新聞記事をファイルに保存し解析し ているが、今回は RDBMS に保存し解析をする
  26. 26. 新聞記事収集スクリプト• 某新聞の RSS から記事を取得、RDBMS に保存• 収集スクリプトは Ruby で実装• スクリプトは GitHub で公開 • http://github.com/holidayworking/ sankei
  27. 27. テーブル構成
  28. 28. テキスト分類# 記事の取得> news <- dbGetQuery(conn, "select news.id, news.title, news.content,categories.name as category from news inner join categories onnews.category_id = categories.id order by news.id")# ターム・文書行列の作成> library(RMeCab)> res <- docMatrixDF(news[,"content"], pos=c("名詞","動詞","形容詞"))# クラスター分析> hc <- hclust(dist(t(res)))> library(ggdendro)# デンドログラムの作成> hcdata <- dendro_data(hc)> ggplot() + geom_segment(data=segment(hcdata), aes(x, y, xend=xend,yend=yend)) + geom_text(data=label(hcdata), aes(x, y, label=label,hjust=0), size=3) +coord_flip() + scale_y_reverse(expand=c(0.2, 0))

×