SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
Drupal et le NoSQL
     Frédéric G. MARAND                    OSInet
http://drupal.org/user/27985   http://drupal.org/node/1121720
• "Drupal et le NoSQL" de Frédéric G.
  MARAND est mis à disposition selon les
  termes de la licence Creative Commons
  Paternité - Partage à l'Identique 2.0 France.
• Les autorisations au-delà du champ de cette
  licence peuvent être obtenues à
  mailto:sales@osinet.fr
Drupal NoSQL : sommaire
●
    Quels objectifs      ●
                             Quels coûts ?
    globaux ?            ●
                             Quelles bonnes
●
    Quelles tâches           pratiques ?
    fonctionnelles ?     ●
                             Quels compromis ?
●
    Quelles techniques   ●
                             Quels modules
    de mise en œuvre ?       contribués ?
Drupal NoSQL
●
    Quels objectifs      ●
                             Quels coûts ?
    globaux ?            ●
                             Quelles bonnes
●
    Quels tâches             pratiques ?
    fonctionnelles ?     ●
                             Quels compromis ?
●
    Quelles techniques   ●
                             Quels modules
    de mise en œuvre ?       contribués ?
Objectifs : supporter les volumes
• Contenus stables : entités Drupal
• Flux volatils : ordres de grandeur d'écart
• Exemple, pour U utilisateurs
  – nodes : n*U
  – comments : c*n*U
  – user relationships ; r*U²
  – activités : a*(n+c*n+r*U+ ...)*U
Objectifs : réduire la complexité
• CCK, SQL Field storage : stockage en étoile
  – nombreuses jointures
  – requêtes coûteuses à exécuter ou à écrire
• Bases documentaires :
  – 1 enregistrement = 1 document complet.
  – requêtes économiques à exécuter et à écrire
Objectifs : performance
Objectifs : performance
• Exemple Figaro Plus : MySQL→MongoDB
  – MySQL Slow Queries rate: -85%
  – Durée extraction du coeur de page: -98%
• Alternatives SQL :
  – Libres : PGSQL, SQLite
  – Propriétaires : MSSQL, DB2, Oracle
  – MongoDB avec DBTNG !
     • "You must be really desperate to drive a NoSQL database with SQL
       commands." - chx
Drupal NoSQL
●
    Quels objectifs      ●
                             Quels coûts ?
    globaux ?            ●
                             Quelles bonnes
●
    Quelles tâches           pratiques ?
    fonctionnelles ?     ●
                             Quels compromis ?
●
    Quelles techniques   ●
                             Quels modules
    de mise en œuvre ?       contribués ?
Tâche : backup hors site
• C'est AUSSI une tâche de production
• backup_migrate_*
   – FTP
   – Amazon S3
   – NodeSquirrel (wrapper S3)
   – Rackspace Cloudfiles
Tâche : déport des blocs
• Limitations du cache de blocs
  – node_access en D6
• Drupal 7
  – le module block n'est plus obligatoire
  – mongodb_block
  – possibilité d'autres implémentations
Tâche : antémémoire
Profusion de solutions D6, convergence en D7
• In-process, local par frontal :
  – apc, eaccelerator, xcache, zend
  – incohérence entre frontaux
• Pools mémoire réseau : memcached
• Bases NoSQL : mongodb_cache, redis
Tâche : stockage des champs
• Field Storage D7 - Inapplicable en CCK
• MongoDB : référence Examiner.com
  – http://drupal.org/project/mongodb
• Riak - pas encore d'EFQ
  – http://drupal.org/project/riak_field_storage
• ElasticSearch - pas encore d'EFQ
  – http://drupal.org/sandbox/damz/1234634
Tâche : file storage
• Multiples solutions D6 ± hackées
• Storage API : Stockage / Accès
  – FTP / non spécifique
  – AWS S3 / CDN AWS Cloudfront
  – Rackspace CloudFiles / CDN Limelight
• Core Streams Wrappers
  – Microsoft Azure
Tâche : exclusion mutuelle
• Le "verrouillage" core de lock.inc
  – souffre de problèmes à forte charge
  – fonctionne en attente active
• Alternative : redis.lock.inc
  – attente passive
  – utilisation des mutex Redis
Tâche : MapReduce
• Distribution de charge liée aux données
  stockées sur un cluster
• MongoDB
  – Directement utilisable depuis mongodb
  – Pas d'habillage Drupal spécifique
• Riak
  – Habillage Drupal dans riak_field_storage
Tâche : file d'attente (queue)
• Alternatives SQL, dont AdvancedQueue :
  http://drupal.org/project/advancedqueue
• MongoDB:
  – Référence Examiner.com
  – http://drupal.org/project/mongodb
• Redis
  – http://drupal.org/project/redis
  – Non lié à Resque et autre files basées sur Redis
Tâche : recherche
• Core inadapté aux sites professionnels
• Principaux moteurs interfacés
  – SOLR SaaS : Acquia Search, Adyax Cloud Search
  – Sphinx, Google
• CouchDB : couchdb_node
  – stockage automatique des nodes dans le
    stockage documentaire
  – pas de fonctions de recherche
Tâche : sessions
• PHP
  – natif : fichiers
  – PECL : memcached (pas memcache!)
• Drupal core: SQL
• Alternatives :
  – handler du module Memcache
  – handler MongoDB
        Attention : particularités Debian/Ubuntu
Tâche : journal d'erreurs
• 2 versions core : dblog / syslog
• Fichiers plats
• MongoDB
  – capped collections. Avantages et risques
  – synthèse des événements
