#SQL #Performance
Un datamapper sous stéroïdes
Xavier Leune
@beoneself
Sylvain Robez-Masson
@oxman
Le groupe CCM Benchmark
Nos chiffres
+ 60 M VU Monde (Comscore)
+ 24 M VU France (Mediametrie - Desktop)
+ 700M Pages Vues
https://www.flickr.com/photos/jasoneppink/4154780798
La perf avant tout
100
ms
8
Mo
10
Req
Notre outil devra être conçu pour être
performant
Performance
Active Record… Seriously ?
Le pattern DataMapper
Les dévs doivent savoir ce qu’ils font
Pas d’abstraction
Eager Loading / Lazy Loading : Jamais la
bonne réponse
Un no-RM
Qui souhaite apprendre un méta langage
pour écrire des requêtes ?
Raw SQL
Un outil générique
Une conception sur-mesure
Démo / Comparatifs Blackfire
Code
Principes clés
"La nativité c'est important"
Mère Teresa
mysqlnd / php-pgsql
C'est mal mais c'est la vie
Multi BDD
C'est bien, mangez en
Master / Slave
Ce dont vous avez besoin, quand vous en
avez besoin
Lazy hydratation
DoctrineCache est dans la place
Cache
Une volonté de stabilité
Supporté par une
entreprise
Démo / Comparatifs Blackfire
Code
Merci !
http://tech.ccmbg.com/

Ting - Un datamapper PHP sous stéroïdes

Notes de l'éditeur

  • #6 4 sites dans le top 40
  • #7 Attention les chiffres qui suivent peuvent heurter la sensibilité de certains ORMs
  • #8 Pourquoi on est aussi sévères Pourquoi varnish / le cdn ne sont pas les seules bonnes réponses 10 To de RAM pour varnisher tous nos sites
  • #10 Pour un project long terme, Active Record n’est pas un bon choix. D’ailleurs c’est considéré comme un anti pattern  Séparation des responsabilités!
  • #11 On ne développe pas des librairies mais des implémentations. Nous avons actuellement Postgresql & MariaDb  on souhaite pouvoir utiliser les syntaxes spécifiques de ces outils lorsque c’est nécessaire.
  • #12 Le problème avec les systèmes qui ont un comportement par défaut avec un parti pris comme dans le cas du eager / lazy loading c'est que c'est jamais la bonne réponse par défaut !
  • #17 Ting utilise uniquement les drivers natifs et n'exploite pas pdo afin d'éviter tout intérmédiaire et pour obtenir le plus d'infos possible
  • #18 Un peu commes les boites noires du gouvernement, vos requetes sont sur écoute. On regarde notamment les métadonnées renvoyées par les drivers. Ca nous permet d'analyser des requetes complexes et de mapper efficaement les requetes sql natives
  • #19 Utilisation facilitée Optimisation des connexions
  • #22 Raw Result on définit forcément la clé de cache ==> si on change l'hydratation, on a pas à changer la clé de cache