SlideShare une entreprise Scribd logo
1  sur  62
RubyKaigi2011




Underlaying Technology of
Modern O/R Mappter


makoto kuwata
http://www.kuwata-lab.com/
Table of Contents
 The Goal of Modern ORM
 Query Object
 View-layer Cacing
 Ruby-to-SQL Transformation
 How to Prevent SQL Injection
The Goal of Modern ORM
What is the Problem?
By the way...
Refactoring
Key Points
 Programming language can
  break large part into small pieces
  construct large part from small pieces
  add name to pieces in order to abstract
  them
Again, What is the Problem?
       	  	        	 
     	                    	    	 
     	    	             	 
     	 
      • SQL can't break large one into pieces
      • SQL can't be constructed from pieces
      • SQL can't name or abstract pieces
Does ORM Solve it?
    	                 	 
         	    	  	 



	 	                               	    	 
	 	                        	 
	 	 
                                Not abstracted
Abstract by Named Scope
History of Evolution
    OOP,
                Modern ORM
  Functional



  C, Pascal      DBI, ORM



  Assembler        SQL
Conclusion of this section
 SQL is just Assembler
  It can't be broken into pieces
  It can't be constructed from pieces
  It can't name or abstract pieces
 Modern ORM provides abstraction for
 SQL
  ex. named_scope
Query Object
Kwd arg vs. Method Chain
Query Object (1)
Query Object (2)
Method Call vs. Query Op
               Just a method call

	 	 	 	 	                   	      	    	 
	 	 	 	 	         	 


                  	    	      	 
	 	 	 	 	 	 
	 	 	 	 	 	 
                   Operation to Query object
Query Operation (1)
   	                    Just a method call
Query Operation (2)
   	                     Just a method call
Query Operation (3)
   	                    Just a method call
Query Operation (4)
   	                   Just a method call
Query == Collection
            Array
    	  	 
              	     	    	 

        ActiveRecord::Relation
Action to Collection
 	    	 
                       condition
                           	     	         	 

 	         	 
                  condition
SQL Abstraction (1)
SQL Abstraction (2)
OT: Partial Application
Conslution of this section
 Query object
  is the key concept for modern ORM
  behaves like a collection
  abstracts SQL
ORM and View-layer Cache
Example: Fragment Cache
Example: Controller
       	 
	 	         	  	 

            Submits SQL everytime
Move find() from C to V?
    	              	           	     	 

	 	      	                                 	     	    	 
	 	                  	    	 
	 	      	         	 
                                    MVC broken
Check Cache Existence?

                    C depends on V tightly
What is the Problem?
                    View

                                 Cache: Pull-style

MVC: Push-style
                       Context Data


                  Controller
Sol: Proc or Lambda (C)
      	 
	 	        	  	       	 
	 	 	 	 
	 	 
                   find(:all) is not called yet
Sol: Proc or Lambda (V)
   	        	            	    	 
	 	 
	 	  	                             	    	    	 
	 	 	 	          	       	 
	 	  	      	 
	 	                   Call find(:all) only when
     	   	            cache is expired
Sol: Proc or Lambda
 Pros.
  Easy to understand & implement
 Cons.
  Caching on V affects to C
  (C must be changed according to V)
Sol: Lazy Loading (C)
       	 
	 	      	    	 
	 	                 	  	 
	 	      	 
	 	                	  	 

                            SQL is not executed yet
Sol: Lazy Loading (V)
   	        	           	    	 
	 	 
	 	  	                  	    	    	 
	 	 	 	          	      	 
	 	  	      	 
	 	 
     	   	 
                      Nothing to be changed!
Sol: Lazy Loading
 Pros.
  Caching on V doesn't affect to C
 Cons.
  Availables only on modern ORM
  (not available on Rails2)
Conclusion of this section
 MVC and fragment cache are not good
 friends
  MVC: push-style
  Fragment cache: pull-style
 Laziness solves them
  Proc or lambda
  Lazy loading
N+1 Problem
What is N+1 Problem? (1)
       	 
	 	         	 


       	 
	 	              	 

                      Team : Member = 1 : N
What is N+1 Problem? (2)
                      	    	       	 

	    	    	    	    	           }1
	    	    	    	    	      	     	 
	 
	 
     	 
     	 
          	 
          	 
               	 
               	 
                    	 
                    	 
                           	 
                           	 
                                 	 
                                 	      }N
