Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Tamotsu Furuya
779 views
Integration Technology of Ruby and DB.
Rubyとデータベースの連携技術
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 22
2
/ 22
3
/ 22
4
/ 22
5
/ 22
6
/ 22
7
/ 22
8
/ 22
9
/ 22
10
/ 22
11
/ 22
12
/ 22
13
/ 22
14
/ 22
15
/ 22
16
/ 22
17
/ 22
18
/ 22
19
/ 22
20
/ 22
21
/ 22
22
/ 22
More Related Content
PDF
OSS-DB Goldへの第一歩~実践!運用管理~
by
Shigeru Hanada
PDF
Hadoop - OSC2010 Tokyo/Spring
by
Shinichi YAMASHITA
PDF
AmebaのMongoDB活用事例
by
Akihiro Kuwano
PDF
Zabbix jp勉強会 Hadoop-HBaseの監視_20120512
by
Seiichiro Ishida
PPTX
Hadoopソースコードリーディング8/MapRを使ってみた
by
Recruit Technologies
PDF
PostgreSQLバックアップの基本
by
Uptime Technologies LLC (JP)
PDF
Introduction to fuzzy kmeans on mahout
by
takaya imai
PPTX
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
by
NTT DATA Technology & Innovation
OSS-DB Goldへの第一歩~実践!運用管理~
by
Shigeru Hanada
Hadoop - OSC2010 Tokyo/Spring
by
Shinichi YAMASHITA
AmebaのMongoDB活用事例
by
Akihiro Kuwano
Zabbix jp勉強会 Hadoop-HBaseの監視_20120512
by
Seiichiro Ishida
Hadoopソースコードリーディング8/MapRを使ってみた
by
Recruit Technologies
PostgreSQLバックアップの基本
by
Uptime Technologies LLC (JP)
Introduction to fuzzy kmeans on mahout
by
takaya imai
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
by
NTT DATA Technology & Innovation
What's hot
PDF
MapR M7 技術概要
by
MapR Technologies Japan
PDF
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
by
Uptime Technologies LLC (JP)
PDF
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
by
Uptime Technologies LLC (JP)
PDF
Stormの注目の新機能TridentAPI
by
AdvancedTechNight
PDF
「今そこにある危機」を捉える ~ pg_stat_statements revisited
by
Uptime Technologies LLC (JP)
PDF
Postgre sql9.3新機能紹介
by
Daichi Egawa
PDF
GMOメディア RHEV-S-事例紹介
by
Dai Utsui
PPTX
Jubatus使ってみた 作ってみたJubatus
by
JubatusOfficial
MapR M7 技術概要
by
MapR Technologies Japan
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
by
Uptime Technologies LLC (JP)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
by
Uptime Technologies LLC (JP)
Stormの注目の新機能TridentAPI
by
AdvancedTechNight
「今そこにある危機」を捉える ~ pg_stat_statements revisited
by
Uptime Technologies LLC (JP)
Postgre sql9.3新機能紹介
by
Daichi Egawa
GMOメディア RHEV-S-事例紹介
by
Dai Utsui
Jubatus使ってみた 作ってみたJubatus
by
JubatusOfficial
Similar to Integration Technology of Ruby and DB.
PDF
Rubyの話を少し
by
Fumitake Taniguchi
PPTX
Ruby on Rails を用いたWEBアプリケーションの開発
by
Koichi Shimozono
PDF
Management of Gems using Bundler.
by
Tamotsu Furuya
PDF
Summary of Ruby
by
Tamotsu Furuya
PDF
nomlab_okayamaruby_slide
by
nomlab
PDF
The Essence of Using Ruby on Rails in Corporations
by
Koichiro Ohba
PDF
メイカーRuby講習会2013
by
Kindai University
PDF
Heroku Postgres
by
Ayumu Aizawa
PDF
Heroku Postgres
by
Salesforce Developers Japan
PDF
20091030cakephphandson 02
by
Yusuke Ando
PDF
Ruby でつくる型付き Ruby
by
mametter
PDF
現実世界のJRuby(ショートバージョン)
by
Hiroshi Nakamura
PDF
Ruby on Rails 入門
by
Yasuko Ohba
PDF
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
by
emasaka
PDF
現実世界のJRuby
by
Hiroshi Nakamura
PDF
Active record query interface
by
Tomoya Kawanishi
KEY
Rails基礎講座 part.2
by
Jun Yokoyama
PDF
JavaとRubyのすてきな関係
by
garden_tree
PPTX
Ruby講座第二回
by
mitsunaga
PDF
Sql基礎の基礎
by
Satomi Tsujita
Rubyの話を少し
by
Fumitake Taniguchi
Ruby on Rails を用いたWEBアプリケーションの開発
by
Koichi Shimozono
Management of Gems using Bundler.
by
Tamotsu Furuya
Summary of Ruby
by
Tamotsu Furuya
nomlab_okayamaruby_slide
by
nomlab
The Essence of Using Ruby on Rails in Corporations
by
Koichiro Ohba
メイカーRuby講習会2013
by
Kindai University
Heroku Postgres
by
Ayumu Aizawa
Heroku Postgres
by
Salesforce Developers Japan
20091030cakephphandson 02
by
Yusuke Ando
Ruby でつくる型付き Ruby
by
mametter
現実世界のJRuby(ショートバージョン)
by
Hiroshi Nakamura
Ruby on Rails 入門
by
Yasuko Ohba
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
by
emasaka
現実世界のJRuby
by
Hiroshi Nakamura
Active record query interface
by
Tomoya Kawanishi
Rails基礎講座 part.2
by
Jun Yokoyama
JavaとRubyのすてきな関係
by
garden_tree
Ruby講座第二回
by
mitsunaga
Sql基礎の基礎
by
Satomi Tsujita
Integration Technology of Ruby and DB.
1.
Rubyとデータベースとの連携技術 Rubyとデータベースとの連携技術 Integration Technology of Ruby and Database 鹿児島大学 学術情報基盤センター 学術情報処理研究部門 古屋 保 furuya@cc.kagoshima-u.ac.jp K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 1
2.
Rubyとデータベースとの連携技術 内容 ● 1. データベース連携概要 ● 2. MySQLバインディングによる連携 ● 3. ActiveRecordによる連携 K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 2
3.
Rubyとデータベースとの連携技術 1. データベース連携概要 ● RubyとMySQLデータベースとの連携 – データベース抽象レイヤを使用せず,直接バインディングを使 用してみる.(SQLを記述する必要がある) 「mysql2」…MySQL用のバインディング Gem(https://github.com/brianmario/mysql2) #MySQLのバインディングをインストールする $ gem install mysql2 K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 3
4.
Rubyとデータベースとの連携技術 1. データベース連携概要 ● Rubyとデータベースとの連携 – ほとんどのDBMSと連携可能 MySQL,PostgreSQL,Oracle,Microsoft SQL Server,DB2,SQLite 各データベースAPIへのバインディングをGemで提供 – データベース抽象レイヤ(ActiveRecord) DBの違いを意識することなくコーディング可能. K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 4
5.
Rubyとデータベースとの連携技術 2. MySQLバインディングによる連携 ● 連携するデータベース(テーブル) – 「students」テーブル(予めmysqlツールで作成) mysql> use test; mysql> CREATE TABLE students ( -> id CHAR(11) NOT NULL, -> name VARCHAR(40), -> e_mail VARCHAR(80), -> PRIMARY KEY (id) ->); K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 5
6.
Rubyとデータベースとの連携技術 2. MySQLバインディングによる連携 ● プログラム例 # -*- coding: utf-8 -*- require 'mysql2' # ユーザ dbuser で MySQL の test データベースに接続する. client = Mysql2::Client.new( :host => "localhost", :database => "test", :username => "dbuser", :password => "pass" ) # SQLを実行し結果セットを得る. results = client.query("SELECT * FROM students") K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 6
7.
Rubyとデータベースとの連携技術 2. MySQLバインディングによる連携 ● プログラム例 # 結果セットから全レコードのカラムの値をイテレータで取得する. results.each do |row| printf "%st%st%sn", row["id"], row["name"], row["e_mail"] end # データベースと接続をクローズする. client.close $ ruby dbaccess.rb 1234567891 鹿児島太郎 taro@kago.jp 1234567892 薩摩花子 hana@kago.jp 1234567893 西郷隆盛 taka@satsuma.jp K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 7
8.
Rubyとデータベースとの連携技術 3. ActiveRecordによる連携 ● ActiveRecord – データベース抽象レイヤのモジュール – Ruby on Railsを構成するライブラリ群の1つ – O/Rマッピング(Object / Relation Mapping)ライブラリ K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 8
9.
Rubyとデータベースとの連携技術 3. ActiveRecordによる連携 ● O/Rマッピング – データベースのレコードとRubyのオブジェクトをマップする – テーブルのフィールドが、オブジェクトの属性となり,フィー ルド名がそのままアクセサとして定義される. K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 9
10.
Rubyとデータベースとの連携技術 3. ActiveRecordによる連携 ● プログラム例(ActiveRecord編) # -*- coding: utf-8 -*- require 'active_record' # 1.8系 # require 'rubygems' # require 'activerecord' # データベースとの接続 ActiveRecord::Base.establish_connection( :adapter => 'mysql2', # 使用するDBはMySQLデータベース :host => 'localhost', :database => 'test', :username => 'dbuser', :password => 'pass' ) (次のスライドへ続く...) K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 10
11.
Rubyとデータベースとの連携技術 3. ActiveRecordによる連携 ● プログラム例(ActiveRecord編) # O/Rマッピング id,name,e_mail等の id,name,e_mail等の class Student < ActiveRecord::Base 属性メソッドは定義してない 属性メソッドは定義してない end のにも関わらず... のにも関わらず... students = Student.find(:all) students.each do |res| printf "%st%st%sn", res.id, res.name, res.e_mail end $ ruby dbaccess.rb 1234567891 鹿児島太郎 taro@kago.jp 1234567892 薩摩花子 hana@kago.jp 1234567893 西郷隆盛 taka@satsuma.jp K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 11
12.
Rubyとデータベースとの連携技術 3. ActiveRecordによる連携 ● Conversion over Configuration(CoC) – 「設定よりも規約」(Railsの哲学) – XMLファイルなどのコンフィグはいらない – すべては命名規約に従うこと K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 12
13.
Rubyとデータベースとの連携技術 3. ActiveRecordによる連携 ● YAMLファイルの利用 – YAML (YAML Ain't Markup Language) – 構造化されたテキストフォーマット – Railsでは config/database.yml で利用 YAMLファイルの例: database.yml(MySQL用) development_test: adapter: mysql2 host: localhost database: test username: dbuser password: pass socket: /opt/local/var/run/mysql5/mysqld.sock encoding: utf8 pool: 5 K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 13
14.
Rubyとデータベースとの連携技術 3. ActiveRecordによる連携 ● プログラム例(ActiveRecord,YAML利用) # -*- coding:utf-8 -*- require 'active_record' # YAMLを利用したデータベースの接続 ActiveRecord::Base.configurations = YAML.load_file('database.yml') ActiveRecord::Base.establish_connection('development_test') class Student < ActiveRecord::Base end students = Student.find(:all) students.each do |res| printf "%st%st%sn", res.id, res.name, res.e_mail end K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 14
15.
Rubyとデータベースとの連携技術 3. ActiveRecordによる連携 ● findメソッドの使用法 例えば... result = Student.find(2) これは次のSQL文と同等である SELECT * FROM students WHERE id = 2 ※プライマリキーフィールドは「id」というフィールド名でなければNG 解決策 class Student < ActiveRecord::Base set_table_name 'gakusei' # テーブル名は任意でもOK set_primary_key 's_code' # プライマリキーは任意でもOK end K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 15
16.
Rubyとデータベースとの連携技術 3. ActiveRecordによる連携 ● もうSQLは書かなくても良い? さらに条件をつけて抽出したい場合は... result = Student.find(:all, :conditions => [ 'name = ?', '鹿児島太郎' ]) SELECT * FROM students WHERE name = '鹿児島太郎' find以外にも次のようなメソッドも準備されている... result = Student.find_by_name("鹿児島太郎") さらにレコードの新規追加も... student = Student.new(:id => '1234567894', :name =>"川内次郎", :e_mail => 'jiro@kago.jp') student.save K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 16
17.
Rubyとデータベースとの連携技術 3. ActiveRecordによる連携 ● ホントにSQLは書かなくても良い? 複雑なクエリーは,直接SQLで書くことも可能... result = Student.find_by_sql("SELECT * FROM students WHERE name LIKE '%太郎%' AND e_mail LIKE '%jp%'") まとめ... ● 規約に従えばきちんとO/Rマッピングしてくれる. ● マッピングできれば用意されたメソッドで結果セットを得られる. ● 結果セットから属性メソッドでフィールドデータを得られる. ● 極力SQLを書かなくて済む ● データベースをいつでも交換できる その他... ● DMLだけでなくDDLも可能(Migrationクラス) K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 17
18.
Rubyとデータベースとの連携技術 4. おまけ ● テーブルのJOIN students(学生) subjects(科目) id name e_mail id name teacher 1234567891 鹿児島太郎 taro@kago.jp S01 情報科学入門 山田太郎 1234567892 薩摩花子 hana@kago.jp S02 エンドユーザ実習 鈴木一郎 1234567893 西郷隆盛 taka@kago.jp S03 応用数学 松井秀喜 1 1 courses(履修) student_id subject_id rating 1234567891 S02 A 1234567891 S03 B 多 1234567892 S01 C 多 1234567893 S02 B K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 18
19.
Rubyとデータベースとの連携技術 4. おまけ ● 結合ビュー student_id name subject_id name rating 1234567891 鹿児島太郎 S02 エンドユーザ実習 A 1234567891 鹿児島太郎 S03 応用数学 B 1234567892 薩摩花子 S01 情報科学入門 C 1234567893 西郷隆盛 S02 エンドユーザ実習 B mysql> SELECT student_id, students.name, subject_id, -> subjects.name, rating -> FROM students JOIN (courses JOIN subjects -> ON courses.subject_id = subjects.id ) -> ON students.id = courses.student_id; K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 19
20.
Rubyとデータベースとの連携技術 4. おまけ ● テーブルのJOIN students(学生) subjects(科目) id name e_mail id name teacher 1234567891 鹿児島太郎 taro@kago.jp S01 情報科学入門 山田太郎 1234567892 薩摩花子 hana@kago.jp S02 エンドユーザ実習 鈴木一郎 1234567893 西郷隆盛 taka@kago.jp S03 応用数学 松井秀喜 has_many :course has_many :course courses(履修) student_id subject_id rating 1234567891 S02 A 1234567891 S03 B belongs_to :student 1234567892 S01 C belongs_to :subject 1234567893 S02 B K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 20
21.
Rubyとデータベースとの連携技術 4. おまけ ● テーブル間リレーションを意識した定義 class Student < ActiveRecord::Base has_many :course end class Subject < ActiveRecord::Base has_many :course End class Course < ActiveRecord::Base belongs_to :student belongs_to :subject end K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 21
22.
Rubyとデータベースとの連携技術 4. おまけ ● 結合結果の出力 courses = Course.find(:all, :include => [:student, :subject]) courses.each do |res| printf "%st%st%st%st%sn", res.student_id, res.student.name, res.subject_id, res.subject.name, res.rating end $ ruby dbaccess.rb 1234567891 鹿児島太郎 S02 エンドユーザ実習 A 1234567891 鹿児島太郎 S03 応用数学 B 1234567892 薩摩花子 S01 情報科学入門 C 1234567893 西郷隆盛 S02 エンドユーザ実習 B K-Ruby, July 28, 2011 © Tamotsu FURUYA, All rights reserved. 22
Download