• Redis : redis_watchdog
• Tokyo Tyrant
Drupal NoSQL
●
    Quels objectifs      ●
                             Quels coûts ?
    globaux ?            ●
                             Quelles bonnes
●
    Quelles tâches           pratiques ?
    fonctionnelles ?     ●
                             Quels compromis ?
●
    Quelles techniques   ●
                             Quels modules
    de mise en œuvre ?       contribués ?
Technique : accès aux données
• API spécifiques
  – AWS SimpleDB http://drupal.org/node/482318
• EntityFieldQuery
  – Modèle d'utilisation dual
  – Lien avec le FieldStorage
• Document Storage D8
  – Natif vs DBTNG
Technique : intégration Views
• Interfaçage DBTNG
  – http://drupal.org/project/mongodb_dbtng
• Greffon EFQ
  – http://drupal.org/project/efq_views
Technique : Drupal 6 CCK
• Core : La plupart des API sont utilisables
  – natif ou backports (Queue API)
  – nécessité de patches core multiples
• CCK lié à SQL, pas de field storage NoSQL
  – hooks pre-load / post-save
  – patches intrusifs ou non, conséquences
  – Exemple : Freerice → > 8E9 enregistrements
Drupal NoSQL
●
    Quels objectifs      ●
                             Quels coûts ?
    globaux ?            ●
                             Quelles bonnes
●
    Quelles tâches           pratiques ?
    fonctionnelles ?     ●
                             Quels compromis ?
●
    Quelles techniques   ●
                             Quels modules
    de mise en œuvre ?       contribués ?
Coûts : nature des coûts
Investissement     Charges récurrentes
• Licences         • Licences
  perpétuelles       périodiques
• Développement    • Hosting
  spécifique       • Support

           ← Formation →
Coûts : licences
• Cas général Drupal: licences "libres"
  – MongoDB : serveur AGPL 3, clients Apache 2
  – Redis : BSD 3 clauses
  – CouchDB, Riak : Apache 2
  – Tokyo : LGPL 2.1
• Outils propriétaires
  – Oracle NoSQL
  – Progress ObjectStore, etc
Coût : développement
• Limites du support contrib
  – Volume de développement
• Limites de la communauté
  – Rareté de la ressource
  – Coût des spécialistes
• Nécessité du test unitaire/intégral
Coûts : formation
• Corollaire du coût de développement
  – pénurie de la ressource "développeur"
  – risque technologique
• Investissement ou charge ?
  – réduction du coût de développement
  – réduction du TCO
  – récurrence : turnover, technologie
Coût : hébergement SaaS
•   Base NoSQL : AWS SimpleDB
•   Fichiers : Azure, CloudFiles, S3...
•   Backup : CloudFiles, S3...
•   Recherche :
    – SOLR : Acquia Search, Adyax Cloud Search
    – Antidot AFS@Web, Exalead On Demand ...
Coûts : support
• Pas disponible en libre non commercial :
  – ElasticSearch, Redis
• Coûts en libre commercial :
  – 10Gen pour MongoDB
     • 2500 USD/serveur/an / 4000 USD/serveur/an (Gold)
  – Couchbase pour CouchDB
     • 2500 USD/serveur/an / 4500 USD/serveur/an (Premier)
  – Riak : «contact us»
Drupal NoSQL : sommaire
●
    Quels objectifs      ●
                             Quels coûts ?
    globaux ?            ●
                             Quelles bonnes
●
    Quelles tâches           pratiques ?
    fonctionnelles ?     ●
                             Quels compromis ?
●
    Quelles techniques   ●
                             Quels modules
    de mise en œuvre ?       contribués ?
BCP (MongoDB) : modélisation 1
• Ne pas chercher à simuler SQL JOIN
  – requêtes multiples avec A/R code
  – Field Storage : stockage entité cf index couvrant
• Le document comme cache
  – données pour la partie "recherche" du find()
  – données additionnelles dans un cache interne
  – logique côté client pour scaling horizontal
  – penser aux multikeys
BCP (MongoDB) : modélisation 2
• Concevoir les documents pour l'indexation
  – "1 index par requête" vs "économiser les index"
     • 40 index maximum par collection
     • MongoDB modifié pour supporter FieldStorage
  – Utiliser des index couvrants
• Conformité : penser à l'"après"
  – préserver l'accès après la vie de l'application
  – la seconde vie du cache interne
  – Exemple : craigslist
BCP (MongoDB) : Réalisation
• La requête la plus rapide est celle qu'on
  n'exécute pas !
• Cache != DB : savoir choisir
• Typage vs pratique PHP/Drupal/MySQL
• Tests en vraie grandeur durant le
  développement
  – volume
  – charge
BCP : Production
• Instrumentation : de l'alerte à la réparation
  – Alertes et réactions: Monit, Nagios
  – Mesure en continu
     • Surveillance individuelle : Munin, Cacti,
     • Synthèse : Ganglia
  – Logs serveur : activer ET utiliser
• Tolérance aux pannes et à la charge
  – Réplication ET sauvegardes, deux besoins
Drupal NoSQL : sommaire
●
    Quels objectifs      ●
                             Quels coûts ?
    globaux ?            ●
                             Quelles bonnes
●
    Quelles tâches           pratiques ?
    fonctionnelles ?     ●
                             Quels compromis ?
●
    Quelles techniques   ●
                             Quels modules
    de mise en œuvre ?       contribués ?
Compromis : flexibilité schéma
• Schéma relationnel
  – flexibilité illimitée
  – méthodes de design reconnues et éprouvées
