SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Downloaden Sie, um offline zu lesen
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

Más contenido relacionado

Was ist angesagt?

Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelleMICHRAFY MUSTAFA
 
Techday Arrow Group: Java 8
Techday Arrow Group: Java 8Techday Arrow Group: Java 8
Techday Arrow Group: Java 8Arrow Group
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelleGeeks Anonymes
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentationjulien 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 lambdaCh'ti JUG
 
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 controlleAlexandru Radovici
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applicationsDamien 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 OMEZZINEMarouan OMEZZINE
 
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 OMEZZINEMarouan 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
 
Formation PHP
Formation PHPFormation PHP
Formation PHPkemenaran
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scalaSOAT
 

Was ist angesagt? (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
 

Andere mochten auch

Maika 4ºEso A
Maika 4ºEso AMaika 4ºEso A
Maika 4ºEso Ayaizaa
 
El Arte De Adelgazar Final
El Arte De Adelgazar FinalEl Arte De Adelgazar Final
El Arte De Adelgazar FinalAnibal Gomez
 
Figuras con hortalizas y frutas
Figuras con hortalizas y frutasFiguras con hortalizas y frutas
Figuras con hortalizas y frutascentrowebs
 
La Cigale et la Fourmi
La Cigale et la FourmiLa Cigale et la Fourmi
La Cigale et la Fourmima_clage
 
OracióN Simple Diplomado
OracióN Simple DiplomadoOracióN Simple Diplomado
OracióN Simple Diplomadoguestb62e
 
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 solgloria
 
Momentos
MomentosMomentos
Momentosgloria
 
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 metricJulien Le nestour
 
F1 Lgica Proposicional
F1 Lgica ProposicionalF1 Lgica Proposicional
F1 Lgica ProposicionalIsidorogg
 
09 Le Couple Parfait
09 Le Couple Parfait09 Le Couple Parfait
09 Le Couple Parfaittoujoursplus
 

Andere mochten auch (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
 

Ähnlich wie Coat::Persistent at FPW2009

Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database ConnectivityKorteby Farouk
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Pythonyboussard
 
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 noSQLHervé Leclerc
 
Patterns and OOP in PHP
Patterns and OOP in PHPPatterns and OOP in PHP
Patterns and OOP in PHPjulien pauli
 
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 PerformantHugo 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 ElasticsearchDavid Pilato
 
PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP NextSQLI
 
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 - HTML5chaudavid
 
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.pdfrachidimstapha
 

Ähnlich wie 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
 

Último

Installation de Sylius 2.0 et découverte du nouveau backoffice en Bootstrap
Installation de Sylius 2.0 et découverte du nouveau backoffice en BootstrapInstallation de Sylius 2.0 et découverte du nouveau backoffice en Bootstrap
Installation de Sylius 2.0 et découverte du nouveau backoffice en BootstrapMaxime Huran 🌈
 
KIT-COPILOT and more Article du 20240311
KIT-COPILOT and more Article du 20240311KIT-COPILOT and more Article du 20240311
KIT-COPILOT and more Article du 20240311Erol GIRAUDY
 
The Importance of Indoor Air Quality (French)
The Importance of Indoor Air Quality (French)The Importance of Indoor Air Quality (French)
The Importance of Indoor Air Quality (French)IES VE
 
Les Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence ArtificielleLes Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence ArtificielleErol GIRAUDY
 
Mes succès sur Microsoft LEARN et examens
Mes succès sur Microsoft LEARN et examensMes succès sur Microsoft LEARN et examens
Mes succès sur Microsoft LEARN et examensErol GIRAUDY
 
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...Infopole1
 

Último (6)

Installation de Sylius 2.0 et découverte du nouveau backoffice en Bootstrap
Installation de Sylius 2.0 et découverte du nouveau backoffice en BootstrapInstallation de Sylius 2.0 et découverte du nouveau backoffice en Bootstrap
Installation de Sylius 2.0 et découverte du nouveau backoffice en Bootstrap
 
KIT-COPILOT and more Article du 20240311
KIT-COPILOT and more Article du 20240311KIT-COPILOT and more Article du 20240311
KIT-COPILOT and more Article du 20240311
 
The Importance of Indoor Air Quality (French)
The Importance of Indoor Air Quality (French)The Importance of Indoor Air Quality (French)
The Importance of Indoor Air Quality (French)
 
Les Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence ArtificielleLes Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence Artificielle
 
Mes succès sur Microsoft LEARN et examens
Mes succès sur Microsoft LEARN et examensMes succès sur Microsoft LEARN et examens
Mes succès sur Microsoft LEARN et examens
 
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...
 

Coat::Persistent at FPW2009