Morning with MongoDB Paris 2012 - MongoDB Cas d'utilisation au Figaro
Post on 17-Jul-2015
1229 Views
Preview:
Transcript
MongoDB Cas d'utilisation au Figaro
Ramon MaceirasSandrine Crozat
ramon@pimentech.net
scrozat@lefigaro.fr
Ecosystème du Figaro
Un CMS BIMEDIAUn CMS WEB par site éditorial
Le Figaro.fr, vaisseau amiral et portail éditorial et communautaire de tous les sites web
CMS BIMEDIA
LE FIGARO.FR
PORTAIL
CMS WEBCMS
WEBCMS WEBCMS
WEBCMS WEBCMS
WEBCMS WEB
Le Figaro.fr - Sport24 - Le Figaro Madame - Le Figaro Bourse - Le Figaro Santé - L'avis du Vin - Le Figaroscope - Le Figaro Golf - TVMAG - Carnet des Décideurs - Carnet du Jour - L'étudiant
Cas1 - Mongodb_watchdog
Cas1 . Mongodb_watchdogContexte
Pour quoi ?Mon Figaro, portail Communautaire exposant des APIs et Webservices aux différents sites du groupe
Et donc ?Nécessité de monitoring et de journalisation d'événements
+ 100000 écritures / jour Peu de lectureDonnées peu sensibles
Cas1 . Mongodb_watchdogMigration vers MongoDB
Drupal Core : Stockage dans MySql donc charge sur BDD Nécessité de purge régulière
mongodb_watchdogStockage dans MongoDB1 collection cappée par type de message
Le + : Réflexe de monitorer même des événements de type information.
Cas2 Mon Figaro ActivityFlux d'activités communautaire au sein du réseau social du Figaro
Cas2. Mon Figaro ActivityContexte
Flux d'activité diffusant toutes les actions communautaires et de publication des membres du réseau Figaro et des journalistes.
● Nombreuses lectures
● Requêtes complexes
● Objets riches● Données assez
sensibles
Cas 2. Mon Figaro ActivityMigration vers MongoDB
2010 : 1ere version 100% MySQL.
Problèmatique de performance => Cache des pages de 2 mns.
En 2011, refonte du système sous MongoDB
Gain de performance => suppression du cache, les activités sont servies instantanément.
Cas 3 - FidJiBase centrale de contenus
Cas 3 . FidJi Context
Echanges de contenus désorganisés, non conformés et redondants entre les CMS du groupe ainsi que vers l'extérieur.
Faible réactivité sur les flux à générerAucune convergence technique
Cas 3 . FidJiModèle
Articles
Article1Article2Article3
Flux
Source1 - Dest1Source2 - Dest2Source2 - Dest1
Litste_Dest1
Article1_id - StatutArticle2_id - StatutArticle2_id - Statut
Litste_Dest1
Article1_id - StatutArticle2_id - StatutArticle2_id - Statut
Litste_Dest1
Article1_id - StatutArticle2_id - StatutArticle2_id - Statut
Litste_Dest1
Article1_id - StatutArticle2_id - StatutArticle2_id - Statut
Liste_Dest1
Article1_id - StatutArticle2_id - StatutArticle2_id - Statut
Mots-clés
Mot-clé1Mot-clé2Mot-clé3
Cas 3. FidJiMécanique d'import - XML2MONGO
conf = {
'dbname': globals.MONGONAME,
'dbhost': globals.MONGOHOST,
'dbuser': globals.MONGOUSER,
'dbpwd': globals.MONGOPWD,
'collection': 'article',
'schema': {
'euid': {
'findtext': '/GESTION/IDWEB',
'notnull': 'true',
},
'verticale': {
'value': 'common',
},
( ('euid', pymongo.ASCENDING), ('verticale', pymongo.ASCENDING) ): {
'key': 'true',
},
'srcuid': {
'findtext': '/GESTION/ID',
},
'revision': {
'findtext': '/GESTION/version',
},
'datemodif': {
'findtext': '/GESTION/updated-at',
'index': 'true',
'cast': lambda(s): parser.parse(s),
},
Cas 3 . FidJiConfiguration des exports
Cas 3 . FidJiAPI Http
Consommation à la demande
Json et JsonPAtom
Simple requête dans MongoDb
Résultat mise en cache sur Varnish
Cas 3 . FidJiInterface de recherche
Cas 3 . FidJi Mongo au coeur de l'application
PyMongo
MongoEngine
top related