• Document storage (MongoDB)
  – pas de schéma par "table" (collection)
  – à grande liberté, grandes responsabilités
  – pas d'outils pratiques comme PMA, Workbench
Compromis : durabilité
• Relationnel :
  – évolutivité illimitée
  – accessibilité hors application limitée
  – encore plus limitée dans Drupal sans FK
• Document (MongoDB)
  – évolutivité en production difficile
  – accessibilité hors application PEUT être facile :
    auto-contenus
Compromis : CAP
• Théorème de Brewer (CAP theorem) :
« it is impossible for a distributed computer system to
simultaneously provide all three of the following guarantees:
Consistency, Availability, Partition tolerance »
• Bases SQL : potentiel ACID
   – Pas systématique (MyISAM)
• MongoDB, bases K/V : "BASE"
   – Basically Available, Soft state, Eventually
     consistent
Compromis : sharding
• Drupal : pas de sharding applicatif intégré
• Exemple avec MongoDB




                        http://www.mongodb.org/display/DOCS/Sharding+Introduction
Compromis : répliques et clusters
• MySQL
 – par défaut : réplication master/slave
    • Pressflow 6, core 7
    • Utilisation réelle : limites core 6/7
 – MySQL cluster
• MongoDB
 – master/slave dans le module
 – replicaSet dans MongoDB ≥ 1.6
Compromis : support
• MySQL = Oracle, membres ODBA, SkySQL
• NoSQL :
  – Communautaire : valeur et limitations
  – Professionnel
    • CouchDB : Couchbase, Cloudant
    • MongoDB : 10Gen
    • Redis : vmWare
    • Ryak : Ryak
Compromis : licences
Logiciel                             Licence par défaut
Drupal et contributions drupal.org   GPL 2.0 et suivantes
MongoDB - serveur                    AGPL 3.0
MongoDB - clients                    Apache 2.0
MongoDB - documentation              Creative Commons
Redis                                BSD 3 clause
CouchDB                              Apache 2.0
Riak                                 Apache 2.0
Tokyo Tyrant / Tokyo Tycoon          LGPL 2.1

            ●
              Etes-vous concerné ?
            ●
              Agir en conséquence
Drupal NoSQL
●
    Quels objectifs      ●
                             Quels coûts ?
    globaux ?            ●
                             Quelles bonnes
●
    Quelles tâches           pratiques ?
    fonctionnelles ?     ●
                             Quels compromis ?
●
    Quelles techniques   ●
                             Quels modules
    de mise en œuvre ?       contribués ?
Modules : Bases Document
• MongoDB
  http://drupal.org/project/mongodb
• CouchDB
  http://drupal.org/project/couchdb
• ElasticSearch
  http://drupal.org/sandbox/damz/1234634
• Amazon SimpleDB
  http://drupal.org/project/awssdk
Modules : clef/valeur
• Apache Cassandra
  http://drupal.org/project/cassandra
• Redis
  http://drupal.org/project/redis
  http://drupal.org/project/redis_queue
  http://drupal.org/project/redis_watchdog
• Ryak
  http://drupal.org/project/riak_field_storage
• Tokyo Cabinet / Tokyo Tyrant
  http://drupal.org/node/844354
ALLER PLUS LOIN
Merci de votre attention !

        fgm@osinet.fr

http://drupal.org/user/27985   http://drupal.org/node/1121720


    Audit, conseil, formation Drupal

Contenu connexe

Tendances

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
 
Architecture des types de contenu : ce qui a changé en Drupal 7
Architecture des types de contenu : ce qui a changé en Drupal 7Architecture des types de contenu : ce qui a changé en Drupal 7
Architecture des types de contenu : ce qui a changé en Drupal 7slybud
 
Node.js et MongoDB: Mongoose
Node.js et MongoDB: MongooseNode.js et MongoDB: Mongoose
Node.js et MongoDB: Mongoosejeromegn
 
Presentation Hadoop Québec
Presentation Hadoop QuébecPresentation Hadoop Québec
Presentation Hadoop QuébecMathieu Dumoulin
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystèmeKhanh Maudoux
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingLilia Sfaxi
 

Tendances (9)

NoSQL et Big Data
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Data
 
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
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
Zenika MongoDB Tour - REX Amadeus
Zenika MongoDB Tour - REX AmadeusZenika MongoDB Tour - REX Amadeus
Zenika MongoDB Tour - REX Amadeus
 
Architecture des types de contenu : ce qui a changé en Drupal 7
Architecture des types de contenu : ce qui a changé en Drupal 7Architecture des types de contenu : ce qui a changé en Drupal 7
Architecture des types de contenu : ce qui a changé en Drupal 7
 
Node.js et MongoDB: Mongoose
Node.js et MongoDB: MongooseNode.js et MongoDB: Mongoose
Node.js et MongoDB: Mongoose
 
Presentation Hadoop Québec
Presentation Hadoop QuébecPresentation Hadoop Québec
Presentation Hadoop Québec
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystème
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 

En vedette

Utilisation de MongoDB dans un site Drupal
Utilisation de MongoDB dans un site DrupalUtilisation de MongoDB dans un site Drupal
Utilisation de MongoDB dans un site DrupalAdyax
 
S P A S O V D E N’’Lieu De Rassemblance Dans Mon
S P A S O V D E N’’Lieu De Rassemblance Dans  MonS P A S O V D E N’’Lieu De Rassemblance Dans  Mon
S P A S O V D E N’’Lieu De Rassemblance Dans MonSvetlana Stojkova
 
Analyse des effets de la gratuité des soins au Niger
Analyse des effets de la gratuité des soins au NigerAnalyse des effets de la gratuité des soins au Niger
Analyse des effets de la gratuité des soins au Nigervaléry ridde
 
Recettes léa
Recettes léaRecettes léa
Recettes léaarlettaz
 
Exemption ciblée mère - enfant. Quels éléments de design ? Quelles options ...
Exemption ciblée mère - enfant. Quels éléments de design ? Quelles options ...Exemption ciblée mère - enfant. Quels éléments de design ? Quelles options ...
Exemption ciblée mère - enfant. Quels éléments de design ? Quelles options ...valéry ridde
 
Pneumologie rupture trachéale feline
Pneumologie   rupture trachéale felinePneumologie   rupture trachéale feline
Pneumologie rupture trachéale felineGuillaume Michigan
 
Thérapeutique du système respiratoire
Thérapeutique du système respiratoireThérapeutique du système respiratoire
Thérapeutique du système respiratoireGuillaume Michigan
 
Présentation sur les ressources ouvertes et les licences Creative Commons
Présentation sur les ressources ouvertes et les licences Creative CommonsPrésentation sur les ressources ouvertes et les licences Creative Commons
Présentation sur les ressources ouvertes et les licences Creative CommonsGilbert Paquette
 
"Agir en faveur du logement au Pays Basque Nord " - Lurra eta Etxebizitza
"Agir en faveur du logement au Pays Basque Nord " - Lurra eta Etxebizitza"Agir en faveur du logement au Pays Basque Nord " - Lurra eta Etxebizitza
"Agir en faveur du logement au Pays Basque Nord " - Lurra eta EtxebizitzaBabinfo Pays Basque
 
Présentation1
Présentation1Présentation1
Présentation1cheese900
 
Manuel hydrothérapie - Guérir et renforcer le corps par l'Eau
Manuel hydrothérapie - Guérir et renforcer le corps par l'EauManuel hydrothérapie - Guérir et renforcer le corps par l'Eau
Manuel hydrothérapie - Guérir et renforcer le corps par l'EauGuillaume Michigan
 
Cours : les formes de l’évaluation participative
Cours : les formes de l’évaluation participativeCours : les formes de l’évaluation participative
Cours : les formes de l’évaluation participativevaléry ridde
 
Numéro 48 du Bulletin "RESISTANCES" édité par le Comité Npa B.A.B. Pays Basque
Numéro 48 du Bulletin "RESISTANCES" édité par le Comité Npa B.A.B. Pays BasqueNuméro 48 du Bulletin "RESISTANCES" édité par le Comité Npa B.A.B. Pays Basque
Numéro 48 du Bulletin "RESISTANCES" édité par le Comité Npa B.A.B. Pays BasqueBabinfo Pays Basque
 
Oplesnina Anne Petite pluie d'ete
Oplesnina Anne Petite pluie d'eteOplesnina Anne Petite pluie d'ete
Oplesnina Anne Petite pluie d'eteArfenia Sarkissian
 
Point épidémiologique et focus sur le dépistage des hépatites B et C
Point épidémiologique et focus sur le dépistage des hépatites B et CPoint épidémiologique et focus sur le dépistage des hépatites B et C
Point épidémiologique et focus sur le dépistage des hépatites B et CCripsIDF
 
Présentation à l'école Jeanne Mance, Parking-Day 2014
Présentation à l'école Jeanne Mance, Parking-Day 2014Présentation à l'école Jeanne Mance, Parking-Day 2014
Présentation à l'école Jeanne Mance, Parking-Day 2014Ben Valkenburg
 
Els pescadors d_argelers_de_la_marenda
Els pescadors d_argelers_de_la_marendaEls pescadors d_argelers_de_la_marenda
Els pescadors d_argelers_de_la_marendaarlettaz
 

En vedette (20)

Utilisation de MongoDB dans un site Drupal
Utilisation de MongoDB dans un site DrupalUtilisation de MongoDB dans un site Drupal
Utilisation de MongoDB dans un site Drupal
 
S P A S O V D E N’’Lieu De Rassemblance Dans Mon
S P A S O V D E N’’Lieu De Rassemblance Dans  MonS P A S O V D E N’’Lieu De Rassemblance Dans  Mon
S P A S O V D E N’’Lieu De Rassemblance Dans Mon
 
Analyse des effets de la gratuité des soins au Niger
Analyse des effets de la gratuité des soins au NigerAnalyse des effets de la gratuité des soins au Niger
Analyse des effets de la gratuité des soins au Niger
 
Recettes léa
Recettes léaRecettes léa
Recettes léa
 
PréSentation1
PréSentation1PréSentation1
PréSentation1
 
Facebook pour les pros
Facebook pour les prosFacebook pour les pros
Facebook pour les pros
 
Exemption ciblée mère - enfant. Quels éléments de design ? Quelles options ...
Exemption ciblée mère - enfant. Quels éléments de design ? Quelles options ...Exemption ciblée mère - enfant. Quels éléments de design ? Quelles options ...
Exemption ciblée mère - enfant. Quels éléments de design ? Quelles options ...
 
Pneumologie rupture trachéale feline
Pneumologie   rupture trachéale felinePneumologie   rupture trachéale feline
Pneumologie rupture trachéale feline
 
Thérapeutique du système respiratoire
Thérapeutique du système respiratoireThérapeutique du système respiratoire
Thérapeutique du système respiratoire
 
Présentation sur les ressources ouvertes et les licences Creative Commons
Présentation sur les ressources ouvertes et les licences Creative CommonsPrésentation sur les ressources ouvertes et les licences Creative Commons
Présentation sur les ressources ouvertes et les licences Creative Commons
 
