Es muy habitual en multitud de aplicaciones, que la aplicación deba manipular a menudo información que se obtiene fruto del procesamiento según diferentes operaciones de otra información inicial.
Cuando esto sucede, se puede tomar la decisión de almacenar sólo la información básica a partir de la cual se puede deducir cualquier otra información necesaria, fruto de la manipulación y procesamiento de esta. Si esta es la decisión entonces cada vez que necesitemos información fruto del procesamiento de otra, deberemos realizar el cálculo de esa información procesada a partir de la información básica. En ocasiones, tener que calcular cada vez el procesamiento de la información para obtener otra, puede resultar muy costoso computacionalmente y puede merecer la pena sólo calcularlo una vez e ir actualizándolo sucesivamente y dejar almacenado en otra porción de memoria dicha información procesada.
Otra decisión posible es almacenar no sólo la información básica a partir de la cual se puede deducir la demás, sino almacenar también información procesada que se va a utilizar muchas veces en la aplicación y reservar memoria para ella. De esta forma, ocuparemos más memoria, pero a cambio podremos reducir el tiempo de ejecución destinado al cálculo de la información procesada.
Comparando las dos soluciones, hay que tomar una decisión de compromiso teniendo en cuenta diferentes factores como: cuáles son las limitaciones de nuestra aplicación (en memoria, en tiempo de ejecución, etc.), cuánta más memoria implica tener la información extra procesada, cuánto más tiempo de cálculo implica tener que procesar la información cada vez en lugar de sólo procesarlo una vez y actualizarlo cada vez que hay un cambio (dependiendo de la aplicación esa actualización puede ser más o menos costosa en tiempo, al igual que la operación de procesado en sí puede ser más o menos costosa).
En el caso de nuestra aplicación de referencia, un ejemplo de información que se puede obtener como procesamiento de otra es el número de fotos que ha sacado un determinado autor. Dicha información se puede extraer a partir de las tablas de fotos y autores, recorriendo todas las instancias de fotos y viendo cuales se corresponden con un determinado autor, en cuyo caso se sumará 1. Por lo tanto, se puede tomar la decisión de o bien procesar la información básica para obtener el número de fotos de un autor, o bien almacenar en otra área de memoria el número de fotos que tiene un determinado autor, calcularlo sólo una vez al inicio e implementar en el programa para que cada vez que ese autor añada una foto, se incremente su número de fotos en 1. Esta área de memoria extra, podría ser una expansión de la tabla de autores para incluir este campo de número de fotos. Si bien es información redundante (se puede obtener del procesamiento de otra información), puede resultar beneficioso según la funcionalidad de la aplicación tener esa réplica de la información.
Responde a las siguientes preguntas