sevilla mongo developers group - mongodb: cómo aprendimos que la culpa era nuestra

Download Sevilla Mongo Developers Group - MongoDB: Cómo aprendimos que la culpa era nuestra

If you can't read please download the document

Upload: francisco-javier-baena-rios

Post on 14-Jun-2015

584 views

Category:

Technology


0 download

DESCRIPTION

Charla para el grupo de usuarios de MongoDB de Sevilla, donde relatamos los "gotchas", tropiezos y problemillas que encontramos en SocialBro durante nuestra experiencia haciendo uso intensivo y eficiente de MongoDB

TRANSCRIPT

  • 1. ...Cmo aprendimos que la culpa era nuestra...Cmo aprendimos que la culpa era nuestra #SVQMongoDB#SVQMongoDB MongoDBMongoDB

2. Sobre mSobre m Me llamo JavierMe llamo Javier @JvrBaena@JvrBaena Backend developerBackend developer en Socialbroen Socialbro 3. MongoDBMongoDB Uso intensivoUso intensivo Procesamiento de Twitter en tiempo realProcesamiento de Twitter en tiempo real Elevado nivel de escrituraElevado nivel de escritura Consultas frecuentesConsultas frecuentes 4. MongoDBMongoDB Hemos aprendido muchoHemos aprendido mucho No fue un camino de rosas...No fue un camino de rosas... ...principalmente nuestra culpa...principalmente nuestra culpa 5. El InfiernoEl Infierno 6. ndicesndices #SVQMongoDB#SVQMongoDB ...Evitando fullscans...Evitando fullscans 7. ndicesndices VI-TA-LESVI-TA-LES Evitan Fullscan de ColeccionesEvitan Fullscan de Colecciones Tus patrones de acceso a datos definenTus patrones de acceso a datos definen los ndices que debes establecer... ojo silos ndices que debes establecer... ojo si cambian!cambian! 8. Working SetWorking Set #SVQMongoDB#SVQMongoDB ...necesidades de RAM...necesidades de RAM 9. Working SetWorking Set Lo ideal es que quepa en RAM...Lo ideal es que quepa en RAM... o al menos los ndiceso al menos los ndices Los datos ms accedidos + los ndicesLos datos ms accedidos + los ndices necesarios componen el working setnecesarios componen el working set Monitorizar el tamao del working setMonitorizar el tamao del working set y la capacidad de las mquinasy la capacidad de las mquinas 10. EmbeberEmbeber #SVQMongoDB#SVQMongoDB ...no te obsesiones...no te obsesiones 11. EmbeberEmbeber Ausencia de Joins === Embeber DocsAusencia de Joins === Embeber Docs Una sola query recupera toda la infoUna sola query recupera toda la info Al usar mongodb, podemos acabarAl usar mongodb, podemos acabar recurriendo demasiado a embeberrecurriendo demasiado a embeber documentosdocumentos 12. EmbeberEmbeber Many o Few?Many o Few? Tamao definido o incontrolado?Tamao definido o incontrolado? No pasa nada por usar referenciasNo pasa nada por usar referencias Un array queUn array que crececrece indefinidamenteindefinidamente provocarprovocar problemas alproblemas al escribirescribir Fuente: http://crocodillon.com/images/blog/2013/mongodb-for-dbas__data-files.pngFuente: http://crocodillon.com/images/blog/2013/mongodb-for-dbas__data-files.png 13. WriteWrite ConcernConcern #SVQMongoDB#SVQMongoDB ...problemas en las rplicas...problemas en las rplicas 14. Write ConcernWrite Concern Al usar replica sets, podemosAl usar replica sets, podemos configurar el nmero de nodos al queconfigurar el nmero de nodos al que queremos que una escritura se repliquequeremos que una escritura se replique antes de considerarla como exitosaantes de considerarla como exitosa Configurar errneamente el writeConfigurar errneamente el write concern puede provocar que tusconcern puede provocar que tus escrituras no terminenescrituras no terminen 15. ShardingSharding #SVQMongoDB#SVQMongoDB ...o ms bien no hacerlo...o ms bien no hacerlo 16. Sharding (I)Sharding (I) Working Set demasiado grandeWorking Set demasiado grande Alto nivel de escriturasAlto nivel de escrituras Impacto en rendimientoImpacto en rendimiento 17. Sharding (I)Sharding (I) 18. Sharding (I)Sharding (I) Sharding ayuda a minimizar todos estosSharding ayuda a minimizar todos estos factores.factores. Al escalar horizontalmente repartimosAl escalar horizontalmente repartimos el volumen de acceso y dividimos elel volumen de acceso y dividimos el working set de cada mquina.working set de cada mquina. 19. ShardingSharding #SVQMongoDB#SVQMongoDB ...no planificar lo suficiente...no planificar lo suficiente 20. Sharding (II)Sharding (II) Usar sharding implica planificar algunosUsar sharding implica planificar algunos puntos clave:puntos clave: Configuracin InicialConfiguracin Inicial Shard KeyShard Key Aadir Nuevos ShardsAadir Nuevos Shards Una planificacin inadecuada, o no tenerUna planificacin inadecuada, o no tener 21. @!#! Y ahora@!#! Y ahora qu?qu? #SVQMongoDB#SVQMongoDB ...misterios infernales...misterios infernales 22. MongoDBMongoDB Alto RendimientoAlto Rendimiento Alta DisponibilidadAlta Disponibilidad Escalabilidad HorizontalEscalabilidad Horizontal ...Pero hay que saber qu se hace...Pero hay que saber qu se hace Patrones de AccesoPatrones de Acceso Modelado de DatosModelado de Datos ArquitecturaArquitectura Funcionamiento InternoFuncionamiento Interno 23. Gracias por venir!Gracias por venir! @JvrBaena@JvrBaena @SVQMongoDB@SVQMongoDB