He tomado una clase de base de datos este semestre y estamos estudiando mantener la coherencia de la caché entre el RDBMS y un servidor de caché como memcached. Los problemas de consistencia surgen cuando hay condiciones de carrera. Por ejemplo:Consistencia de la caché al usar memcached y una rdbms como MySQL
- Supongamos que hago un
get(key)
desde la memoria caché y hay una falta de caché. Como recibo una falta de caché, obtengo los datos de la base de datos y luego hago unput(key,value)
en el caché. - Pero, podría ocurrir una condición de carrera, donde otro usuario podría eliminar los datos que obtuve de la base de datos. Esta eliminación puede ocurrir antes de hacer un
put
en la caché.
Por lo tanto, idealmente el put
en la memoria caché no debería ocurrir, ya que los datos están más presentes en la base de datos.
Si la entrada de caché tiene un TTL, la entrada en el caché puede caducar. Pero aún así, hay una ventana donde los datos en el caché son inconsistentes con la base de datos.
He estado buscando artículos/trabajos de investigación que hablan sobre este tipo de problemas. Pero no pude encontrar ningún recurso útil.
explica cómo se corrigen las condiciones de carrera mencionadas en la pregunta. su respuesta aparentemente no aborda el problema. – Alexey