Sol: Eager Loading
Sol: Eager Loading
 Pros.
  Easy to understand
 Cons.
  Not adaptive to changes
    Easy to forget
    Hard to notice
  Unused eager loading is very waste
Sol: Strategic Eager Loading
Sol: Strategic Eager Loading
    	 
              	  	 

	 	      	             	  	     	 

	 	  	 	 	             	  	     	 
	 	  	 	 	 	 	 	 	 	 	 	 	 	      	    	    	 
                • Each item knows its collection
                • Collection resolves relationships
Sol: Strategic Eager Loading
 Pros.
  Adaptive to changes
  (No need to specify relationship for eager
  loading)
 Cons.
  Not supported in Rails (2 & 3)
Conclusion of this section
 Eager loading
  Easy to forget, hard to notice
 Strategic Eager Loading
  No need to specify relation names
  Adaptive to changes
Ruby-to-SQL Translation
Evaluation

    x=1
    x+1      2
AST by Evaluation

 x = Column.new(:x)

 x+1             +


             x       1
Operator Override
Ruby to AST to SQL
	    	  	 	 	 	 	 	 	 	 	         	  	 


                                 ==
	    	  	 	 	 	                           	  	  	 	 	 

Operator                     x        1
Override
Other Examples
Sequel Example
Pitfalls
 1.8 doesn't allow to override '!=' operator
  Use 1.9
 Impossible to override '&&' nor '||'
  Use '&' and '|' instead, or 'AND()', 'OR()'
OT: Operast
 Library to convert Ruby expression into
 other language (such as SQL).
 https://github.com/kwatch/operast
OT: Oktest
 New-style testing library for Python
 Apply Operator Override to Testing
 http://packages.python.org/Oktest/
Conclusion of this section
 How to
  Ruby to AST (by Operator Override)
  AST to SQL
Any Questions?
Underlaying Technology of Modern O/R Mapper

Contenu connexe

En vedette

Software de gerenciamento de impressão - Thiarlei - Impressão Gerenciada
Software de gerenciamento de impressão - Thiarlei - Impressão GerenciadaSoftware de gerenciamento de impressão - Thiarlei - Impressão Gerenciada
Software de gerenciamento de impressão - Thiarlei - Impressão GerenciadaThiarlei Macedo
 
Pst to eml converter for Mac
Pst to eml converter for MacPst to eml converter for Mac
Pst to eml converter for MacDigital Tweaks
 
Horario de recuperaciones jornada mañana
Horario de recuperaciones jornada mañanaHorario de recuperaciones jornada mañana
Horario de recuperaciones jornada mañanacolegiommc
 
Financial Inclusion for Inclusive Growth – Save the Farmer Campaign
Financial Inclusion for Inclusive Growth – Save the Farmer CampaignFinancial Inclusion for Inclusive Growth – Save the Farmer Campaign
Financial Inclusion for Inclusive Growth – Save the Farmer CampaigneGov Magazine
 
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...Thiarlei Macedo
 
LTS presentation
LTS presentationLTS presentation
LTS presentationdharden
 
Intro to Python for Data Science
Intro to Python for Data ScienceIntro to Python for Data Science
Intro to Python for Data Sciencepaul gureghian
 
Parquetry Flooring in Sydney
Parquetry Flooring in SydneyParquetry Flooring in Sydney
Parquetry Flooring in SydneyAdvance Flooring
 
Panorama do Mercado de Impressoras 2013 - Thiarlei - Outsourcing Trends 2014
Panorama do Mercado de Impressoras 2013  - Thiarlei - Outsourcing Trends 2014Panorama do Mercado de Impressoras 2013  - Thiarlei - Outsourcing Trends 2014
Panorama do Mercado de Impressoras 2013 - Thiarlei - Outsourcing Trends 2014Thiarlei Macedo
 
Software de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão GerenciadaSoftware de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão GerenciadaThiarlei Macedo
 
Condition of farmer in india
Condition of farmer in indiaCondition of farmer in india
Condition of farmer in indiasurya prakash
 
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...Cristiane Assis
 
Ana Popovic HE Marketing
Ana Popovic HE MarketingAna Popovic HE Marketing
Ana Popovic HE MarketingAna Popović
 
As relacións semánticas
As relacións semánticasAs relacións semánticas
As relacións semánticasrrlvp
 