"Agir en faveur du logement au Pays Basque Nord " - Lurra eta Etxebizitza
"Agir en faveur du logement au Pays Basque Nord " - Lurra eta Etxebizitza"Agir en faveur du logement au Pays Basque Nord " - Lurra eta Etxebizitza
"Agir en faveur du logement au Pays Basque Nord " - Lurra eta Etxebizitza
 
Présentation1
Présentation1Présentation1
Présentation1
 
Manuel hydrothérapie - Guérir et renforcer le corps par l'Eau
Manuel hydrothérapie - Guérir et renforcer le corps par l'EauManuel hydrothérapie - Guérir et renforcer le corps par l'Eau
Manuel hydrothérapie - Guérir et renforcer le corps par l'Eau
 
Cours : les formes de l’évaluation participative
Cours : les formes de l’évaluation participativeCours : les formes de l’évaluation participative
Cours : les formes de l’évaluation participative
 
Mots objets
Mots objetsMots objets
Mots objets
 
Numéro 48 du Bulletin "RESISTANCES" édité par le Comité Npa B.A.B. Pays Basque
Numéro 48 du Bulletin "RESISTANCES" édité par le Comité Npa B.A.B. Pays BasqueNuméro 48 du Bulletin "RESISTANCES" édité par le Comité Npa B.A.B. Pays Basque
Numéro 48 du Bulletin "RESISTANCES" édité par le Comité Npa B.A.B. Pays Basque
 
Oplesnina Anne Petite pluie d'ete
Oplesnina Anne Petite pluie d'eteOplesnina Anne Petite pluie d'ete
Oplesnina Anne Petite pluie d'ete
 
Point épidémiologique et focus sur le dépistage des hépatites B et C
Point épidémiologique et focus sur le dépistage des hépatites B et CPoint épidémiologique et focus sur le dépistage des hépatites B et C
Point épidémiologique et focus sur le dépistage des hépatites B et C
 
Présentation à l'école Jeanne Mance, Parking-Day 2014
Présentation à l'école Jeanne Mance, Parking-Day 2014Présentation à l'école Jeanne Mance, Parking-Day 2014
Présentation à l'école Jeanne Mance, Parking-Day 2014
 
Els pescadors d_argelers_de_la_marenda
Els pescadors d_argelers_de_la_marendaEls pescadors d_argelers_de_la_marenda
Els pescadors d_argelers_de_la_marenda
 

Similaire à Drupal et le NoSQL - drupagora 2011

Dans quel contexte employer Zend ou Drupal
Dans quel contexte employer Zend ou DrupalDans quel contexte employer Zend ou Drupal
Dans quel contexte employer Zend ou Drupalneuros
 
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7OSInet
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Bonnes pratiques-drupal-dans-cahier-des-charges conference-dc-lyon-2012
Bonnes pratiques-drupal-dans-cahier-des-charges conference-dc-lyon-2012Bonnes pratiques-drupal-dans-cahier-des-charges conference-dc-lyon-2012
Bonnes pratiques-drupal-dans-cahier-des-charges conference-dc-lyon-2012Chipway
 
Alphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm
 
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetesmeetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetesFrederic Leger
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Drupal & responsive
Drupal & responsiveDrupal & responsive
Drupal & responsiveRezonova
 
Zend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modulesZend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modulesVincent Blanchon
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFBoubker ABERWAG
 
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...MongoDB
 
Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Jean-Baptiste Claramonte
 
Nouvelles opportunités pour les données fortement interconnectées : La base d...
Nouvelles opportunités pour les données fortement interconnectées : La base d...Nouvelles opportunités pour les données fortement interconnectées : La base d...
Nouvelles opportunités pour les données fortement interconnectées : La base d...Cédric Fauvet
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Hidora
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...sebastienmoreno
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptKhalid Jebbari
 

Similaire à Drupal et le NoSQL - drupagora 2011 (20)

Dans quel contexte employer Zend ou Drupal
Dans quel contexte employer Zend ou DrupalDans quel contexte employer Zend ou Drupal
Dans quel contexte employer Zend ou Drupal
 
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Bonnes pratiques-drupal-dans-cahier-des-charges conference-dc-lyon-2012
Bonnes pratiques-drupal-dans-cahier-des-charges conference-dc-lyon-2012Bonnes pratiques-drupal-dans-cahier-des-charges conference-dc-lyon-2012
Bonnes pratiques-drupal-dans-cahier-des-charges conference-dc-lyon-2012
 
spark_intro_1208
spark_intro_1208spark_intro_1208
spark_intro_1208
 
Alphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB Administration
 
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetesmeetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
Drupal & responsive
Drupal & responsiveDrupal & responsive
Drupal & responsive
 
Les framework mvc
Les framework mvcLes framework mvc
Les framework mvc
 
Zend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modulesZend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modules
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPF
 
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...
 
Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019
 
Nouvelles opportunités pour les données fortement interconnectées : La base d...
Nouvelles opportunités pour les données fortement interconnectées : La base d...Nouvelles opportunités pour les données fortement interconnectées : La base d...
Nouvelles opportunités pour les données fortement interconnectées : La base d...
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 

Plus de OSInet

Interface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TViewInterface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TViewOSInet
 
Scaling up and accelerating Drupal 8 with NoSQL
Scaling up and accelerating Drupal 8 with NoSQLScaling up and accelerating Drupal 8 with NoSQL
Scaling up and accelerating Drupal 8 with NoSQLOSInet
 
