Bases de Datos - ¿Mejor tener datos en memoria o acceder a la BD?

   
Vista:

¿Mejor tener datos en memoria o acceder a la BD?

Publicado por Hodei (2 intervenciones) el 15/11/2010 10:17:38
Estoy haciendo una aplicación que tiene una configuración fija en un principio. Dicha configuración se hace mediante diferentes datos de diferentes tablas. En este punto es donde se me plantea la duda de qué será mejor, si tener dicha configuración en memoria o acceder a la base de datos una y otra vez.

Lo bueno de tenerlo en memoria es que no se tienen que hacer tantas consultas ni accesos a la base de datos.

Lo bueno de acceder a la base de datos una y otra vez, es que si este se actualiza, la aplicación también trabajara con los datos actuales.

En mi caso, al no actualizarse casi nunca los datos de la BD, me parece mejor la primera opción. En este caso, desarrollaría un sistema de actualización de dichos datos en memoria.

¿Qué opináis?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿Mejor tener datos en memoria o acceder a la BD

Publicado por Franklin Gamboa (188 intervenciones) el 16/11/2010 13:40:12
Es mucho mas rapido acceder a la memoria RAM que a disco (o SAN), pero si eciste el problema que, si el dato se modifica entonces estas usando "datos sucios".

La mejor solucion es guardar el dato en memoria, y antes de escribir en la base de datos, revisar que el valor no ahya cambiado y si ha cambiado, reemplazarlo en memoria y seguir con el nuevo dato, o poner un bloqueo en la fila con el valor en cuestión para evitar que pueda ser modificado, pero esto trae otras consecuencias.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Mejor tener datos en memoria o acceder a la BD

Publicado por Hodei (2 intervenciones) el 16/11/2010 17:33:06
La cuestión es que dicha modificación en la base de datos la efectuara otra aplicación.

Mi idea era, que dicha aplicación, al hacer cualquier actualización, tambien lo registre en un campo que la primera aplicación estara controlando.

Cuando haya cambiado el campo de control, entonces mi aplicación principal haria la lectura de los demas datos que se hayan podido modificar.
En ningun momento tendran las dos aplicaciones comunicaciones entre ellas, a no ser que sea mediante la base de datos.

Lo que quiero evitar es el constante acceso a la base de datos para cargarlo todo una y otra vez y directamente hacer dicha lectura unicamente cuando un unico campo de la BD cambie.

No se, si me e expresado correctamente o si le e dado mas vueltas a la perdiz.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Mejor tener datos en memoria o acceder a la BD

Publicado por Franklin Gamboa (188 intervenciones) el 17/11/2010 13:27:58
Ahora te entiendo mejor...

MIra, al ser dos aplicaciones diferentes, el Sistema Operativo va a impedir que una accese memoria de la otra directamente, puedes usar reflection para intercambiar datos pero igual sería código no manejado y ningun framework te da garantía que siempre funcione bien, ademas que es incomodo darle mantenimiento y de desarrollar. Ademas que para que esto funcione, ambas aplicaciones deben correr en la misma maquina y mil limitaciones tecnicas mas.....

Lo mas sencillo en este caso, es leer de la base de datos, ya que, a como tu dices, es el unico punto en común entre las dos aplicaciones y es la fuente unificada de la verdad, por lo que las lecturas a la base de datos son el camino mas seguro.

Puedes intentar manejar una cache, pero siempre antes de hacer operaciones deberás leer en la base de datos que los valores no hayan cambiado... por lo que tener la cache pierde la gracia ya que siempre tendrías que accesar la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar