SlideShare uma empresa Scribd logo
1 de 42
L’AVENIR DE LAMP
      Innovation dans la pile
   AFUP, Paris, 12 novembre 2009
C’EST GLACHMMP!
C’EST GLACHMMP!
              S’il vous plait,
        utilisez plus de voyelles
 dans les noms de projets Open Source
ORDRE DU JOUR

D’éléphpants

De canapés

D’engrenages

D’esclaves

De cochons
INTERVENANT

Damien Seguy

Services expert Open Source

Eleveur d’éléphpants

damien.seguy@alterway.fr
ARCHI
Approche classique
CACHE LOCAL


Cache local

Redondance                        Cache   Cache

Double travail
                                  Web     Web
Limitation à la capacité locale
AVEC MEMCACHE


Cache partagé

Capacité doublée            Memcache
Partage des résultats
                          Web      Web
La capacité dépasse les
limitations physiques
PRATIQUE COURANTE


Cache partagé
                                  Memcache
Capacité extensible
                            Web   Web    Web
Centralisation des caches
MEMCACHE


http://memcached.org/

Un cache géant en mémoire

Une table de hashage extensible

Intégrée dans PHP
EXEMPLE

<?php

$memcache = new Memcache;
$memcache->connect('memcache.wan', 11211);

$membre = new Membre_AFUP();
$membre->nom = 'Seguy';
$membre->prenom = 'Damien';
$membre->elephpants = 1009;

$memcache->set( $membre->nom. $membre->prenom, 
               $membre, false, 0);
?>
EXEMPLE

add         <?php

            $memcache = new Memcache;
get         $memcache->connect('memcache.wan', 11211);

            $membre = $memcache->get('DamienSeguy');
set
            var_dump($membre);
            ?>
replace

increment
UTILISATION


Reproduction rapide d’objets/ contextes

Résultats de requêtes SQL

Fichiers distants (RSS, etc...)

Stockage de sessions
ARCHI
Approche avec cache
STOCKAGE DE BLOB


Memcache == stockage de BLOB

Stockage plus structuré ?

  Tableaux de données, multi-dimensionnels
ENTREPÔTS CLÉ/VALEUR

 Uniquement des paires clé => valeur

 Les lignes deviennent un document

 Les tables deviennent des collections

 Il n’y a plus de modèle de données

   Quelques types : date, entier, chaîne, booléen, list, map
STRUCTURE

{
    "_id": "ABBC89DDEBC",
    "_rev": "876BBDC",
    "type": "blog",
    "titre": "Un nouveau paradigme de bases de données",
    "contenus": "Un nouveau paradigme de bases de données",
    "tags": ["bd", "json", "super"],
    "publié": true
}
STRUCTURE
       Format JSON (comme XML, mais plus simple)


{
    "_id": "ABBC89DDEBC",
    "_rev": "876BBDC",
    "type": "blog",
    "titre": "Un nouveau paradigme de bases de données",
    "contenus": "Un nouveau paradigme de bases de données",
    "tags": ["bd", "json", "super"],
    "publié": true
}
STRUCTURE
       Format JSON (comme XML, mais plus simple)

                                Clé primaire pour tous
{
    "_id": "ABBC89DDEBC",
    "_rev": "876BBDC",
    "type": "blog",
    "titre": "Un nouveau paradigme de bases de données",
    "contenus": "Un nouveau paradigme de bases de données",
    "tags": ["bd", "json", "super"],
    "publié": true
}
STRUCTURE
       Format JSON (comme XML, mais plus simple)

                                Clé primaire pour tous
{
    "_id": "ABBC89DDEBC",
    "_rev": "876BBDC",           Numéro de révision
    "type": "blog",
    "titre": "Un nouveau paradigme de bases de données",
    "contenus": "Un nouveau paradigme de bases de données",
    "tags": ["bd", "json", "super"],
    "publié": true
}
STRUCTURE
       Format JSON (comme XML, mais plus simple)

                                Clé primaire pour tous
{
    "_id": "ABBC89DDEBC",
    "_rev": "876BBDC",           Numéro de révision
    "type": "blog",
    "titre": "Un nouveau paradigme de bases de données",
    "contenus": "Un nouveau paradigme de bases de données",
    "tags": ["bd", "json", "super"],
    "publié": true
}

                            Booléen
