...Cómo aprendimos que la culpa era nuestra...Cómo aprendimos que la culpa era nuestra
#SVQMongoDB#SVQMongoDB
MongoDBMongo...
Sobre míSobre mí
Me llamo JavierMe llamo Javier
@JvrBaena@JvrBaena
Backend developerBackend developer
en Socialbroen Socia...
MongoDBMongoDB
●
Uso intensivoUso intensivo
●
Procesamiento de Twitter en tiempo realProcesamiento de Twitter en tiempo re...
MongoDBMongoDB
●
Hemos aprendido muchoHemos aprendido mucho
●
No fue un camino de rosas...No fue un camino de rosas...
●
....
El InfiernoEl Infierno
ÍndicesÍndices
#SVQMongoDB#SVQMongoDB
...Evitando fullscans...Evitando fullscans
ÍndicesÍndices
●
VI-TA-LESVI-TA-LES
●
Evitan Fullscan de ColeccionesEvitan Fullscan de Colecciones
Tus patrones de acceso ...
Working SetWorking Set
#SVQMongoDB#SVQMongoDB
...necesidades de RAM...necesidades de RAM
Working SetWorking Set
●
Lo ideal es que quepa en RAM...Lo ideal es que quepa en RAM...
●
…… o al menos los índiceso al me...
EmbeberEmbeber
#SVQMongoDB#SVQMongoDB
...no te obsesiones...no te obsesiones
EmbeberEmbeber
●
Ausencia de Joins === Embeber DocsAusencia de Joins === Embeber Docs
●
Una sola query recupera toda la in...
EmbeberEmbeber
●
¿Many o Few?¿Many o Few?
●
¿Tamaño definido o incontrolado?¿Tamaño definido o incontrolado?
●
No pasa nad...
WriteWrite
ConcernConcern
#SVQMongoDB#SVQMongoDB
...problemas en las réplicas...problemas en las réplicas
Write ConcernWrite Concern
Al usar replica sets, podemosAl usar replica sets, podemos
configurar el número de nodos al que...
ShardingSharding
#SVQMongoDB#SVQMongoDB
...o más bien no hacerlo...o más bien no hacerlo
Sharding (I)Sharding (I)
●
Working Set demasiado grandeWorking Set demasiado grande
●
Alto nivel de escriturasAlto nivel d...
Sharding (I)Sharding (I)
Sharding (I)Sharding (I)
Sharding ayuda a minimizar todos estosSharding ayuda a minimizar todos estos
factores.factores.
A...
ShardingSharding
#SVQMongoDB#SVQMongoDB
...no planificar lo suficiente...no planificar lo suficiente
Sharding (II)Sharding (II)
Usar sharding implica planificar algunosUsar sharding implica planificar algunos
puntos clave:p...
@!#! ¿Y ahora@!#! ¿Y ahora
qué?qué?
#SVQMongoDB#SVQMongoDB
...misterios infernales...misterios infernales
MongoDBMongoDB
●
Alto RendimientoAlto Rendimiento
●
Alta DisponibilidadAlta Disponibilidad
●
Escalabilidad HorizontalEscal...
¡Gracias por venir!¡Gracias por venir!
@JvrBaena@JvrBaena
@SVQMongoDB@SVQMongoDB
Upcoming SlideShare
Loading in …5
×

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

824 views
746 views

Published on

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
824
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
8
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. ...Cómo aprendimos que la culpa era nuestra...Cómo aprendimos que la culpa era nuestra #SVQMongoDB#SVQMongoDB MongoDBMongoDB
  2. 2. Sobre míSobre mí Me llamo JavierMe llamo Javier @JvrBaena@JvrBaena Backend developerBackend developer en Socialbroen Socialbro
  3. 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. 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. 5. El InfiernoEl Infierno
  6. 6. ÍndicesÍndices #SVQMongoDB#SVQMongoDB ...Evitando fullscans...Evitando fullscans
  7. 7. ÍndicesÍndices ● 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. 8. Working SetWorking Set #SVQMongoDB#SVQMongoDB ...necesidades de RAM...necesidades de RAM
  9. 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 más accedidos + los índicesLos datos más accedidos + los índices necesarios componen el working setnecesarios componen el working set Monitorizar el tamaño del working setMonitorizar el tamaño del working set y la capacidad de las máquinasy la capacidad de las máquinas
  10. 10. EmbeberEmbeber #SVQMongoDB#SVQMongoDB ...no te obsesiones...no te obsesiones
  11. 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. 12. EmbeberEmbeber ● ¿Many o Few?¿Many o Few? ● ¿Tamaño definido o incontrolado?¿Tamaño definido o incontrolado? ● No pasa nada por usar referenciasNo pasa nada por usar referencias Un array queUn array que crececrece indefinidamenteindefinidamente provocaráprovocará 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. 13. WriteWrite ConcernConcern #SVQMongoDB#SVQMongoDB ...problemas en las réplicas...problemas en las réplicas
  14. 14. Write ConcernWrite Concern Al usar replica sets, podemosAl usar replica sets, podemos configurar el número de nodos al queconfigurar el número 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 erróneamente el writeConfigurar erróneamente el write concern puede provocar que tusconcern puede provocar que tus escrituras no terminenescrituras no terminen
  15. 15. ShardingSharding #SVQMongoDB#SVQMongoDB ...o más bien no hacerlo...o más bien no hacerlo
  16. 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. 17. Sharding (I)Sharding (I)
  18. 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 máquina.working set de cada máquina.
  19. 19. ShardingSharding #SVQMongoDB#SVQMongoDB ...no planificar lo suficiente...no planificar lo suficiente
  20. 20. Sharding (II)Sharding (II) Usar sharding implica planificar algunosUsar sharding implica planificar algunos puntos clave:puntos clave: ● Configuración InicialConfiguración Inicial ● Shard KeyShard Key ● Añadir Nuevos ShardsAñadir Nuevos Shards Una planificación inadecuada, o no tenerUna planificación inadecuada, o no tener
  21. 21. @!#! ¿Y ahora@!#! ¿Y ahora qué?qué? #SVQMongoDB#SVQMongoDB ...misterios infernales...misterios infernales
  22. 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. 23. ¡Gracias por venir!¡Gracias por venir! @JvrBaena@JvrBaena @SVQMongoDB@SVQMongoDB

×