Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
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
kwatch
60,255 views
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
(PgDay2012発表資料) SQLにとって、なぜO/Rマッパーが重要かを説明した資料です。
Technology
◦
Read more
194
Save
Share
Embed
Embed presentation
1
/ 46
2
/ 46
3
/ 46
4
/ 46
5
/ 46
6
/ 46
7
/ 46
8
/ 46
9
/ 46
10
/ 46
11
/ 46
12
/ 46
13
/ 46
14
/ 46
15
/ 46
Most read
16
/ 46
17
/ 46
18
/ 46
19
/ 46
20
/ 46
21
/ 46
22
/ 46
23
/ 46
24
/ 46
25
/ 46
26
/ 46
27
/ 46
28
/ 46
29
/ 46
Most read
30
/ 46
31
/ 46
32
/ 46
Most read
33
/ 46
34
/ 46
35
/ 46
36
/ 46
37
/ 46
38
/ 46
39
/ 46
40
/ 46
41
/ 46
42
/ 46
43
/ 46
44
/ 46
45
/ 46
46
/ 46
Recommended
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
Serverless時代のJavaについて
by
Amazon Web Services Japan
PDF
PlaySQLAlchemy: SQLAlchemy入門
by
泰 増田
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PDF
Where狙いのキー、order by狙いのキー
by
yoku0825
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
by
Takuto Wada
PDF
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
PDF
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
PDF
ドメイン駆動設計 失敗したことと成功したこと
by
BIGLOBE Inc.
PDF
ソフトウェア設計における 意思決定とそのレビューの秘訣
by
Yoshitaka Kawashima
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PDF
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
by
Amazon Web Services Japan
PDF
Elasticsearch勉強会#44 20210624
by
Tetsuya Sodo
PDF
データベース設計徹底指南
by
Mikiya Okuno
PDF
リッチなドメインモデル 名前探し
by
増田 亨
PDF
なぜデータモデリングが重要なのか?
by
Yoshitaka Kawashima
PPTX
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
PDF
Cassandraとh baseの比較して入門するno sql
by
Yutuki r
PPTX
Databricksを初めて使う人に向けて.pptx
by
otato
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
by
Amazon Web Services Japan
PPTX
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
by
A AOKI
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PDF
Spring Boot × Vue.jsでSPAを作る
by
Go Miyasaka
PDF
Ormとの付き合い方
by
豊明 尾古
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
PDF
3000社の業務データ絞り込みを支える技術
by
Ryo Mitoma
PDF
自動テストの誤解とアンチパターン in 楽天 Tech Talk
by
kyon mm
More Related Content
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
Serverless時代のJavaについて
by
Amazon Web Services Japan
PDF
PlaySQLAlchemy: SQLAlchemy入門
by
泰 増田
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PDF
Where狙いのキー、order by狙いのキー
by
yoku0825
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
by
Takuto Wada
PDF
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
Serverless時代のJavaについて
by
Amazon Web Services Japan
PlaySQLAlchemy: SQLAlchemy入門
by
泰 増田
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
Where狙いのキー、order by狙いのキー
by
yoku0825
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
by
Takuto Wada
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
What's hot
PDF
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
PDF
ドメイン駆動設計 失敗したことと成功したこと
by
BIGLOBE Inc.
PDF
ソフトウェア設計における 意思決定とそのレビューの秘訣
by
Yoshitaka Kawashima
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PDF
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
by
Amazon Web Services Japan
PDF
Elasticsearch勉強会#44 20210624
by
Tetsuya Sodo
PDF
データベース設計徹底指南
by
Mikiya Okuno
PDF
リッチなドメインモデル 名前探し
by
増田 亨
PDF
なぜデータモデリングが重要なのか?
by
Yoshitaka Kawashima
PPTX
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
PDF
Cassandraとh baseの比較して入門するno sql
by
Yutuki r
PPTX
Databricksを初めて使う人に向けて.pptx
by
otato
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
by
Amazon Web Services Japan
PPTX
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
by
A AOKI
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PDF
Spring Boot × Vue.jsでSPAを作る
by
Go Miyasaka
PDF
Ormとの付き合い方
by
豊明 尾古
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
ドメイン駆動設計 失敗したことと成功したこと
by
BIGLOBE Inc.
ソフトウェア設計における 意思決定とそのレビューの秘訣
by
Yoshitaka Kawashima
マイクロサービス 4つの分割アプローチ
by
増田 亨
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
by
Amazon Web Services Japan
Elasticsearch勉強会#44 20210624
by
Tetsuya Sodo
データベース設計徹底指南
by
Mikiya Okuno
リッチなドメインモデル 名前探し
by
増田 亨
なぜデータモデリングが重要なのか?
by
Yoshitaka Kawashima
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
Cassandraとh baseの比較して入門するno sql
by
Yutuki r
Databricksを初めて使う人に向けて.pptx
by
otato
20220409 AWS BLEA 開発にあたって検討したこと
by
Amazon Web Services Japan
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
by
A AOKI
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
Spring Boot × Vue.jsでSPAを作る
by
Go Miyasaka
Ormとの付き合い方
by
豊明 尾古
Redisの特徴と活用方法について
by
Yuji Otani
Viewers also liked
PDF
3000社の業務データ絞り込みを支える技術
by
Ryo Mitoma
PDF
自動テストの誤解とアンチパターン in 楽天 Tech Talk
by
kyon mm
PDF
よろしい、ならばMicro-ORMだ
by
Narami Kiyokura
PDF
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
by
Jumpei Miyata
PPTX
WalB: Real-time and Incremental Backup System for Block Devices
by
uchan_nos
PDF
テスト自動化の現場から~落とし穴に気を付けよう~
by
Satsuki Urayama
3000社の業務データ絞り込みを支える技術
by
Ryo Mitoma
自動テストの誤解とアンチパターン in 楽天 Tech Talk
by
kyon mm
よろしい、ならばMicro-ORMだ
by
Narami Kiyokura
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
by
Jumpei Miyata
WalB: Real-time and Incremental Backup System for Block Devices
by
uchan_nos
テスト自動化の現場から~落とし穴に気を付けよう~
by
Satsuki Urayama
Similar to SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
PDF
ドメイン駆動設計 の 実践 Part3 DDD
by
増田 亨
KEY
実録!Railsのはまりポイント10選
by
Drecom Co., Ltd.
PDF
Sql基礎の基礎
by
Satomi Tsujita
KEY
activerecord-turntable
by
Drecom Co., Ltd.
PPTX
Qlik ReplicateにおけるExpression Builderの利用方法
by
QlikPresalesJapan
PDF
2019年度若手技術者向け講座 実践SQL
by
keki3
PDF
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)
by
AzareaCluster
PPT
分散KVSのデータモデリング
by
Tatsunori Matoba
PDF
RDB入門 ~アプリケーション開発者が陥りやすいDB開発の落とし穴~
by
nisobe58
PDF
Database smells
by
Mikiya Okuno
PDF
Ruby on Rails 入門
by
Yasuko Ohba
PDF
Active record query interface
by
Tomoya Kawanishi
PPT
Start!! Ruby
by
mitim
PDF
魂のコーディング
by
Daisuke Tasaki
PPTX
Ruby講座第二回
by
mitsunaga
PDF
名古屋Ruby会議02 LT:Ruby中級への道
by
Shigeru UCHIYAMA
PDF
Rubyプログラミング教育に対する取り組みと事例紹介
by
Yasushi Ishikawa
PDF
Tokyo Rubykaigi 01 t-wada
by
Takuto Wada
PPTX
第3回輪講
by
mh_amako
PDF
アジャイル開発を可能にするEA
by
Kent Ishizawa
ドメイン駆動設計 の 実践 Part3 DDD
by
増田 亨
実録!Railsのはまりポイント10選
by
Drecom Co., Ltd.
Sql基礎の基礎
by
Satomi Tsujita
activerecord-turntable
by
Drecom Co., Ltd.
Qlik ReplicateにおけるExpression Builderの利用方法
by
QlikPresalesJapan
2019年度若手技術者向け講座 実践SQL
by
keki3
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)
by
AzareaCluster
分散KVSのデータモデリング
by
Tatsunori Matoba
RDB入門 ~アプリケーション開発者が陥りやすいDB開発の落とし穴~
by
nisobe58
Database smells
by
Mikiya Okuno
Ruby on Rails 入門
by
Yasuko Ohba
Active record query interface
by
Tomoya Kawanishi
Start!! Ruby
by
mitim
魂のコーディング
by
Daisuke Tasaki
Ruby講座第二回
by
mitsunaga
名古屋Ruby会議02 LT:Ruby中級への道
by
Shigeru UCHIYAMA
Rubyプログラミング教育に対する取り組みと事例紹介
by
Yasushi Ishikawa
Tokyo Rubykaigi 01 t-wada
by
Takuto Wada
第3回輪講
by
mh_amako
アジャイル開発を可能にするEA
by
Kent Ishizawa
More from kwatch
PDF
O/Rマッパーによるトラブルを未然に防ぐ
by
kwatch
PDF
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
by
kwatch
PDF
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
by
kwatch
PDF
正規表現リテラルは本当に必要なのか?
by
kwatch
PDF
DBスキーマもバージョン管理したい!
by
kwatch
PDF
PHP5.5新機能「ジェネレータ」初心者入門
by
kwatch
PDF
PHPとJavaScriptにおけるオブジェクト指向を比較する
by
kwatch
PDF
Fantastic DSL in Python
by
kwatch
PDF
Cより速いRubyプログラム
by
kwatch
PDF
Migr8.rb チュートリアル
by
kwatch
PDF
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
by
kwatch
PDF
How to make the fastest Router in Python
by
kwatch
PDF
Javaより速いLL用テンプレートエンジン
by
kwatch
PDF
文字列結合のベンチマークをいろんな処理系でやってみた
by
kwatch
PDF
I have something to say about the buzz word "From Java to Ruby"
by
kwatch
PDF
Underlaying Technology of Modern O/R Mapper
by
kwatch
PDF
なんでもID
by
kwatch
PDF
Pretty Good Branch Strategy for Git/Mercurial
by
kwatch
PDF
Oktest - a new style testing library for Python -
by
kwatch
PDF
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
by
kwatch
O/Rマッパーによるトラブルを未然に防ぐ
by
kwatch
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
by
kwatch
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
by
kwatch
正規表現リテラルは本当に必要なのか?
by
kwatch
DBスキーマもバージョン管理したい!
by
kwatch
PHP5.5新機能「ジェネレータ」初心者入門
by
kwatch
PHPとJavaScriptにおけるオブジェクト指向を比較する
by
kwatch
Fantastic DSL in Python
by
kwatch
Cより速いRubyプログラム
by
kwatch
Migr8.rb チュートリアル
by
kwatch
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
by
kwatch
How to make the fastest Router in Python
by
kwatch
Javaより速いLL用テンプレートエンジン
by
kwatch
文字列結合のベンチマークをいろんな処理系でやってみた
by
kwatch
I have something to say about the buzz word "From Java to Ruby"
by
kwatch
Underlaying Technology of Modern O/R Mapper
by
kwatch
なんでもID
by
kwatch
Pretty Good Branch Strategy for Git/Mercurial
by
kwatch
Oktest - a new style testing library for Python -
by
kwatch
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
by
kwatch
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
1.
PgDay2012 LightningTalkSQL上級者にこそ知って欲しいなぜO/Rマッパー
が重要か? makoto kuwata <kwa@kuwata-lab.com> http://www.kuwata-lab.com/
2.
問:次のSQLは何が問題でしょう? copyright© 2012
kuwata-lab.com all rights reserved
3.
SQL-- 販売成績上位10コを抽出select *
from saleswhere deleted = falseorder by amount desclimit 10 文法的には正しいけど… copyright© 2012 kuwata-lab.com all rights reserved
4.
話は変わって、他のプログラミング言語 copyright©
2012 kuwata-lab.com all rights reserved
5.
Ruby## 販売実績上位Nコを抽出def sales_top(n,
rows) xs = rows.map {|row| Sale.new(*row) } xs = xs.select {|x| ! x.deleted_at } xs = xs.sort_by {|x| - x.amount } xs = xs[0, 10] return xsend copyright© 2012 kuwata-lab.com all rights reserved
6.
Ruby## 販売実績上位Nコを抽出def sales_top(n,
rows) xs = rows.map {|row| Sale.new(*row) } xs = xs.select {|x| ! x.deleted_at } xs = xs.sort_by {|x| - x.amount } xs = xs[0, 10] select from相当 return xsend copyright© 2012 kuwata-lab.com all rights reserved
7.
Ruby## 販売実績上位Nコを抽出def sales_top(n,
rows) xs = rows.map {|row| Sale.new(*row) } xs = xs.select {|x| ! x.deleted_at } xs = xs.sort_by {|x| - x.amount } xs = xs[0, 10] return xs where相当end copyright© 2012 kuwata-lab.com all rights reserved
8.
Ruby## 販売実績上位Nコを抽出def sales_top(n,
rows) xs = rows.map {|row| Sale.new(*row) } xs = xs.select {|x| ! x.deleted_at } xs = xs.sort_by {|x| - x.amount } xs = xs[0, 10] return xs order by相当end copyright© 2012 kuwata-lab.com all rights reserved
9.
Ruby## 販売実績上位Nコを抽出def sales_top(n,
rows) xs = rows.map {|row| Sale.new(*row) } xs = xs.select {|x| ! x.deleted_at } xs = xs.sort_by {|x| - x.amount } xs = xs[0, 10] return xs limit相当end copyright© 2012 kuwata-lab.com all rights reserved
10.
Ruby## 販売実績上位Nコを抽出def sales_top(n,
rows) xs = rows.map {|row| Sale.new(*row) } xs = xs.select {|x| ! x.deleted_at } xs = xs.sort_by {|x| - x.amount } xs = xs[0, 10] return xsend 1つの関数でいろんな ことをやりすぎている copyright© 2012 kuwata-lab.com all rights reserved
11.
複数の関数に分解(リファクタリング) copyright© 2012
kuwata-lab.com all rights reserved
12.
Rubydef to_sales(rows)
rows.map {|row| Sale.new(*row) }enddef active(sales) sales.select {|x| ! x.deleted_at }enddef top(n, sales) sales = sales.sort_by {|x| - x.amount } return sales[0, 10]end copyright© 2012 kuwata-lab.com all rights reserved
13.
Ruby## 使い方def sales_top(n,
rows) return top(n, active(to_sales(rows)))end 分解した関数を 組み合わせる copyright© 2012 kuwata-lab.com all rights reserved
14.
専用のクラスを定義 (オブジェクト指向) copyright©
2012 kuwata-lab.com all rights reserved
15.
Rubyclas Sales
def initialize(rows) @all = rows.map {|row| Sales.new(*row) } end attr_reader :all def active @all = @all.select {|x| ! x.deleted } return self end def top(n) @all = @all.sort_by {|x| - x.amount } @all = @all[0, n] return self endend copyright© 2012 kuwata-lab.com all rights reserved
16.
Ruby## 使い方Sales.new(rows).active().top(10).all()
分解したメソッドを 組み合わせる copyright© 2012 kuwata-lab.com all rights reserved
17.
プログラミング言語が持っている基本機能 copyright©
2012 kuwata-lab.com all rights reserved
18.
• 「全体」 「部分」
を に分解する機能• 「部分」 「全体」 から を構築する機能• 「部分」に名前をつけて抽象化する機能 copyright© 2012 kuwata-lab.com all rights reserved
19.
改めて、次のSQLは何が問題でしょう? copyright© 2012
kuwata-lab.com all rights reserved
20.
SQL-- 販売成績上位10コを抽出select *
from saleswhere deleted = falseorder by amount desclimit 10 copyright© 2012 kuwata-lab.com all rights reserved
21.
SQLは、分解・構築・抽象化の機能が弱っちい! copyright©
2012 kuwata-lab.com all rights reserved
22.
そこでO/R Mapper!!
copyright© 2012 kuwata-lab.com all rights reserved
23.
ORMを使うことで、•SQLを小さい部品に分解• 部品からSQL全体を構築• 部品に名前をつけて抽象化できるようになる!
copyright© 2012 kuwata-lab.com all rights reserved
24.
サンプルコード:ActiveRecord (Rails3)
copyright© 2012 kuwata-lab.com all rights reserved
25.
Ruby
where deleted = falseclass Sales < ActiveReocrd::Base に相当する「部分」 named_scope :active, {:conditions=>"deleted = false"} named_scope :top, lambda do |n| {:order=>"amount desc", :limit=>n} end order by amount desc limit nend に相当する「部分」 copyright© 2012 kuwata-lab.com all rights reserved
26.
「部分」を組み合わせて
Ruby 「全体」を構築Sales.active().top(10).all()## これは## select * from sales## where deleted = false## order by amount desc limit 10## を生成して実行する ※(2012-12-19) 「と同じ」を「を生成して実行する」に修正 copyright© 2012 kuwata-lab.com all rights reserved
27.
サンプルコード:DataMapper copyright© 2012
kuwata-lab.com all rights reserved
28.
Rubyclass Sales
where deleted = false include DataMapper::Resource に相当する「部分」 def self.active where(:deleted => false) end def self.top(n) order(:amount.desc).limit(n) endend order by amount desc limit n に相当する「部分」 copyright© 2012 kuwata-lab.com all rights reserved
29.
「部分」を組み合わせて
Ruby 「全体」を構築Sales.active().top(10).all()## これも## select * from sales## where deleted = false## order by amount desc limit 10## を生成して実行する ※(2012-12-19) 「と同じ」を「を生成して実行する」に修正 copyright© 2012 kuwata-lab.com all rights reserved
30.
別のサンプル:副問い合わせcopyright© 2012 kuwata-lab.com
all rights reserved
31.
SQL-- 年齢が20歳の社員が所属する部署一覧select *
from departmentswhere id in (select dept_id from employees where age = 20)order by name SQLに「部品化」の機能が ないことを示す典型例 ※(2012-12-13) "select id" を "select dept_id" に修正 copyright© 2012 kuwata-lab.com all rights reserved
32.
サンプルコード:
Sequelcopyright© 2012 kuwata-lab.com all rights reserved
33.
副問い合わせを切り出して
名前を付ける Rubydept_ids = Employee.select(:dept_id) .filter(:age=>20)Department.filter(:id=>dept_ids).all() SQL構築が簡潔になる SQLselect * from departmentswhere id in (select dept_id from employees where age = 20) copyright© 2012 kuwata-lab.com all rights reserved
34.
Rubydept_ids = Employee.select(:dept_id)
.filter(:age=>20)Department.filter(:id=>dept_ids).all()Budget.filter(:dept_id=>dept_ids).all() 部品化した副問い合わせを複数の SQLで共用できる(with句より便利) copyright© 2012 kuwata-lab.com all rights reserved
35.
別のサンプル:重複した式copyright© 2012 kuwata-lab.com
all rights reserved
36.
SQL-- 誕生日をもとに年齢を計算select date_part('year',
age(birth)) as age, count(*)from userswhere date_part('year', age(birth)) < 20group by date_part('year', age(birth))order by age 同じ式が重複して出現 copyright© 2012 kuwata-lab.com all rights reserved
37.
サンプルコード:SQLAlchemy copyright© 2012
kuwata-lab.com all rights reserved
38.
年齢の計算式を表す構文木を作り、
Pythonfrom sqlalchemy.sql import func as fnage = fn.date_part('year', fn.age(User.birth))rows = DBSession .query(age, fn.count('*')) .select_from(User) .filter(age < 20) .group_by(age) .order_by(age) .all() それを複数箇所で使用できる copyright© 2012 kuwata-lab.com all rights reserved
39.
つまりcopyright© 2012 kuwata-lab.com
all rights reserved
40.
• SQLには部品化の機能がない →
SQLが長くなる・わかりにくい → 複数のSQLで要素の重複が多い• ORMはSQL要素の部品化ができる → SQL構築が簡潔・わかりやすい → 複数のSQLで部品を共用できる copyright© 2012 kuwata-lab.com all rights reserved
41.
• SQLには部品化の機能がない →
SQLが長くなる・わかりにくい → 複数のSQLで要素の重複が多い• ORMはSQL要素の部品化ができる → SQL構築が簡潔・わかりやすい → 複数のSQLで部品を共用できる copyright© 2012 kuwata-lab.com all rights reserved
42.
たとえるならcopyright© 2012 kuwata-lab.com
all rights reserved
43.
まだ進化の途中な
高水準へと進化 ので暖かい目を!Lisp, Ruby Modern ORMC, Pascal JDBC, DBIAssembler SQL 低水準から copyright© 2012 kuwata-lab.com all rights reserved
44.
まとめcopyright© 2012 kuwata-lab.com
all rights reserved
45.
• 一般のプログラミング言語には 「分解」「構築」「抽象化」
の機能がある• SQLはそれらが弱っちい• モダンなORMなら、それらの機能 をSQLに提供できる ORMはSQLの高水準言語 or DSL! copyright© 2012 kuwata-lab.com all rights reserved
46.
おしまいcopyright© 2012 kuwata-lab.com
all rights reserved
[8]
ページ先頭
©2009-2025
Movatter.jp