Por @Alvy

Cómo funciona la caché: un tutorial introductorio muy didáctico y completo

En PlanetScale hay un estupendo tutorial, casi un minicurso, dedicado a la caché: conceptos importantes, definiciones, tipos… Y es que caché (o «memoria caché») hay más de una, y de hecho a veces ni siquiera es memoria sino discos, proxies y otros sistemas que buscan un efecto similar.

Recuerdo que la primera vez que oí hablar de memoria caché, en la era de los primeros PCs, me fui al diccionario, a ver qué era aquello. En castellano el equivalente sería zulo, aunque la acepción moderna (aparte de «la caché de los artistas», una forma de remuneración) es ya «memoria de acceso rápido que almacena datos a los que se accede con frecuencia». Proviene del francés y el inglés donde cachier/cache es un escondrijo para guardar pieles, provisiones u otras cosas.

A continuación, un resumen de los conceptos más importantes sobre cacheo tratados en el artículo:

  • Principios básicos: combinar almacenamiento lento y económico (por ejemplo, disco duro) con uno rápido aunque más caro (por ejemplo, memoria RAM) para guardar en este último los datos más usados.
  • Tasa de aciertos (hit rate). Porcentaje de aciertos que conllevan el uso de la caché sin acceder al almacenamiento lento.
  • Cachés en el MundoReal™. Caché por niveles: L1, L2 y L3 en la CPU (cada vez más grandes y lentas). La RAM como caché de disco, los discos duros o SSD como almacenamiento.
  • Localidad temporal. Los datos usados recientemente tienden a solicitarse de nuevo.
  • Localidad espacial. Al acceder a ciertos datos es probable que se soliciten los adyacentes (p. ej., fotos en álbumes) lo cual permite precargarlos para anticiparse a futuras lecturas y ganar velocidad.
  • Caché geoespacial. Es la latencia física: la distancia entre el usuario y el servidor, que influye en la velocidad percibida (p. ej., 10–20 ms en EE.UU. de costa a costa frente a 250 ms en otro continente). Las CDN distribuidas globalmente actúan como cachés globales, atendiendo peticiones desde los nodos más cercanos.
  • Políticas de reemplazo. Cuando la caché está llena hay que decidir de qué elemento prescindir. Esto puede emplear el método LIFO (Last In, First Out) que expulsa el último añadido; LRU (Least Recently Used), que expulsa el usado menos recientemente usado (habitual); Time-Aware LRU, que añade caducidad temporal (p. ej., posts sociales tras 48 h); LFU o incluso con algoritmos a medida.
  • Cacheo en bases de datos (Postgres y MySQL). Explicaciones someras.

Entender todo esto aunque no se vaya a profundizar técnicamente está bien para hacerse una idea de las diferentes ideas y políticas que se pueden seguir al respecto, dado que la caché está presente a todos los niveles (CPU, RAM, aplicaciones en la nube, CDNs, bases de datos) y optimizar su funcionamiento requiere buscar el equilibrio entre coste, capacidad y velocidad.

Relacionado:

Compartir en Flipboard Publicar