STRUCTURE
       Format JSON (comme XML, mais plus simple)

                                Clé primaire pour tous
{
    "_id": "ABBC89DDEBC",
    "_rev": "876BBDC",           Numéro de révision
    "type": "blog",
    "titre": "Un nouveau paradigme de bases de données",
    "contenus": "Un nouveau paradigme de bases de données",
    "tags": ["bd", "json", "super"],
    "publié": true
}                                      Liste
                            Booléen
VUES                      function (doc) {
                               for(var i in doc.tags)
                                 emit(doc.tags[i], 1);
                          }



Les vues sont écrites en JavaScript
                                                         "bd"
                                                         "json"
Possibilités de filtrer, retraiter
                                                         "super"
Approche map/reduce

Groupages multiples, sous-requêtes...
VUES                      function (doc) {
                               for(var i in doc.tags)
                                   emit(doc.tags[i], 1);
                          }



Les vues sont écrites en JavaScript
                                                             "bd",1
                                                             "bd"
                                                             "json",2
                                                             "json"
Possibilités de filtrer, retraiter
                                                             "super",1
                                                             "super"
Approche map/reduce            function (Key, Values) {
                                     var sum = 0;
Groupages multiples, sous-requêtes...
                                         for(var i in Values)
                                         sum += Values[i];
                                         return sum;
                               }
AVANTAGES

Une approche naturelle des documents

  Migration naturelle, pas de NULL

  Pas de délire avec les jointures

Indexation

Partitionnement, réplication, clustering, fail over, MVCC

API REST en HTTP
LIMITATIONS


Ce n’est pas une base objet

  Syndrome de PHP3!

Pas de transactions

Attention aux conflits!
ACTUELLEMENT


Apache’s CouchDB, Cassandra, MongoDB

  Utilisés en production par Digg, Facebook.

Amazon simpleDB
ARCHI
Sources de données
CONCEPTION DE SCRIPT


 Application de forum

   Modèle hiérarchique : entrée >> sortie

   modèle adjacent : sortie >> entrée

 PHP assume le travail, en ligne avec l’internaute!
ARCHI
  La transaction Web doit
attendre chaque élément de
        l’architecture
ARCHI
PHP est assez rapide pour
     servir le client
ARCHI
  Il faut exporter
les tâches lourdes
GEARMAN

Anagramme de manager

Un système de distribution de tâches

Trois acteurs :

  serveur, gearmand : distribue les tâches

  client, gearman : émet les commandes

  esclave, worker : effectue les tâches
Miniatures   PDF   Miniatures
  PDF
Recherche
FONCTIONNEMENT

PHP assure le filtrage des données, l’enregistrement des
commandes, la restitution au navigateur

Gearman répartit les tâches entre esclaves

Si la charge augmente, il faut ajouter des esclaves

  Spécialisation des serveurs, réorganisation

  Découplage des frontaux Web
ARCHI
Avec tâches lourdes
MAP/REDUCE
Découpage du travail en                           Corpus



lots

Traitement du lot : MAP       Map        Map               Map   Map



                            m1:1; m2:2   m2:1     m1:3; m3:1
Concentration des
résultats : reduce                  Regroupement




Résultat final                  m1:1,3   m2:2,1   m3:1



                                Reduce Reduce Reduce

Hadoop fait tout sauf map
et réduce                        m1:4    m2:3     m3:1
UN MODÈLE ROBUSTE

Détection des crash

  Relance des tâches de map et reduce

Doublement des tâches lentes

Map et reduce fonctionnent simultanément

  Résultats intermédiaires possibles

  Addition des capacités de traitement
HADOOP

Fonctions exportables via stdin/out

Hive : HADOPP appliqué aux bases de données

HDFS : cluster de stockage

1 Po de données, triées en 16h15

1 To de données triées en 62 secondes

3800 machines approx.
MAÎTRISE


Personnalisation



Public/ répétition

                         Contexte
                             Cohérence
  Tâches de fond     Tâches lourdes
QUESTIONS?

Mais conteúdo relacionado

