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
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
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!
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
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?
●
¿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
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
16. Sharding (I)Sharding (I)
●
Working Set demasiado grandeWorking Set demasiado grande
●
Alto nivel de escriturasAlto nivel de escrituras
●
Impacto en rendimientoImpacto en rendimiento
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.
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
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