Mon site web est hacké ! Que faire ?
Mon site web est hacké ! Que faire ?Mon site web est hacké ! Que faire ?
Mon site web est hacké ! Que faire ?OSInet
 
Faster Drupal sites using Queue API
Faster Drupal sites using Queue APIFaster Drupal sites using Queue API
Faster Drupal sites using Queue APIOSInet
 
Life after the hack
Life after the hackLife after the hack
Life after the hackOSInet
 
Delayed operations with queues for website performance
Delayed operations with queues for website performanceDelayed operations with queues for website performance
Delayed operations with queues for website performanceOSInet
 
Drupal 8 : regards croisés
Drupal 8 : regards croisésDrupal 8 : regards croisés
Drupal 8 : regards croisésOSInet
 
Cache speedup with Heisencache for Drupal 7 and Drupal 8
Cache speedup with Heisencache for Drupal 7 and Drupal 8Cache speedup with Heisencache for Drupal 7 and Drupal 8
Cache speedup with Heisencache for Drupal 7 and Drupal 8OSInet
 
Le groupe PHP-FIG et les standards PSR
Le groupe  PHP-FIG et les standards PSRLe groupe  PHP-FIG et les standards PSR
Le groupe PHP-FIG et les standards PSROSInet
 
Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8OSInet
 
Utiliser drupal
Utiliser drupalUtiliser drupal
Utiliser drupalOSInet
 
Equipe drupal
Equipe drupalEquipe drupal
Equipe drupalOSInet
 
Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?OSInet
 
Drupal Views development
Drupal Views developmentDrupal Views development
Drupal Views developmentOSInet
 

Plus de OSInet (14)

Interface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TViewInterface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TView
 
Scaling up and accelerating Drupal 8 with NoSQL
Scaling up and accelerating Drupal 8 with NoSQLScaling up and accelerating Drupal 8 with NoSQL
Scaling up and accelerating Drupal 8 with NoSQL
 
Mon site web est hacké ! Que faire ?
Mon site web est hacké ! Que faire ?Mon site web est hacké ! Que faire ?
Mon site web est hacké ! Que faire ?
 
Faster Drupal sites using Queue API
Faster Drupal sites using Queue APIFaster Drupal sites using Queue API
Faster Drupal sites using Queue API
 
Life after the hack
Life after the hackLife after the hack
Life after the hack
 
Delayed operations with queues for website performance
Delayed operations with queues for website performanceDelayed operations with queues for website performance
Delayed operations with queues for website performance
 
Drupal 8 : regards croisés
Drupal 8 : regards croisésDrupal 8 : regards croisés
Drupal 8 : regards croisés
 
Cache speedup with Heisencache for Drupal 7 and Drupal 8
Cache speedup with Heisencache for Drupal 7 and Drupal 8Cache speedup with Heisencache for Drupal 7 and Drupal 8
Cache speedup with Heisencache for Drupal 7 and Drupal 8
 
Le groupe PHP-FIG et les standards PSR
Le groupe  PHP-FIG et les standards PSRLe groupe  PHP-FIG et les standards PSR
Le groupe PHP-FIG et les standards PSR
 
Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8
 
Utiliser drupal
Utiliser drupalUtiliser drupal
Utiliser drupal
 
Equipe drupal
Equipe drupalEquipe drupal
Equipe drupal
 
Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?
 
Drupal Views development
Drupal Views developmentDrupal Views development
Drupal Views development
 

