Trabajando con cachés V: consistencia y sincronización de los datos

Publicado el 07 mayo 2015 por Elvenbyte @elvenbyte

Hoy voy a hablar de estos dos términos, consistencia y sincronización, porque en el tema de las cachés, y con mantenimiento y programación, están especialmente relacionados. Lo explico a continuación.

Se pretende, por norma general, que los datos de la caché sean lo más parecidos posible a los que hay en la propia base de datos. Esto es lo que denominamos consistencia de la caché. Para lograr esto, necesitamos sincronizar los datos, entre la caché y la base de datos. Esto puede ser algo muy tedioso si se hace a mano, por eso hay sistemas y metodologías que nos ayudan a automatizarlo.

No hablaré de las herramientas por no darle demasiada extensión al artículo, pero sí de algún método o solución. Estos métodos se constituyen normalmente en políticas de uso, concretamente en políticas especiales, que en nuestro caso llamaremos Políticas de Actualización o Escritura. Estas políticas determinan el instante en que se actualiza la información en la memoria principal, siendo esta la base de datos en nuestro caso, cuando se hace una escritura en la memoria caché.

Hay tres formas de aplicar estas políticas, según el tipo de escritura:

  • Escritura inmediata: se escribe al mismo tiempo tanto en la memoria caché como en la principal, pero genera cuellos de botella.
  • Escritura aplazada: actualiza sólo la memoria caché después de haber actualizado los datos. Cuando el bus del sistema se queda libre es cuando actualiza la memoria principal. Esto puede generar que entre medios se lean datos erroneos, pero es pcoo frecuente.
  • Escritura obligada: actualiza sólo la memoria caché después de haber actualizado los datos. Cuando ya no hay alternativa, se actualiza la memoria principal. Esto podría producirse por alguna de las siguiente causas, básicamente:
    • Se accedió a la posición de la memoria principal modificada de la caché.
    • Se elimina un dato de la caché, con lo cual es imperativo borrarlo de la memoria principal o base de datos.

En el siguiente espero poder hablar de las cachés distribuídas. Que lo paséis bien.