En vedette (18)

Software de gerenciamento de impressão - Thiarlei - Impressão Gerenciada
Software de gerenciamento de impressão - Thiarlei - Impressão GerenciadaSoftware de gerenciamento de impressão - Thiarlei - Impressão Gerenciada
Software de gerenciamento de impressão - Thiarlei - Impressão Gerenciada
 
Pst to eml converter for Mac
Pst to eml converter for MacPst to eml converter for Mac
Pst to eml converter for Mac
 
Horario de recuperaciones jornada mañana
Horario de recuperaciones jornada mañanaHorario de recuperaciones jornada mañana
Horario de recuperaciones jornada mañana
 
Wiki y blog
Wiki y blog Wiki y blog
Wiki y blog
 
Financial Inclusion for Inclusive Growth – Save the Farmer Campaign
Financial Inclusion for Inclusive Growth – Save the Farmer CampaignFinancial Inclusion for Inclusive Growth – Save the Farmer Campaign
Financial Inclusion for Inclusive Growth – Save the Farmer Campaign
 
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...
 
LTS presentation
LTS presentationLTS presentation
LTS presentation
 
Plato,jarra
Plato,jarraPlato,jarra
Plato,jarra
 
Intro to Python for Data Science
Intro to Python for Data ScienceIntro to Python for Data Science
Intro to Python for Data Science
 
Parquetry Flooring in Sydney
Parquetry Flooring in SydneyParquetry Flooring in Sydney
Parquetry Flooring in Sydney
 
Panorama do Mercado de Impressoras 2013 - Thiarlei - Outsourcing Trends 2014
Panorama do Mercado de Impressoras 2013  - Thiarlei - Outsourcing Trends 2014Panorama do Mercado de Impressoras 2013  - Thiarlei - Outsourcing Trends 2014
Panorama do Mercado de Impressoras 2013 - Thiarlei - Outsourcing Trends 2014
 
Software de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão GerenciadaSoftware de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão Gerenciada
 
Cluster bean
Cluster beanCluster bean
Cluster bean
 
Condition of farmer in india
Condition of farmer in indiaCondition of farmer in india
Condition of farmer in india
 
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...
 
Ana Popovic HE Marketing
Ana Popovic HE MarketingAna Popovic HE Marketing
Ana Popovic HE Marketing
 
Natural resource
Natural resourceNatural resource
Natural resource
 
As relacións semánticas
As relacións semánticasAs relacións semánticas
As relacións semánticas
 

Similaire à Underlaying Technology of Modern O/R Mapper

01.egovFrame Training Book II
01.egovFrame Training Book II01.egovFrame Training Book II
01.egovFrame Training Book IIChuong Nguyen
 
Cocoa Design Patterns
Cocoa Design PatternsCocoa Design Patterns
Cocoa Design Patternssgleadow
 
Solving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalizationSolving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalizationdmcfarlane
 
Akiban Technologies: Renormalize
Akiban Technologies: RenormalizeAkiban Technologies: Renormalize
Akiban Technologies: RenormalizeAriel Weil
 
Akiban Technologies: Renormalize
Akiban Technologies: RenormalizeAkiban Technologies: Renormalize
Akiban Technologies: RenormalizeAriel Weil
 
Advanced Php/Mysql Training With live project
Advanced Php/Mysql Training With live projectAdvanced Php/Mysql Training With live project
Advanced Php/Mysql Training With live projectShaheel Khan
 
04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment WorkshopChuong Nguyen
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts weili_at_slideshare
 
Object- Relational Persistence in Smalltalk
Object- Relational Persistence in SmalltalkObject- Relational Persistence in Smalltalk
Object- Relational Persistence in SmalltalkESUG
 
Object Oriented Concepts and Principles
Object Oriented Concepts and PrinciplesObject Oriented Concepts and Principles
Object Oriented Concepts and Principlesdeonpmeyer
 
High-performance model queries
High-performance model queriesHigh-performance model queries
High-performance model queriesIstvan Rath
 
Scotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloScotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloJulian Arocena
 
Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012Anton Arhipov
 
High performance database applications with pure query and ibm data studio.ba...
High performance database applications with pure query and ibm data studio.ba...High performance database applications with pure query and ibm data studio.ba...
High performance database applications with pure query and ibm data studio.ba...Vladimir Bacvanski, PhD
 
