SlideShare une entreprise Scribd logo
Coat::Persistent Votre base de données  à portées d'objets FPW 2009 – 13 Juin 2009 Alexis Sukrieh http://www.sukria.net
Plan ,[object Object]
Origines de Coat::Persistent
Mise en place de Coat::Persistent
Accèder aux données (lecture/écriture)
Relations entre tables / modèles
Fonctionnement du cache
Le concept ORM Une méthode moderne et  efficace pour manipuler les données
Le principe ORM ,[object Object]
Une table devient une classe
Une ligne devient une instance
Une colonne devient un attribut
Le SQL est désormais une couche de bas niveau
Avantages ,[object Object]
Plus de code pour écrire l'application
Factorisation du problème d'accès aux données
Facilités et puissance de l'approche Objet
Simplicité d'utilisation
Avantages ,[object Object]
Plus de code pour écrire l'application
Factorisation du problème d'accès aux données
Facilités et puissance de l'approche Objet
Simplicité d'utilisation
Moins de SQL
Avantages ,[object Object]
Plus de code pour écrire l'application
Factorisation du problème d'accès aux données
Facilités et puissance de l'approche Objet
Simplicité d'utilisation
Moins de SQL
Moins de SQL
Avantages Moins de SQL ??!
Avec du SQL ... my   $sql  =  'select * from table' ; my   $sth  =  $dbh ->prepare( $sql ); $sth ->execute or  die   $! ; while  ( my   $row  =  $sth ->fetchrow_hashref()) { # ici on joue avec $row ... } On a donc 4 lignes pour pouvoir itérer sur des enregistrements...
CATS DON'T LIKE SQL
Avec Coat::Persistent foreach   my   $obj  (Table->find())  { # ici on joue avec $obj ... } Je crois que le chat s'est calmé...
Pourquoi vouloir moins de SQL ? ,[object Object]
Chaque fois qu'une requête SQL apparaît dans du code, un risque d'injection est présent
La validation des valeurs soumises en SQL est lourde
La préparation des valeurs l'est aussi (escaping, conversion de format)
Le temps passé à manipuler SQL n'est pas consacré au code métier
Mais le SQL est possible ,[object Object]
Pour les requêtes complexes, SQL reste un bon choix
Pour les requêtes simples et courantes, il faut l'éviter
Les ORM en Perl ,[object Object]
Les ORM en Perl ,[object Object]
DBIx::Class
Les ORM en Perl ,[object Object]
DBIx::Class
Rose::DB::Object
Les ORM en Perl ,[object Object]
DBIx::Class
Rose::DB::Object
...
Pourquoi un nouvel ORM ?
Les origines de Coat::Persistent ,[object Object]
Coat : le mini Moose sans dépendances
Deux bonnes idées qui méritaient d'être réunies
Objectifs pour Coat::Persistent ,[object Object]
Objectifs pour Coat::Persistent ,[object Object]
Léger
Objectifs pour Coat::Persistent ,[object Object]
Léger
Rapide
Objectifs pour Coat::Persistent ,[object Object]
Léger
Rapide
Aussi près que possible de l'API ActiveRecord

Contenu connexe

Tendances

Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelle
MICHRAFY MUSTAFA
 
Techday Arrow Group: Java 8
Techday Arrow Group: Java 8Techday Arrow Group: Java 8
Techday Arrow Group: Java 8
Arrow Group
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
Alexandru Radovici
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelle
Geeks Anonymes
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentation
julien pauli
 
PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4julien pauli
 
Java 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambdaJava 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambda
Ch'ti JUG
 
Ruby Pour RoR
Ruby Pour RoRRuby Pour RoR
Ruby Pour RoR
eric German
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
Alexandru Radovici
 
ALF 8 - Generation de code
ALF 8 - Generation de codeALF 8 - Generation de code
ALF 8 - Generation de code
Alexandru Radovici
 
ALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlleALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlle
Alexandru Radovici
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applications
Damien Seguy
 
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Marouan OMEZZINE
 
ALF 6 - Parser
ALF 6 - ParserALF 6 - Parser
ALF 6 - Parser
Alexandru Radovici
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Marouan OMEZZINE
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
Alexandru Radovici
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
Alexandru Radovici
 
Formation PHP
Formation PHPFormation PHP
Formation PHP
kemenaran
 
ALF 8 - Generation du code
ALF 8 - Generation du codeALF 8 - Generation du code
ALF 8 - Generation du code
Alexandru Radovici
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
SOAT
 

Tendances (20)

Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelle
 
Techday Arrow Group: Java 8
Techday Arrow Group: Java 8Techday Arrow Group: Java 8
Techday Arrow Group: Java 8
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelle
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentation
 
PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4
 
Java 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambdaJava 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambda
 
Ruby Pour RoR
Ruby Pour RoRRuby Pour RoR
Ruby Pour RoR
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 8 - Generation de code
ALF 8 - Generation de codeALF 8 - Generation de code
ALF 8 - Generation de code
 
ALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlleALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlle
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applications
 
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
 
ALF 6 - Parser
ALF 6 - ParserALF 6 - Parser
ALF 6 - Parser
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
Formation PHP
Formation PHPFormation PHP
Formation PHP
 
ALF 8 - Generation du code
ALF 8 - Generation du codeALF 8 - Generation du code
ALF 8 - Generation du code
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
 

En vedette

Maika 4ºEso A
Maika 4ºEso AMaika 4ºEso A
Maika 4ºEso A
yaizaa
 
Para ti
Para tiPara ti
Para ti
gloria
 
Ivan Bilibin 01
Ivan Bilibin 01Ivan Bilibin 01
Ivan Bilibin 01
Nicolás Svistoonoff
 
El Arte De Adelgazar Final
El Arte De Adelgazar FinalEl Arte De Adelgazar Final
El Arte De Adelgazar Final
Anibal Gomez
 
Groupware
GroupwareGroupware
Groupware
guest4913b
 
Figuras con hortalizas y frutas
Figuras con hortalizas y frutasFiguras con hortalizas y frutas
Figuras con hortalizas y frutas
centrowebs
 
La Cigale et la Fourmi
La Cigale et la FourmiLa Cigale et la Fourmi
La Cigale et la Fourmi
ma_clage
 
OracióN Simple Diplomado
OracióN Simple DiplomadoOracióN Simple Diplomado
OracióN Simple Diplomado
guestb62e
 
El tao de las flores y el sol
El tao de las flores y el solEl tao de las flores y el sol
El tao de las flores y el sol
gloria
 
Momentos
MomentosMomentos
Momentos
gloria
 
Paris 2.0 25 Sept 2009: Return on Attention as IT and management metric
Paris 2.0 25 Sept 2009: Return on Attention as IT and management metricParis 2.0 25 Sept 2009: Return on Attention as IT and management metric
Paris 2.0 25 Sept 2009: Return on Attention as IT and management metric
Julien Le nestour
 
La Familia
La FamiliaLa Familia
La Familia
Carmen_Rosa
 
F1 Lgica Proposicional
F1 Lgica ProposicionalF1 Lgica Proposicional
F1 Lgica Proposicional
Isidorogg
 
Innovations technologiques à Paris septembre 2012
Innovations technologiques à Paris septembre 2012Innovations technologiques à Paris septembre 2012
Innovations technologiques à Paris septembre 2012
Reporter du monde RDM-ROW Reporter Of World
 
Prueba 1
Prueba 1Prueba 1
Prueba 1
tecnica4
 
09 Le Couple Parfait
09 Le Couple Parfait09 Le Couple Parfait
09 Le Couple Parfaittoujoursplus
 

En vedette (20)

Maika 4ºEso A
Maika 4ºEso AMaika 4ºEso A
Maika 4ºEso A
 
Para ti
Para tiPara ti
Para ti
 
Ivan Bilibin 01
Ivan Bilibin 01Ivan Bilibin 01
Ivan Bilibin 01
 
El Arte De Adelgazar Final
El Arte De Adelgazar FinalEl Arte De Adelgazar Final
El Arte De Adelgazar Final
 
Groupware
GroupwareGroupware
Groupware
 
Figuras con hortalizas y frutas
Figuras con hortalizas y frutasFiguras con hortalizas y frutas
Figuras con hortalizas y frutas
 
La Cigale et la Fourmi
La Cigale et la FourmiLa Cigale et la Fourmi
La Cigale et la Fourmi
 
OracióN Simple Diplomado
OracióN Simple DiplomadoOracióN Simple Diplomado
OracióN Simple Diplomado
 
El tao de las flores y el sol
El tao de las flores y el solEl tao de las flores y el sol
El tao de las flores y el sol
 
Momentos
MomentosMomentos
Momentos
 
Paris 2.0 25 Sept 2009: Return on Attention as IT and management metric
Paris 2.0 25 Sept 2009: Return on Attention as IT and management metricParis 2.0 25 Sept 2009: Return on Attention as IT and management metric
Paris 2.0 25 Sept 2009: Return on Attention as IT and management metric
 
La Familia
La FamiliaLa Familia
La Familia
 
F1 Lgica Proposicional
F1 Lgica ProposicionalF1 Lgica Proposicional
F1 Lgica Proposicional
 
Presentació Cercam A Internet
Presentació Cercam A InternetPresentació Cercam A Internet
Presentació Cercam A Internet
 
Special2009
Special2009Special2009
Special2009
 
Innovations technologiques à Paris septembre 2012
Innovations technologiques à Paris septembre 2012Innovations technologiques à Paris septembre 2012
Innovations technologiques à Paris septembre 2012
 
Prueba 1
Prueba 1Prueba 1
Prueba 1
 
En Vacances gc.
En Vacances gc.En Vacances gc.
En Vacances gc.
 
09 Le Couple Parfait
09 Le Couple Parfait09 Le Couple Parfait
09 Le Couple Parfait
 
Megan
MeganMegan
Megan
 

Similaire à Coat::Persistent at FPW2009

Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
Korteby Farouk
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
yboussard
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQL
Hervé Leclerc
 
Hibernate
HibernateHibernate
Hibernate
Maher Megadmini
 
Patterns and OOP in PHP
Patterns and OOP in PHPPatterns and OOP in PHP
Patterns and OOP in PHPjulien pauli
 
Spring 3.0
Spring 3.0Spring 3.0
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
Michel Salib
 
Tester les applications Zend Framework
Tester les applications Zend FrameworkTester les applications Zend Framework
Tester les applications Zend FrameworkMickael Perraud
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
Hugo Hamon
 
Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?
Mickael Perraud
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introOlivier Mallassi
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab Elasticsearch
David Pilato
 
PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP Next
SQLI
 
PHP & MySQL
PHP & MySQLPHP & MySQL
PHP & MySQL
Saïd Radhouani
 
Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieurFredy Fadel
 
Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)
Novelys
 
Jump Camp - HTML5
Jump Camp - HTML5Jump Camp - HTML5
Jump Camp - HTML5
chaudavid
 
Dynamic Languages
Dynamic LanguagesDynamic Languages
Dynamic Languages
Tugdual Grall
 
Developpement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfDeveloppement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdf
rachidimstapha
 
Cours php bac info
Cours php bac infoCours php bac info
Cours php bac info
borhen boukthir
 

Similaire à Coat::Persistent at FPW2009 (20)

Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQL
 
Hibernate
HibernateHibernate
Hibernate
 
Patterns and OOP in PHP
Patterns and OOP in PHPPatterns and OOP in PHP
Patterns and OOP in PHP
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
 
Tester les applications Zend Framework
Tester les applications Zend FrameworkTester les applications Zend Framework
Tester les applications Zend Framework
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab Elasticsearch
 
PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP Next
 
PHP & MySQL
PHP & MySQLPHP & MySQL
PHP & MySQL
 
Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieur
 
Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)
 
Jump Camp - HTML5
Jump Camp - HTML5Jump Camp - HTML5
Jump Camp - HTML5
 
Dynamic Languages
Dynamic LanguagesDynamic Languages
Dynamic Languages
 
Developpement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfDeveloppement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdf
 
Cours php bac info
Cours php bac infoCours php bac info
Cours php bac info
 

Coat::Persistent at FPW2009