Mais procurados

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
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?Sébastien Prunier
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheAurelien Navarre
 
Moteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic SearchMoteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic SearchAudrey Neveu
 
Tout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasTout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasBruno Bonnin
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8Aurelien Navarre
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...MongoDB
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : CassandraLilia Sfaxi
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduceAmal Abid
 
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...MongoDB
 
Nantes JUG - Elasticsearch
Nantes JUG - ElasticsearchNantes JUG - Elasticsearch
Nantes JUG - ElasticsearchDavid Pilato
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3Amal Abid
 
Créer des applications Java avec MongoDB
Créer des applications Java avec MongoDBCréer des applications Java avec MongoDB
Créer des applications Java avec MongoDBMongoDB
 

Mais procurados (17)

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
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
 
Moteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic SearchMoteurs de recherche : un oeil sous le capot avec Elastic Search
Moteurs de recherche : un oeil sous le capot avec Elastic Search
 
Tout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasTout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pas
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Tech day hadoop, Spark
Tech day hadoop, SparkTech day hadoop, Spark
Tech day hadoop, Spark
 
Paris RailsCamp 2009
Paris RailsCamp 2009Paris RailsCamp 2009
Paris RailsCamp 2009
 
introduction à MongoDB
introduction à MongoDBintroduction à MongoDB
introduction à MongoDB
 
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduce
 
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
 
Nantes JUG - Elasticsearch
Nantes JUG - ElasticsearchNantes JUG - Elasticsearch
Nantes JUG - Elasticsearch
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3
 
Créer des applications Java avec MongoDB
Créer des applications Java avec MongoDBCréer des applications Java avec MongoDB
Créer des applications Java avec MongoDB
 

Destaque

Des Femmes à la Rencontre d'autres Femmes
Des Femmes à la Rencontre d'autres FemmesDes Femmes à la Rencontre d'autres Femmes
Des Femmes à la Rencontre d'autres FemmesChristianB
 
La mission de joël
La mission de joëlLa mission de joël
La mission de joëlriadewilde
 
Colección permacultura 04 siembra poda injerto
Colección permacultura 04 siembra poda injertoColección permacultura 04 siembra poda injerto
Colección permacultura 04 siembra poda injertolaarveja
 
Distribución binomial
Distribución binomialDistribución binomial
Distribución binomialLeonardo Jesus
 
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02150317 bilan-micop-axe1-vf-150417074826-conversion-gate02
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02lstephan
 
Ponencia "25 años reciclando residuos orgánicos urbanos en el suelo: la visió...
Ponencia "25 años reciclando residuos orgánicos urbanos en el suelo: la visió...Ponencia "25 años reciclando residuos orgánicos urbanos en el suelo: la visió...
Ponencia "25 años reciclando residuos orgánicos urbanos en el suelo: la visió...ANEPMA
 
Contribution du cabinet pro se atelier asiwa - abidjan
Contribution du cabinet pro se   atelier asiwa - abidjanContribution du cabinet pro se   atelier asiwa - abidjan
Contribution du cabinet pro se atelier asiwa - abidjanCORAF WECARD
 
"Comunicar para sensibilizar. El papel de la comunicación en el cambio de háb...
"Comunicar para sensibilizar. El papel de la comunicación en el cambio de háb..."Comunicar para sensibilizar. El papel de la comunicación en el cambio de háb...
"Comunicar para sensibilizar. El papel de la comunicación en el cambio de háb...ANEPMA
 
Cas pratique: Ciao et Spartoo. Par Camille Dauvergne, Ciao
Cas pratique: Ciao et Spartoo. Par Camille Dauvergne, CiaoCas pratique: Ciao et Spartoo. Par Camille Dauvergne, Ciao
Cas pratique: Ciao et Spartoo. Par Camille Dauvergne, CiaoL'Atelier BNP Paribas
 
Feliz día queridos amigos!!
Feliz día queridos amigos!!Feliz día queridos amigos!!
Feliz día queridos amigos!!Pablo Ratti
 
Twitter en bibliothèques - étude pour la bibliothèque M. Serres de Centrale Lyon
Twitter en bibliothèques - étude pour la bibliothèque M. Serres de Centrale LyonTwitter en bibliothèques - étude pour la bibliothèque M. Serres de Centrale Lyon
Twitter en bibliothèques - étude pour la bibliothèque M. Serres de Centrale LyonAlain Marois
 
