Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/02/2015, 09:09
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: [C] Estructuras vs mysql

Sin información concreta es complicado dar una respuesta... pero vamos, que yo de momento no me preocuparía tanto por el tema de la eficiencia. Tu primero consigue que el sistema funcione y después dedícate a putearlo y ver hasta donde aguanta... entonces lo mismo te das cuenta que con el diseño que tiene cumple expectativas.

Suele ser algo recurrente el hecho de que la gente se agobie con el tema de la eficiencia antes de tener nada terminado... en serio, no merece la pena. Otra cosa es que me digas que programas fatal y eliges el peor algoritmo del mercado... entonces si, preocúpate un poco por programar mejor, pero no por la eficiencia.

Por otro lado, el tener la información cacheada, si bien puede mejorar enormemente los tiempos de respuesta, supone también un elevado consumo de memoria, lo que podría llevar incluso a que el equipo se saturase ante un número pequeño de peticiones. En este caso también, mi sugerencia es que primero hagas el diseño básico y, a base de pruebas, lo vayas adaptando a tus necesidades específicas.

Ten en cuenta también que el uso de cachés puede dar problemas si están mal implementadas... si la arquitectura es buena debería ser transparente el uso o no de una caché, luego lo suyo es programar el sistema sin cachés y esperar a ver si hacen falta en el futuro.

Otro punto a favor de postponer el uso de cachés es que es posible que no te convenga tener toda la información cacheada a la vez, por lo que elegir el mecanismo más óptimo para que las cachés se vayan regenerando dependerá de la naturaleza de los datos y del uso normal que se le haga al servicio.

Resumiendo:

* Primero consigue que el servidor funcione conectado a una base de datos y sin cachés... todo en el mismo equipo
* Si el servidor no da para tanto, utiliza un "profiler" para ver donde se consume el tiempo de ejecución y mira a ver si esas partes se pueden optimizar
* Si aun necesitas más recursos... mueve la base de datos a otro servidor
* Si aún necesitas más velocidad, plantéate el cacheo de todos o parte de la información

Un saludo