Reuse and cloud in component based development
Reuse and cloud in component based developmentReuse and cloud in component based development
Reuse and cloud in component based developmentscuffio
 
Thu 1100 duncan_john_color
Thu 1100 duncan_john_colorThu 1100 duncan_john_color
Thu 1100 duncan_john_colorDATAVERSITY
 

Similaire à Underlaying Technology of Modern O/R Mapper (20)

01.egovFrame Training Book II
01.egovFrame Training Book II01.egovFrame Training Book II
01.egovFrame Training Book II
 
Jvm fundamentals
Jvm fundamentalsJvm fundamentals
Jvm fundamentals
 
Cocoa Design Patterns
Cocoa Design PatternsCocoa Design Patterns
Cocoa Design Patterns
 
Introducing spring
Introducing springIntroducing spring
Introducing spring
 
Solving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalizationSolving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalization
 
Akiban Technologies: Renormalize
Akiban Technologies: RenormalizeAkiban Technologies: Renormalize
Akiban Technologies: Renormalize
 
Akiban Technologies: Renormalize
Akiban Technologies: RenormalizeAkiban Technologies: Renormalize
Akiban Technologies: Renormalize
 
Advanced Php/Mysql Training With live project
Advanced Php/Mysql Training With live projectAdvanced Php/Mysql Training With live project
Advanced Php/Mysql Training With live project
 
04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop
 
Cp7 rpc
Cp7 rpcCp7 rpc
Cp7 rpc
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts
 
Object- Relational Persistence in Smalltalk
Object- Relational Persistence in SmalltalkObject- Relational Persistence in Smalltalk
Object- Relational Persistence in Smalltalk
 
Object Oriented Concepts and Principles
Object Oriented Concepts and PrinciplesObject Oriented Concepts and Principles
Object Oriented Concepts and Principles
 
High-performance model queries
High-performance model queriesHigh-performance model queries
High-performance model queries
 
Scotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloScotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao Pablo
 
Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012
 
High performance database applications with pure query and ibm data studio.ba...
High performance database applications with pure query and ibm data studio.ba...High performance database applications with pure query and ibm data studio.ba...
High performance database applications with pure query and ibm data studio.ba...
 
Oracle sql demo
Oracle sql demoOracle sql demo
Oracle sql demo
 
Reuse and cloud in component based development
Reuse and cloud in component based developmentReuse and cloud in component based development
Reuse and cloud in component based development
 
Thu 1100 duncan_john_color
Thu 1100 duncan_john_colorThu 1100 duncan_john_color
Thu 1100 duncan_john_color
 

Plus de kwatch

How to make the fastest Router in Python
How to make the fastest Router in PythonHow to make the fastest Router in Python
How to make the fastest Router in Pythonkwatch
 
Migr8.rb チュートリアル
Migr8.rb チュートリアルMigr8.rb チュートリアル
Migr8.rb チュートリアルkwatch
 
なんでもID
なんでもIDなんでもID
なんでもIDkwatch
 
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方kwatch
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方kwatch
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐkwatch
 
正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?kwatch
 
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)kwatch
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するkwatch
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?kwatch
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Pythonkwatch
 
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策kwatch
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 
Pretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/MercurialPretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/Mercurialkwatch
 
Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -kwatch
 
文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみた文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみたkwatch
 
I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"kwatch
 
Cより速いRubyプログラム
Cより速いRubyプログラムCより速いRubyプログラム
Cより速いRubyプログラムkwatch
 
Javaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジンJavaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジンkwatch
 

Plus de kwatch (20)

How to make the fastest Router in Python
How to make the fastest Router in PythonHow to make the fastest Router in Python
How to make the fastest Router in Python
 
Migr8.rb チュートリアル
Migr8.rb チュートリアルMigr8.rb チュートリアル
Migr8.rb チュートリアル
 
なんでもID
なんでもIDなんでもID
なんでもID
 
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?
 
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Python
 
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
Pretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/MercurialPretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/Mercurial
 
Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -
 
文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみた文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみた
 
I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"
 
Cより速いRubyプログラム
Cより速いRubyプログラムCより速いRubyプログラム
Cより速いRubyプログラム
 
Javaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジンJavaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジン
 

Dernier

Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 

Dernier (20)

Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 

Underlaying Technology of Modern O/R Mapper