Medio ambiente
Medio ambienteMedio ambiente
Medio ambientevale-caro
 

Destaque (20)

Des Femmes à la Rencontre d'autres Femmes
Des Femmes à la Rencontre d'autres FemmesDes Femmes à la Rencontre d'autres Femmes
Des Femmes à la Rencontre d'autres Femmes
 
La mission de joël
La mission de joëlLa mission de joël
La mission de joël
 
Colección permacultura 04 siembra poda injerto
Colección permacultura 04 siembra poda injertoColección permacultura 04 siembra poda injerto
Colección permacultura 04 siembra poda injerto
 
Distribución binomial
Distribución binomialDistribución binomial
Distribución binomial
 
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02150317 bilan-micop-axe1-vf-150417074826-conversion-gate02
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02
 
Audits php
Audits phpAudits php
Audits php
 
Ponencia "25 años reciclando residuos orgánicos urbanos en el suelo: la visió...
Ponencia "25 años reciclando residuos orgánicos urbanos en el suelo: la visió...Ponencia "25 años reciclando residuos orgánicos urbanos en el suelo: la visió...
Ponencia "25 años reciclando residuos orgánicos urbanos en el suelo: la visió...
 
Contribution du cabinet pro se atelier asiwa - abidjan
Contribution du cabinet pro se   atelier asiwa - abidjanContribution du cabinet pro se   atelier asiwa - abidjan
Contribution du cabinet pro se atelier asiwa - abidjan
 
"Comunicar para sensibilizar. El papel de la comunicación en el cambio de háb...
"Comunicar para sensibilizar. El papel de la comunicación en el cambio de háb..."Comunicar para sensibilizar. El papel de la comunicación en el cambio de háb...
"Comunicar para sensibilizar. El papel de la comunicación en el cambio de háb...
 
Lean start up
Lean start upLean start up
Lean start up
 
Cas pratique: Ciao et Spartoo. Par Camille Dauvergne, Ciao
Cas pratique: Ciao et Spartoo. Par Camille Dauvergne, CiaoCas pratique: Ciao et Spartoo. Par Camille Dauvergne, Ciao
Cas pratique: Ciao et Spartoo. Par Camille Dauvergne, Ciao
 
Feliz día queridos amigos!!
Feliz día queridos amigos!!Feliz día queridos amigos!!
Feliz día queridos amigos!!
 
Venez Fêter le 14 juillet 2015 à Saint Rémy de Provence!
Venez Fêter le 14 juillet 2015 à Saint Rémy de Provence!Venez Fêter le 14 juillet 2015 à Saint Rémy de Provence!
Venez Fêter le 14 juillet 2015 à Saint Rémy de Provence!
 
Twitter en bibliothèques - étude pour la bibliothèque M. Serres de Centrale Lyon
Twitter en bibliothèques - étude pour la bibliothèque M. Serres de Centrale LyonTwitter en bibliothèques - étude pour la bibliothèque M. Serres de Centrale Lyon
Twitter en bibliothèques - étude pour la bibliothèque M. Serres de Centrale Lyon
 
Medio ambiente
Medio ambienteMedio ambiente
Medio ambiente
 
Aulas violentas
Aulas violentasAulas violentas
Aulas violentas
 
Egipcios
EgipciosEgipcios
Egipcios
 
MWANYUKE Joseph
MWANYUKE JosephMWANYUKE Joseph
MWANYUKE Joseph
 
Eugenio derbe
Eugenio derbeEugenio derbe
Eugenio derbe
 
Socle
SocleSocle
Socle
 

Semelhante a L'avenir de LAMP

Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureBig Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureMicrosoft
 
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
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab ElasticsearchDavid Pilato
 
Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011Aurélien Maury
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataArrow Group
 
Affichage d'un document Office sous Android
Affichage d'un document Office sous AndroidAffichage d'un document Office sous Android
Affichage d'un document Office sous AndroidStéphane Liétard
 
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataJournées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataDavid Joubert
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech
 