Drupal et le NoSQL - drupagora 2011

  • 1. Drupal et le NoSQL Frédéric G. MARAND OSInet http://drupal.org/user/27985 http://drupal.org/node/1121720
  • 2. • "Drupal et le NoSQL" de Frédéric G. MARAND est mis à disposition selon les termes de la licence Creative Commons Paternité - Partage à l'Identique 2.0 France. • Les autorisations au-delà du champ de cette licence peuvent être obtenues à mailto:sales@osinet.fr
  • 3. Drupal NoSQL : sommaire ● Quels objectifs ● Quels coûts ? globaux ? ● Quelles bonnes ● Quelles tâches pratiques ? fonctionnelles ? ● Quels compromis ? ● Quelles techniques ● Quels modules de mise en œuvre ? contribués ?
  • 4. Drupal NoSQL ● Quels objectifs ● Quels coûts ? globaux ? ● Quelles bonnes ● Quels tâches pratiques ? fonctionnelles ? ● Quels compromis ? ● Quelles techniques ● Quels modules de mise en œuvre ? contribués ?
  • 5. Objectifs : supporter les volumes • Contenus stables : entités Drupal • Flux volatils : ordres de grandeur d'écart • Exemple, pour U utilisateurs – nodes : n*U – comments : c*n*U – user relationships ; r*U² – activités : a*(n+c*n+r*U+ ...)*U
  • 6. Objectifs : réduire la complexité • CCK, SQL Field storage : stockage en étoile – nombreuses jointures – requêtes coûteuses à exécuter ou à écrire • Bases documentaires : – 1 enregistrement = 1 document complet. – requêtes économiques à exécuter et à écrire
  • 8. Objectifs : performance • Exemple Figaro Plus : MySQL→MongoDB – MySQL Slow Queries rate: -85% – Durée extraction du coeur de page: -98% • Alternatives SQL : – Libres : PGSQL, SQLite – Propriétaires : MSSQL, DB2, Oracle – MongoDB avec DBTNG ! • "You must be really desperate to drive a NoSQL database with SQL commands." - chx
  • 9. Drupal NoSQL ● Quels objectifs ● Quels coûts ? globaux ? ● Quelles bonnes ● Quelles tâches pratiques ? fonctionnelles ? ● Quels compromis ? ● Quelles techniques ● Quels modules de mise en œuvre ? contribués ?
  • 10. Tâche : backup hors site • C'est AUSSI une tâche de production • backup_migrate_* – FTP – Amazon S3 – NodeSquirrel (wrapper S3) – Rackspace Cloudfiles
  • 11. Tâche : déport des blocs • Limitations du cache de blocs – node_access en D6 • Drupal 7 – le module block n'est plus obligatoire – mongodb_block – possibilité d'autres implémentations
  • 12. Tâche : antémémoire Profusion de solutions D6, convergence en D7 • In-process, local par frontal : – apc, eaccelerator, xcache, zend – incohérence entre frontaux • Pools mémoire réseau : memcached • Bases NoSQL : mongodb_cache, redis
  • 13. Tâche : stockage des champs • Field Storage D7 - Inapplicable en CCK • MongoDB : référence Examiner.com – http://drupal.org/project/mongodb • Riak - pas encore d'EFQ – http://drupal.org/project/riak_field_storage • ElasticSearch - pas encore d'EFQ – http://drupal.org/sandbox/damz/1234634
  • 14. Tâche : file storage • Multiples solutions D6 ± hackées • Storage API : Stockage / Accès – FTP / non spécifique – AWS S3 / CDN AWS Cloudfront – Rackspace CloudFiles / CDN Limelight • Core Streams Wrappers – Microsoft Azure
  • 15. Tâche : exclusion mutuelle • Le "verrouillage" core de lock.inc – souffre de problèmes à forte charge – fonctionne en attente active • Alternative : redis.lock.inc – attente passive – utilisation des mutex Redis
  • 16. Tâche : MapReduce • Distribution de charge liée aux données stockées sur un cluster • MongoDB – Directement utilisable depuis mongodb – Pas d'habillage Drupal spécifique • Riak – Habillage Drupal dans riak_field_storage
  • 17. Tâche : file d'attente (queue) • Alternatives SQL, dont AdvancedQueue : http://drupal.org/project/advancedqueue • MongoDB: – Référence Examiner.com – http://drupal.org/project/mongodb • Redis – http://drupal.org/project/redis – Non lié à Resque et autre files basées sur Redis
  • 18. Tâche : recherche • Core inadapté aux sites professionnels • Principaux moteurs interfacés – SOLR SaaS : Acquia Search, Adyax Cloud Search – Sphinx, Google • CouchDB : couchdb_node – stockage automatique des nodes dans le stockage documentaire – pas de fonctions de recherche
  • 19. Tâche : sessions • PHP – natif : fichiers – PECL : memcached (pas memcache!) • Drupal core: SQL • Alternatives : – handler du module Memcache – handler MongoDB Attention : particularités Debian/Ubuntu
  • 20. Tâche : journal d'erreurs • 2 versions core : dblog / syslog • Fichiers plats • MongoDB – capped collections. Avantages et risques – synthèse des événements • Redis : redis_watchdog • Tokyo Tyrant
  • 21. Drupal NoSQL ● Quels objectifs ● Quels coûts ? globaux ? ● Quelles bonnes ● Quelles tâches pratiques ? fonctionnelles ? ● Quels compromis ? ● Quelles techniques ● Quels modules de mise en œuvre ? contribués ?
  • 22. Technique : accès aux données • API spécifiques – AWS SimpleDB http://drupal.org/node/482318 • EntityFieldQuery – Modèle d'utilisation dual – Lien avec le FieldStorage • Document Storage D8 – Natif vs DBTNG
  • 23. Technique : intégration Views • Interfaçage DBTNG – http://drupal.org/project/mongodb_dbtng • Greffon EFQ – http://drupal.org/project/efq_views
  • 24. Technique : Drupal 6 CCK • Core : La plupart des API sont utilisables – natif ou backports (Queue API) – nécessité de patches core multiples • CCK lié à SQL, pas de field storage NoSQL – hooks pre-load / post-save – patches intrusifs ou non, conséquences – Exemple : Freerice → > 8E9 enregistrements
  • 25. Drupal NoSQL ● Quels objectifs ● Quels coûts ? globaux ? ● Quelles bonnes ● Quelles tâches pratiques ? fonctionnelles ? ● Quels compromis ? ● Quelles techniques ● Quels modules de mise en œuvre ? contribués ?
  • 26. Coûts : nature des coûts Investissement Charges récurrentes • Licences • Licences perpétuelles périodiques • Développement • Hosting spécifique • Support ← Formation →
  • 27. Coûts : licences • Cas général Drupal: licences "libres" – MongoDB : serveur AGPL 3, clients Apache 2 – Redis : BSD 3 clauses – CouchDB, Riak : Apache 2 – Tokyo : LGPL 2.1 • Outils propriétaires – Oracle NoSQL – Progress ObjectStore, etc
  • 28. Coût : développement • Limites du support contrib – Volume de développement • Limites de la communauté – Rareté de la ressource – Coût des spécialistes • Nécessité du test unitaire/intégral
  • 29. Coûts : formation • Corollaire du coût de développement – pénurie de la ressource "développeur" – risque technologique • Investissement ou charge ? – réduction du coût de développement – réduction du TCO – récurrence : turnover, technologie
  • 30. Coût : hébergement SaaS • Base NoSQL : AWS SimpleDB • Fichiers : Azure, CloudFiles, S3... • Backup : CloudFiles, S3... • Recherche : – SOLR : Acquia Search, Adyax Cloud Search – Antidot AFS@Web, Exalead On Demand ...
  • 31. Coûts : support • Pas disponible en libre non commercial : – ElasticSearch, Redis • Coûts en libre commercial : – 10Gen pour MongoDB • 2500 USD/serveur/an / 4000 USD/serveur/an (Gold) – Couchbase pour CouchDB • 2500 USD/serveur/an / 4500 USD/serveur/an (Premier) – Riak : «contact us»
  • 32. Drupal NoSQL : sommaire ● Quels objectifs ● Quels coûts ? globaux ? ● Quelles bonnes ● Quelles tâches pratiques ? fonctionnelles ? ● Quels compromis ? ● Quelles techniques ● Quels modules de mise en œuvre ? contribués ?
  • 33. BCP (MongoDB) : modélisation 1 • Ne pas chercher à simuler SQL JOIN – requêtes multiples avec A/R code – Field Storage : stockage entité cf index couvrant • Le document comme cache – données pour la partie "recherche" du find() – données additionnelles dans un cache interne – logique côté client pour scaling horizontal – penser aux multikeys
  • 34. BCP (MongoDB) : modélisation 2 • Concevoir les documents pour l'indexation – "1 index par requête" vs "économiser les index" • 40 index maximum par collection • MongoDB modifié pour supporter FieldStorage – Utiliser des index couvrants • Conformité : penser à l'"après" – préserver l'accès après la vie de l'application – la seconde vie du cache interne – Exemple : craigslist
  • 35. BCP (MongoDB) : Réalisation • La requête la plus rapide est celle qu'on n'exécute pas ! • Cache != DB : savoir choisir • Typage vs pratique PHP/Drupal/MySQL • Tests en vraie grandeur durant le développement – volume – charge
  • 36. BCP : Production • Instrumentation : de l'alerte à la réparation – Alertes et réactions: Monit, Nagios – Mesure en continu • Surveillance individuelle : Munin, Cacti, • Synthèse : Ganglia – Logs serveur : activer ET utiliser • Tolérance aux pannes et à la charge – Réplication ET sauvegardes, deux besoins
  • 37. Drupal NoSQL : sommaire ● Quels objectifs ● Quels coûts ? globaux ? ● Quelles bonnes ● Quelles tâches pratiques ? fonctionnelles ? ● Quels compromis ? ● Quelles techniques ● Quels modules de mise en œuvre ? contribués ?
  • 38. Compromis : flexibilité schéma • Schéma relationnel – flexibilité illimitée – méthodes de design reconnues et éprouvées • Document storage (MongoDB) – pas de schéma par "table" (collection) – à grande liberté, grandes responsabilités – pas d'outils pratiques comme PMA, Workbench
  • 39. Compromis : durabilité • Relationnel : – évolutivité illimitée – accessibilité hors application limitée – encore plus limitée dans Drupal sans FK • Document (MongoDB) – évolutivité en production difficile – accessibilité hors application PEUT être facile : auto-contenus
  • 40. Compromis : CAP • Théorème de Brewer (CAP theorem) : « it is impossible for a distributed computer system to simultaneously provide all three of the following guarantees: Consistency, Availability, Partition tolerance » • Bases SQL : potentiel ACID – Pas systématique (MyISAM) • MongoDB, bases K/V : "BASE" – Basically Available, Soft state, Eventually consistent
  • 41. Compromis : sharding • Drupal : pas de sharding applicatif intégré • Exemple avec MongoDB http://www.mongodb.org/display/DOCS/Sharding+Introduction
  • 42. Compromis : répliques et clusters • MySQL – par défaut : réplication master/slave • Pressflow 6, core 7 • Utilisation réelle : limites core 6/7 – MySQL cluster • MongoDB – master/slave dans le module – replicaSet dans MongoDB ≥ 1.6
  • 43. Compromis : support • MySQL = Oracle, membres ODBA, SkySQL • NoSQL : – Communautaire : valeur et limitations – Professionnel • CouchDB : Couchbase, Cloudant • MongoDB : 10Gen • Redis : vmWare • Ryak : Ryak
  • 44. Compromis : licences Logiciel Licence par défaut Drupal et contributions drupal.org GPL 2.0 et suivantes MongoDB - serveur AGPL 3.0 MongoDB - clients Apache 2.0 MongoDB - documentation Creative Commons Redis BSD 3 clause CouchDB Apache 2.0 Riak Apache 2.0 Tokyo Tyrant / Tokyo Tycoon LGPL 2.1 ● Etes-vous concerné ? ● Agir en conséquence
  • 45. Drupal NoSQL ● Quels objectifs ● Quels coûts ? globaux ? ● Quelles bonnes ● Quelles tâches pratiques ? fonctionnelles ? ● Quels compromis ? ● Quelles techniques ● Quels modules de mise en œuvre ? contribués ?
  • 46. Modules : Bases Document • MongoDB http://drupal.org/project/mongodb • CouchDB http://drupal.org/project/couchdb • ElasticSearch http://drupal.org/sandbox/damz/1234634 • Amazon SimpleDB http://drupal.org/project/awssdk
  • 47. Modules : clef/valeur • Apache Cassandra http://drupal.org/project/cassandra • Redis http://drupal.org/project/redis http://drupal.org/project/redis_queue http://drupal.org/project/redis_watchdog • Ryak http://drupal.org/project/riak_field_storage • Tokyo Cabinet / Tokyo Tyrant http://drupal.org/node/844354
  • 49. Merci de votre attention ! fgm@osinet.fr http://drupal.org/user/27985 http://drupal.org/node/1121720 Audit, conseil, formation Drupal