Este es el segundo artículo sobre cachés. Para ver el primero hacer click aquí.
Latencia
El objetivo principal de utilizar una caché es conseguir un acceso mucho más rápido a los datos. Esa velocidad de acceso es lo que llamamos latencia.
Como observación adicional, no es que el acceso a la caché sea inmediato, sino que la latencia, es decir ese tiempo utilizado en el acceso a los datos, es menor, y eso nos da la sensación de inmediatez en el acceso. Podemos decir, por lo tanto, que a menor latencia mayor velocidad de acceso, por norma general.
Pero cuidado, que la latencia no es el ancho de banda de la memoria o caché, de hecho el ancho de banda no siempre garantiza una reducción de la latencia. Un bajo ancho de banda podría aumentar la latencia.
Con todo esto podríamos definir la latencia como el tiempo entre que se realiza la petición (contando siempre desde el primer byte), y el momento en que se encuentra el primer acierto en la caché.
Consistencia de datos
Aunque es un concepto característico de las bases de datos en sí, es común utilizar el término también para referirse a una caché, que en sí no es más que otro almacén de datos, pero en memoria. La consistencia de los datos es definida entre el programador y el sistema, que garantiza que si el programador sigue las reglas, la memoria será consistente y el resultado de las operaciones de memoria será predecible.
Consistencia es un término más amplio que el de integridad. Podría definirse como la coherencia entre los datos de la base de datos y los datos almacenados en la caché, que deberían ser siempre iguales, o casi siempre, teniendo en cuenta que los datos en la base de datos pueden cambiar, pero que hay mecanismos de sincronización de la caché con la base de datos.
La consistencia asegura que el sistema, la caché en este caso, se va a comportar como se supone que debe hacerlo.
Persistencia asíncrona
Otro de los conceptos que se manejan al hablar de cachés es la persistencia. Esta está relacionada con la consistencia, en el sentido de que la primera es la que se encarga de preservar la información de un objeto (por ejemplo en caché), pero que también puede recuperar información del origen de datos para que la caché sea consistente con esos datos.
Cuando la persistencia es síncrona, debe lanzarse un proceso, regularmente, que se encargue de mantener esa consistencia, por ejemplo el de sincronización que nombraba antes. Al hacerse de forma regular, siempre hay períodos en los que puede haber diferencia entre los datos de la base de datos y la caché.
La persistencia asíncrona se encarga de mantener la consistencia de la base de datos cada vez que se produce un cambio, de esta forma nos garantizamos que cualquier dato que rescatemos de la caché, estará actualizado en la base de datos, y que por lo tanto no existirán diferencias entre ellas. Como método es posible que sea más costoso, pero indudablemente es mucho más efectivo.