Hadoop Introduction in Paris
Hadoop Introduction in ParisHadoop Introduction in Paris
Hadoop Introduction in ParisTed Drake
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABESABES
 
Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Olivier Grisel
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasBruno Bonnin
 
[GAB2016] Azure DocumentDB - Jean-Luc Boucho
[GAB2016] Azure DocumentDB - Jean-Luc Boucho[GAB2016] Azure DocumentDB - Jean-Luc Boucho
[GAB2016] Azure DocumentDB - Jean-Luc BouchoCellenza
 
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris AZUG FR
 

Semelhante a L'avenir de LAMP (20)

Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureBig Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
 
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
 
Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab Elasticsearch
 
Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011
 
NoSQL et Big Data
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Data
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big Data
 
Affichage d'un document Office sous Android
Affichage d'un document Office sous AndroidAffichage d'un document Office sous Android
Affichage d'un document Office sous Android
 
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataJournées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
 
Hadoop Introduction in Paris
Hadoop Introduction in ParisHadoop Introduction in Paris
Hadoop Introduction in Paris
 
Adopte une BDD
Adopte une BDDAdopte une BDD
Adopte une BDD
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABES
 
Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pas
 
Elastic serach
Elastic serachElastic serach
Elastic serach
 
[GAB2016] Azure DocumentDB - Jean-Luc Boucho
[GAB2016] Azure DocumentDB - Jean-Luc Boucho[GAB2016] Azure DocumentDB - Jean-Luc Boucho
[GAB2016] Azure DocumentDB - Jean-Luc Boucho
 
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris
Jean-Luc Boucho - Azure DocumentDB - Global Azure Bootcamp 2016 Paris
 

Mais de Damien Seguy

Strong typing @ php leeds
Strong typing  @ php leedsStrong typing  @ php leeds
Strong typing @ php leedsDamien Seguy
 
Strong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationStrong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationDamien Seguy
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeDamien Seguy
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applicationsDamien Seguy
 
Top 10 pieges php afup limoges
Top 10 pieges php   afup limogesTop 10 pieges php   afup limoges
Top 10 pieges php afup limogesDamien Seguy
 
Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Damien Seguy
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Damien Seguy
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confooDamien Seguy
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Damien Seguy
 
Top 10 php classic traps php serbia
Top 10 php classic traps php serbiaTop 10 php classic traps php serbia
Top 10 php classic traps php serbiaDamien Seguy
 
Top 10 php classic traps
Top 10 php classic trapsTop 10 php classic traps
Top 10 php classic trapsDamien Seguy
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappesDamien Seguy
 
Code review workshop
Code review workshopCode review workshop
Code review workshopDamien Seguy
 
Understanding static analysis php amsterdam 2018
Understanding static analysis   php amsterdam 2018Understanding static analysis   php amsterdam 2018
Understanding static analysis php amsterdam 2018Damien Seguy
 
Review unknown code with static analysis php ce 2018
Review unknown code with static analysis   php ce 2018Review unknown code with static analysis   php ce 2018
Review unknown code with static analysis php ce 2018Damien Seguy
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3Damien Seguy
 
Php 7.3 et ses RFC (AFUP Toulouse)
Php 7.3 et ses RFC  (AFUP Toulouse)Php 7.3 et ses RFC  (AFUP Toulouse)
Php 7.3 et ses RFC (AFUP Toulouse)Damien Seguy
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCDamien Seguy
 
Review unknown code with static analysis php ipc 2018
Review unknown code with static analysis   php ipc 2018Review unknown code with static analysis   php ipc 2018
Review unknown code with static analysis php ipc 2018Damien Seguy
 
Code review for busy people
Code review for busy peopleCode review for busy people
Code review for busy peopleDamien Seguy
 

Mais de Damien Seguy (20)

Strong typing @ php leeds
Strong typing  @ php leedsStrong typing  @ php leeds
Strong typing @ php leeds
 
Strong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationStrong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisation
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le code
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applications
 
Top 10 pieges php afup limoges
Top 10 pieges php   afup limogesTop 10 pieges php   afup limoges
Top 10 pieges php afup limoges
 
Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confoo
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4
 
