49
Drupal et le NoSQL OSInet http://drupal.org/node/1121720 Frédéric G. MARAND http://drupal.org/user/27985

Drupal et le NoSQL - drupagora 2011

  • Upload
    osinet

  • View
    3.523

  • Download
    0

Embed Size (px)

DESCRIPTION

Panorama des technologies NoSQL compatibles avec Drupal 7 et 6 à fin 2011: objectifs globaux, tâches fonctionnelles, techniques de mise en oeuvre, coûts, bonnes pratiques, compromis, modules disponibles. Avec une bibliographie.

Citation preview

Page 1: Drupal et le NoSQL - drupagora 2011

Drupal et le NoSQL

OSInethttp://drupal.org/node/1121720

Frédéric G. MARAND http://drupal.org/user/27985

Page 2: Drupal et le NoSQL - drupagora 2011

• "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:[email protected]

Page 3: Drupal et le NoSQL - drupagora 2011

Drupal NoSQL : sommaire

● Quels objectifs globaux ?

● Quelles tâches fonctionnelles ?

● Quelles techniques de mise en œuvre ?

● Quels coûts ?● Quelles bonnes

pratiques ?● Quels compromis ?● Quels modules

contribués ?

Page 4: Drupal et le NoSQL - drupagora 2011

Drupal NoSQL

● Quels objectifs globaux ?

● Quels tâches fonctionnelles ?

● Quelles techniques de mise en œuvre ?

● Quels coûts ?● Quelles bonnes

pratiques ?● Quels compromis ?● Quels modules

contribués ?

Page 5: Drupal et le NoSQL - drupagora 2011

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

Page 6: Drupal et le NoSQL - drupagora 2011

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

Page 7: Drupal et le NoSQL - drupagora 2011

Objectifs : performance

Page 8: Drupal et le NoSQL - drupagora 2011

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

Page 9: Drupal et le NoSQL - drupagora 2011

Drupal NoSQL

● Quels objectifs globaux ?

● Quelles tâches fonctionnelles ?

● Quelles techniques de mise en œuvre ?

● Quels coûts ?● Quelles bonnes

pratiques ?● Quels compromis ?● Quels modules

contribués ?

Page 10: Drupal et le NoSQL - drupagora 2011

Tâche : backup hors site

• C'est AUSSI une tâche de production• backup_migrate_*

– FTP– Amazon S3– NodeSquirrel (wrapper S3)– Rackspace Cloudfiles

Page 11: Drupal et le NoSQL - drupagora 2011

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

Page 12: Drupal et le NoSQL - drupagora 2011

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

Page 13: Drupal et le NoSQL - drupagora 2011

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

Page 14: Drupal et le NoSQL - drupagora 2011

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

Page 15: Drupal et le NoSQL - drupagora 2011

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

Page 16: Drupal et le NoSQL - drupagora 2011

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

Page 17: Drupal et le NoSQL - drupagora 2011

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

Page 18: Drupal et le NoSQL - drupagora 2011

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

Page 19: Drupal et le NoSQL - drupagora 2011

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

Page 20: Drupal et le NoSQL - drupagora 2011

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

Page 21: Drupal et le NoSQL - drupagora 2011

Drupal NoSQL

● Quels objectifs globaux ?

● Quelles tâches fonctionnelles ?

● Quelles techniques de mise en œuvre ?

● Quels coûts ?● Quelles bonnes

pratiques ?● Quels compromis ?● Quels modules

contribués ?

Page 22: Drupal et le NoSQL - drupagora 2011

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

Page 23: Drupal et le NoSQL - drupagora 2011

Technique : intégration Views

• Interfaçage DBTNG– http://drupal.org/project/mongodb_dbtng

• Greffon EFQ– http://drupal.org/project/efq_views

Page 24: Drupal et le NoSQL - drupagora 2011

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

Page 25: Drupal et le NoSQL - drupagora 2011

Drupal NoSQL

● Quels objectifs globaux ?

● Quelles tâches fonctionnelles ?

● Quelles techniques de mise en œuvre ?

● Quels coûts ?● Quelles bonnes

