SlideShare uma empresa Scribd logo
1 de 23
...Cómo aprendimos que la culpa era nuestra...Cómo aprendimos que la culpa era nuestra
#SVQMongoDB#SVQMongoDB
MongoDBMongoDB
Sobre míSobre mí
Me llamo JavierMe llamo Javier
@JvrBaena@JvrBaena
Backend developerBackend developer
en Socialbroen Socialbro
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
MongoDBMongoDB
●
Hemos aprendido muchoHemos aprendido mucho
●
No fue un camino de rosas...No fue un camino de rosas...
●
...principalmente nuestra culpa...principalmente nuestra culpa
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 a datos definenTus patrones de acceso a datos definen
los índices que debes establecer... ¡ojo silos índices que debes establecer... ¡ojo si
cambian!cambian!
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 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
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 infoUna sola query recupera toda la info
Al usar mongodb, podemos acabarAl usar mongodb, podemos acabar
recurriendo demasiado a embeberrecurriendo demasiado a embeber
documentosdocumentos
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
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 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
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 de escrituras
●
Impacto en rendimientoImpacto en rendimiento
Sharding (I)Sharding (I)
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.
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: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
@!#! ¿Y ahora@!#! ¿Y ahora
qué?qué?
#SVQMongoDB#SVQMongoDB
...misterios infernales...misterios infernales
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
¡Gracias por venir!¡Gracias por venir!
@JvrBaena@JvrBaena
@SVQMongoDB@SVQMongoDB

Mais conteúdo relacionado

Destaque

Final Media & Entertainment Industry_2506
Final Media & Entertainment Industry_2506Final Media & Entertainment Industry_2506
Final Media & Entertainment Industry_2506
Tanushree Khanna
 
9 simulacrolpreescolar
9 simulacrolpreescolar9 simulacrolpreescolar
9 simulacrolpreescolar
haguar
 
Eric Worre-Go pro 7 pasos para convertirse en un profesional
Eric Worre-Go pro 7 pasos para convertirse en un profesionalEric Worre-Go pro 7 pasos para convertirse en un profesional
Eric Worre-Go pro 7 pasos para convertirse en un profesional
Rafael Romero Romero
 

Destaque (15)

La Química de l'olor. Un recurs per l'aula de secundària.
La Química de l'olor. Un recurs per l'aula de secundària.La Química de l'olor. Un recurs per l'aula de secundària.
La Química de l'olor. Un recurs per l'aula de secundària.
 
Innovación: El arte de inventar el futuro. Capitulo 2
Innovación: El arte de inventar el futuro. Capitulo 2Innovación: El arte de inventar el futuro. Capitulo 2
Innovación: El arte de inventar el futuro. Capitulo 2
 
Leer y escribir
Leer y escribirLeer y escribir
Leer y escribir
 
Progetto corsointerior caterina_palasciano
Progetto corsointerior caterina_palascianoProgetto corsointerior caterina_palasciano
Progetto corsointerior caterina_palasciano
 
Rugby & puma
Rugby & pumaRugby & puma
Rugby & puma
 
LogMeIn
LogMeInLogMeIn
LogMeIn
 
Implantologia exposicion iv
Implantologia exposicion ivImplantologia exposicion iv
Implantologia exposicion iv
 
Final Media & Entertainment Industry_2506
Final Media & Entertainment Industry_2506Final Media & Entertainment Industry_2506
Final Media & Entertainment Industry_2506
 
Visita medica areglando
Visita medica areglandoVisita medica areglando
Visita medica areglando
 
Educación Artística 2016
Educación Artística 2016Educación Artística 2016
Educación Artística 2016
 
9 simulacrolpreescolar
9 simulacrolpreescolar9 simulacrolpreescolar
9 simulacrolpreescolar
 
Acabamentodecostura 140616200637-phpapp01
Acabamentodecostura 140616200637-phpapp01Acabamentodecostura 140616200637-phpapp01
Acabamentodecostura 140616200637-phpapp01
 
[Slides] Real-Time Marketing: The Agility to Leverage Now
[Slides] Real-Time Marketing: The Agility to Leverage Now[Slides] Real-Time Marketing: The Agility to Leverage Now
[Slides] Real-Time Marketing: The Agility to Leverage Now
 
Eric Worre-Go pro 7 pasos para convertirse en un profesional
Eric Worre-Go pro 7 pasos para convertirse en un profesionalEric Worre-Go pro 7 pasos para convertirse en un profesional
Eric Worre-Go pro 7 pasos para convertirse en un profesional
 
13tercer molar
13tercer molar13tercer molar
13tercer molar
 

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

ventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticosventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticos
Irving Muñoz
 
ventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticosventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticos
Irving Muñoz
 
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
RootedCON
 
Bootcamp2012dsv code management continuois integration
Bootcamp2012dsv code management continuois integrationBootcamp2012dsv code management continuois integration
Bootcamp2012dsv code management continuois integration
Domènec Vallès
 
Clase1 introduccinalcurso
Clase1 introduccinalcursoClase1 introduccinalcurso
Clase1 introduccinalcurso
jorg_marq
 

Semelhante a Sevilla Mongo Developers Group - MongoDB: Cómo aprendimos que la culpa era nuestra (20)

Ruby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos RealesRuby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos Reales
 
ventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticosventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticos
 
ventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticosventajas y desventajas de programas informaticos
ventajas y desventajas de programas informaticos
 
FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017
 
Reventando WordPress
Reventando WordPressReventando WordPress
Reventando WordPress
 
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
 
Derrotando a changos con scanners [Paulino Calderon]
Derrotando a changos con scanners [Paulino Calderon]Derrotando a changos con scanners [Paulino Calderon]
Derrotando a changos con scanners [Paulino Calderon]
 
Blinda y personaliza tu WordPress
Blinda y personaliza tu WordPress Blinda y personaliza tu WordPress
Blinda y personaliza tu WordPress
 
Desarrollando en la web con todo el power 2.0
Desarrollando en la web con todo el power 2.0Desarrollando en la web con todo el power 2.0
Desarrollando en la web con todo el power 2.0
 
20150415 roslyn
20150415 roslyn20150415 roslyn
20150415 roslyn
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Presentación Black Hat #SBCongress
Presentación Black Hat #SBCongressPresentación Black Hat #SBCongress
Presentación Black Hat #SBCongress
 
Lenguaje de programación Java
Lenguaje de programación Java Lenguaje de programación Java
Lenguaje de programación Java
 
Más allá del testing
Más allá del testingMás allá del testing
Más allá del testing
 
Desde el DVR hasta la cocina
Desde el DVR hasta la cocinaDesde el DVR hasta la cocina
Desde el DVR hasta la cocina
 
Javascript
JavascriptJavascript
Javascript
 
Bootcamp2012dsv code management continuois integration
Bootcamp2012dsv code management continuois integrationBootcamp2012dsv code management continuois integration
Bootcamp2012dsv code management continuois integration
 
Clase1 introduccinalcurso
Clase1 introduccinalcursoClase1 introduccinalcurso
Clase1 introduccinalcurso
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.js
 
Lord of the codes: Visual Studio y todo lo que puedes hacer con él
Lord of the codes: Visual Studio y todo lo que puedes hacer con élLord of the codes: Visual Studio y todo lo que puedes hacer con él
Lord of the codes: Visual Studio y todo lo que puedes hacer con él
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (10)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

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