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

Drupal et le NoSQL - drupagora 2011

  • 1.
    Drupal et leNoSQL Frédéric G. MARAND OSInet http://drupal.org/user/27985 http://drupal.org/node/1121720
  • 2.
    • "Drupal etle 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 lesvolumes • 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 lacomplexité • 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
  • 7.
  • 8.
    Objectifs : performance • Exemple FigaroPlus : 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 horssite • C'est AUSSI une tâche de production • backup_migrate_* – FTP – Amazon S3 – NodeSquirrel (wrapper S3) – Rackspace Cloudfiles
  • 11.
    Tâche : déport desblocs • 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 desolutions 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 deschamps • 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 • Distributionde 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 • Coreinadapté 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 auxdonné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 6CCK • 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 descoûts Investissement Charges récurrentes • Licences • Licences perpétuelles périodiques • Développement • Hosting spécifique • Support ← Formation →
  • 27.
    Coûts : licences • Casgé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 • Limitesdu 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 • Corollairedu 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 • Pasdisponible 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élisation1 • 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élisation2 • 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èmede 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 etclusters • 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 • ApacheCassandra 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
  • 48.
  • 49.
    Merci de votreattention ! fgm@osinet.fr http://drupal.org/user/27985 http://drupal.org/node/1121720 Audit, conseil, formation Drupal