pratiques ?● Quels compromis ?● Quels modules

contribués ?

Page 26: Drupal et le NoSQL - drupagora 2011

Coûts : nature des coûts

Investissement• Licences

perpétuelles• Développement

spécifique

Charges récurrentes• Licences

périodiques• Hosting• Support

← Formation →

Page 27: Drupal et le NoSQL - drupagora 2011

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

Page 28: Drupal et le NoSQL - drupagora 2011

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

Page 29: Drupal et le NoSQL - drupagora 2011

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

Page 30: Drupal et le NoSQL - drupagora 2011

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 ...

Page 31: Drupal et le NoSQL - drupagora 2011

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»

Page 32: Drupal et le NoSQL - drupagora 2011

Drupal NoSQL : sommaire

● Quels objectifs globaux ?

● Quelles tâches fonctionnelles ?

● Quelles techniques de mise en œuvre ?

● Quels coûts ?● Quelles bonnes

pratiques ?● Quels compromis ?● Quels modules

contribués ?

Page 33: Drupal et le NoSQL - drupagora 2011

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

Page 34: Drupal et le NoSQL - drupagora 2011

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

Page 35: Drupal et le NoSQL - drupagora 2011

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

Page 36: Drupal et le NoSQL - drupagora 2011

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

Page 37: Drupal et le NoSQL - drupagora 2011

Drupal NoSQL : sommaire

● Quels objectifs globaux ?

● Quelles tâches fonctionnelles ?

● Quelles techniques de mise en œuvre ?

● Quels coûts ?● Quelles bonnes

pratiques ?● Quels compromis ?● Quels modules

contribués ?

Page 38: Drupal et le NoSQL - drupagora 2011

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

Page 39: Drupal et le NoSQL - drupagora 2011

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

Page 40: Drupal et le NoSQL - drupagora 2011

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

Page 41: Drupal et le NoSQL - drupagora 2011

Compromis : sharding• Drupal : pas de sharding applicatif intégré• Exemple avec MongoDB

http://www.mongodb.org/display/DOCS/Sharding+Introduction

Page 42: Drupal et le NoSQL - drupagora 2011

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

Page 43: Drupal et le NoSQL - drupagora 2011

Compromis : support

• MySQL = Oracle, membres ODBA, SkySQL• NoSQL :

– Communautaire : valeur et limitations– Professionnel

• CouchDB : Couchbase, Cloudant• MongoDB : 10Gen

• Redis : vmWare• Ryak : Ryak

Page 44: Drupal et le NoSQL - drupagora 2011

Compromis : licences

Logiciel Licence par défautDrupal et contributions drupal.org GPL 2.0 et suivantesMongoDB - serveur AGPL 3.0MongoDB - clients Apache 2.0MongoDB - documentation Creative CommonsRedis BSD 3 clauseCouchDB Apache 2.0Riak Apache 2.0Tokyo Tyrant / Tokyo Tycoon LGPL 2.1

● Etes-vous concerné ?● Agir en conséquence

Page 45: Drupal et le NoSQL - drupagora 2011

Drupal NoSQL

● Quels objectifs globaux ?

● Quelles tâches fonctionnelles ?

● Quelles techniques de mise en œuvre ?

● Quels coûts ?● Quelles bonnes

pratiques ?● Quels compromis ?● Quels modules

contribués ?

Page 46: Drupal et le NoSQL - drupagora 2011

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

Page 47: Drupal et le NoSQL - drupagora 2011

Modules : clef/valeur• Apache Cassandra

http://drupal.org/project/cassandra

• Redishttp://drupal.org/project/redishttp://drupal.org/project/redis_queuehttp://drupal.org/project/redis_watchdog

• Ryakhttp://drupal.org/project/riak_field_storage

• Tokyo Cabinet / Tokyo Tyranthttp://drupal.org/node/844354

Page 48: Drupal et le NoSQL - drupagora 2011

ALLER PLUS LOIN

Page 49: Drupal et le NoSQL - drupagora 2011

Merci de votre attention !

[email protected]

Audit, conseil, formation Drupal

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