El acceso a datos y las capas de persistencia / almacenamiento son lugares irresistiblemente naturales para el almacenamiento en caché. Están haciendo las E / S, haciéndolas prácticas, lugar fácil para insertar el almacenamiento en caché. Me atrevo a decir que casi todas las capas DAL o de persistencia tendrán, a medida que maduren, una función de almacenamiento en caché, si no está diseñada de esa manera desde el principio.
El problema es la intención . Las capas DAL y de persistencia se ocupan de construcciones de nivel relativamente bajo, por ejemplo, registros, tablas, filas y bloques. No ven el "negocio" o los objetos de la capa de aplicación, o tienen mucha información sobre cómo se utilizan en los niveles superiores. Cuando ven que se leen o escriben un puñado de filas o una docena de bloques, no está claro si representan. "La cuenta de Jones que estamos analizando actualmente" no se ve muy diferente de "algunos datos básicos de referencia de tasas impositivas que la aplicación necesita solo una vez, y a los que no volverá a referirse". En esta capa, los datos son datos son datos.
El almacenamiento en caché en la capa DAL / persistencia corre el riesgo de tener los datos de referencia de impuestos "fríos" allí, ocupando inútilmente 12.2MB de caché y desplazando parte de la información de la cuenta que, de hecho, se utilizará intensamente en solo un minuto. Incluso los mejores administradores de caché están lidiando con un escaso conocimiento de las estructuras y conexiones de datos de nivel superior, y con poca información sobre qué operaciones vendrán pronto, por lo que recurren a los algoritmos de estimación .
Por el contrario, el almacenamiento en caché de la aplicación o la capa empresarial no es tan bueno. Requiere insertar operaciones de administración de caché o sugerencias en medio de otra lógica comercial, lo que hace que el código comercial sea más complejo. Pero la compensación es: tener más conocimiento de cómo se estructuran los datos a nivel macro y qué operaciones están surgiendo, tiene una oportunidad mucho mejor de aproximar la eficiencia de almacenamiento en caché óptima ("clarividente" o "Bélády Min").
Si tiene sentido insertar la responsabilidad de administración de caché en el código de negocio / aplicación es una decisión sensata y variará según las aplicaciones. En muchos casos, aunque se sabe que las capas DAL / persistencia no lo harán "perfectamente bien", la compensación es que pueden hacer un trabajo bastante bueno, que lo hacen de una manera arquitectónicamente "limpia" y mucho más intensamente comprobable , y que la captura de bajo nivel evita aumentar la complejidad del código de negocio / aplicación.
Una menor complejidad fomenta una mayor corrección y confiabilidad, y un tiempo de comercialización más rápido. Eso a menudo se considera una gran compensación: un almacenamiento en caché menos perfecto, pero un código comercial más oportuno y de mejor calidad.