Top 10 php classic traps php serbia
Top 10 php classic traps php serbiaTop 10 php classic traps php serbia
Top 10 php classic traps php serbia
 
Top 10 php classic traps
Top 10 php classic trapsTop 10 php classic traps
Top 10 php classic traps
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappes
 
Code review workshop
Code review workshopCode review workshop
Code review workshop
 
Understanding static analysis php amsterdam 2018
Understanding static analysis   php amsterdam 2018Understanding static analysis   php amsterdam 2018
Understanding static analysis php amsterdam 2018
 
Review unknown code with static analysis php ce 2018
Review unknown code with static analysis   php ce 2018Review unknown code with static analysis   php ce 2018
Review unknown code with static analysis php ce 2018
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3
 
Php 7.3 et ses RFC (AFUP Toulouse)
Php 7.3 et ses RFC  (AFUP Toulouse)Php 7.3 et ses RFC  (AFUP Toulouse)
Php 7.3 et ses RFC (AFUP Toulouse)
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFC
 
Review unknown code with static analysis php ipc 2018
Review unknown code with static analysis   php ipc 2018Review unknown code with static analysis   php ipc 2018
Review unknown code with static analysis php ipc 2018
 
Code review for busy people
Code review for busy peopleCode review for busy people
Code review for busy people
 

L'avenir de LAMP

  • 1. L’AVENIR DE LAMP Innovation dans la pile AFUP, Paris, 12 novembre 2009
  • 3. C’EST GLACHMMP! S’il vous plait, utilisez plus de voyelles dans les noms de projets Open Source
  • 4. ORDRE DU JOUR D’éléphpants De canapés D’engrenages D’esclaves De cochons
  • 5. INTERVENANT Damien Seguy Services expert Open Source Eleveur d’éléphpants damien.seguy@alterway.fr
  • 7. CACHE LOCAL Cache local Redondance Cache Cache Double travail Web Web Limitation à la capacité locale
  • 8. AVEC MEMCACHE Cache partagé Capacité doublée Memcache Partage des résultats Web Web La capacité dépasse les limitations physiques
  • 9. PRATIQUE COURANTE Cache partagé Memcache Capacité extensible Web Web Web Centralisation des caches
  • 10. MEMCACHE http://memcached.org/ Un cache géant en mémoire Une table de hashage extensible Intégrée dans PHP
  • 12. EXEMPLE add <?php $memcache = new Memcache; get $memcache->connect('memcache.wan', 11211); $membre = $memcache->get('DamienSeguy'); set var_dump($membre); ?> replace increment
  • 13. UTILISATION Reproduction rapide d’objets/ contextes Résultats de requêtes SQL Fichiers distants (RSS, etc...) Stockage de sessions
  • 15. STOCKAGE DE BLOB Memcache == stockage de BLOB Stockage plus structuré ? Tableaux de données, multi-dimensionnels
  • 16. ENTREPÔTS CLÉ/VALEUR Uniquement des paires clé => valeur Les lignes deviennent un document Les tables deviennent des collections Il n’y a plus de modèle de données Quelques types : date, entier, chaîne, booléen, list, map
  • 17. STRUCTURE { "_id": "ABBC89DDEBC", "_rev": "876BBDC", "type": "blog", "titre": "Un nouveau paradigme de bases de données", "contenus": "Un nouveau paradigme de bases de données", "tags": ["bd", "json", "super"], "publié": true }
  • 18. STRUCTURE Format JSON (comme XML, mais plus simple) { "_id": "ABBC89DDEBC", "_rev": "876BBDC", "type": "blog", "titre": "Un nouveau paradigme de bases de données", "contenus": "Un nouveau paradigme de bases de données", "tags": ["bd", "json", "super"], "publié": true }
  • 19. STRUCTURE Format JSON (comme XML, mais plus simple) Clé primaire pour tous { "_id": "ABBC89DDEBC", "_rev": "876BBDC", "type": "blog", "titre": "Un nouveau paradigme de bases de données", "contenus": "Un nouveau paradigme de bases de données", "tags": ["bd", "json", "super"], "publié": true }
  • 20. STRUCTURE Format JSON (comme XML, mais plus simple) Clé primaire pour tous { "_id": "ABBC89DDEBC", "_rev": "876BBDC", Numéro de révision "type": "blog", "titre": "Un nouveau paradigme de bases de données", "contenus": "Un nouveau paradigme de bases de données", "tags": ["bd", "json", "super"], "publié": true }
  • 21. STRUCTURE Format JSON (comme XML, mais plus simple) Clé primaire pour tous { "_id": "ABBC89DDEBC", "_rev": "876BBDC", Numéro de révision "type": "blog", "titre": "Un nouveau paradigme de bases de données", "contenus": "Un nouveau paradigme de bases de données", "tags": ["bd", "json", "super"], "publié": true } Booléen
  • 22. STRUCTURE Format JSON (comme XML, mais plus simple) Clé primaire pour tous { "_id": "ABBC89DDEBC", "_rev": "876BBDC", Numéro de révision "type": "blog", "titre": "Un nouveau paradigme de bases de données", "contenus": "Un nouveau paradigme de bases de données", "tags": ["bd", "json", "super"], "publié": true } Liste Booléen
  • 23. VUES function (doc) { for(var i in doc.tags) emit(doc.tags[i], 1); } Les vues sont écrites en JavaScript "bd" "json" Possibilités de filtrer, retraiter "super" Approche map/reduce Groupages multiples, sous-requêtes...
  • 24. VUES function (doc) { for(var i in doc.tags) emit(doc.tags[i], 1); } Les vues sont écrites en JavaScript "bd",1 "bd" "json",2 "json" Possibilités de filtrer, retraiter "super",1 "super" Approche map/reduce function (Key, Values) { var sum = 0; Groupages multiples, sous-requêtes... for(var i in Values) sum += Values[i]; return sum; }
  • 25. AVANTAGES Une approche naturelle des documents Migration naturelle, pas de NULL Pas de délire avec les jointures Indexation Partitionnement, réplication, clustering, fail over, MVCC API REST en HTTP
  • 26. LIMITATIONS Ce n’est pas une base objet Syndrome de PHP3! Pas de transactions Attention aux conflits!
  • 27. ACTUELLEMENT Apache’s CouchDB, Cassandra, MongoDB Utilisés en production par Digg, Facebook. Amazon simpleDB
  • 29. CONCEPTION DE SCRIPT Application de forum Modèle hiérarchique : entrée >> sortie modèle adjacent : sortie >> entrée PHP assume le travail, en ligne avec l’internaute!
  • 30. ARCHI La transaction Web doit attendre chaque élément de l’architecture
  • 31. ARCHI PHP est assez rapide pour servir le client
  • 32. ARCHI Il faut exporter les tâches lourdes
  • 33. GEARMAN Anagramme de manager Un système de distribution de tâches Trois acteurs : serveur, gearmand : distribue les tâches client, gearman : émet les commandes esclave, worker : effectue les tâches
  • 34.
  • 35. Miniatures PDF Miniatures PDF Recherche
  • 36. FONCTIONNEMENT PHP assure le filtrage des données, l’enregistrement des commandes, la restitution au navigateur Gearman répartit les tâches entre esclaves Si la charge augmente, il faut ajouter des esclaves Spécialisation des serveurs, réorganisation Découplage des frontaux Web
  • 38. MAP/REDUCE Découpage du travail en Corpus lots Traitement du lot : MAP Map Map Map Map m1:1; m2:2 m2:1 m1:3; m3:1 Concentration des résultats : reduce Regroupement Résultat final m1:1,3 m2:2,1 m3:1 Reduce Reduce Reduce Hadoop fait tout sauf map et réduce m1:4 m2:3 m3:1
  • 39. UN MODÈLE ROBUSTE Détection des crash Relance des tâches de map et reduce Doublement des tâches lentes Map et reduce fonctionnent simultanément Résultats intermédiaires possibles Addition des capacités de traitement
  • 40. HADOOP Fonctions exportables via stdin/out Hive : HADOPP appliqué aux bases de données HDFS : cluster de stockage 1 Po de données, triées en 16h15 1 To de données triées en 62 secondes 3800 machines approx.
  • 41. MAÎTRISE Personnalisation Public/ répétition Contexte Cohérence Tâches de fond Tâches lourdes