Almacenamiento en caché de la base de datos - Database caching

El almacenamiento en caché de la base de datos es un proceso incluido en el diseño de aplicaciones informáticas que generan páginas web bajo demanda (dinámicamente) accediendo a bases de datos back-end.

Cuando estas aplicaciones se implementan en entornos de varios niveles que involucran clientes basados ​​en navegador, servidores de aplicaciones web y bases de datos back-end, se utiliza el almacenamiento en caché de la base de datos de nivel medio para lograr una alta escalabilidad y rendimiento.

En una arquitectura de tres niveles , el nivel de software de aplicación y el nivel de almacenamiento de datos pueden estar en diferentes hosts. El rendimiento de una aplicación puede estar limitado por la velocidad de la red . Esta limitación se puede minimizar al tener la base de datos en el nivel de la aplicación. Debido a que el software de base de datos comercial hace un uso extensivo de los recursos del sistema, no siempre es práctico tener la aplicación y la base de datos en el mismo host. En este caso, se puede usar una aplicación de base de datos más liviana para almacenar en caché los datos del sistema de administración de base de datos comercial .

Beneficios

El almacenamiento en caché de la base de datos mejora la escalabilidad al distribuir la carga de trabajo de consultas desde el backend a varios sistemas de front-end económicos. Permite flexibilidad en el procesamiento de datos; por ejemplo, los datos de los clientes Platinum se pueden almacenar en caché, mientras que los de los clientes normales no. El almacenamiento en caché puede mejorar la disponibilidad de los datos al proporcionar un servicio continuo para las aplicaciones que dependen solo de las tablas almacenadas en caché, incluso si el servidor backend no está disponible. Otro beneficio es la mejora de las velocidades de acceso a los datos provocada por la localidad de los datos y suavizando los picos de carga al evitar los viajes de ida y vuelta entre el nivel medio y el nivel de datos.

Elementos de diseño potenciales

  • Tablas de caché actualizables: muchos sistemas de caché son de solo lectura, lo que limita su uso a un pequeño segmento de las aplicaciones, aplicaciones que no son de tiempo real.
  • Actualizaciones bidireccionales: para los cachés actualizables, las actualizaciones, que ocurren en el caché, deben propagarse a la base de datos de destino y cualquier actualización que ocurra directamente en la base de datos de destino debe llegar al caché automáticamente.
  • Propagación de actualizaciones síncrona y asíncrona: las actualizaciones en la tabla de caché se propagarán a la base de datos de destino en dos modos. El modo síncrono asegura que después de que se complete la operación de la base de datos, las actualizaciones también se apliquen a la base de datos de destino. En el caso del modo asincrónico, las actualizaciones se retrasan en la base de datos de destino. El modo síncrono proporciona una alta coherencia de caché y es adecuado para aplicaciones en tiempo real. El modo asíncrono proporciona un alto rendimiento y es adecuado para aplicaciones casi en tiempo real.
  • Granularidad de caché múltiple: nivel de base de datos, nivel de tabla y almacenamiento en caché de conjunto de resultados: las principales partes de las bases de datos corporativas son históricas y se accede con poca frecuencia. Sin embargo, hay cierta información a la que se debe poder acceder instantáneamente, como datos de clientes premium, etc.
  • Recuperación de tablas en caché: en caso de falla del sistema o de energía, durante el reinicio de la plataforma de almacenamiento en caché se deben recuperar todas las transacciones comprometidas en las tablas en caché.
  • Herramientas para validar la coherencia de la caché: en caso de un modo asincrónico de propagación de actualizaciones, la caché en diferentes nodos de caché y la base de datos de destino pueden divergir. Esto debe resolverse manualmente, identificando los desajustes y tomando medidas correctivas si es necesario.
  • Escalable horizontalmente: la computación en clúster puede aumentar la disponibilidad y lograr el equilibrio de carga. El almacenamiento en caché en un entorno agrupado abarca varios nodos, lo que mantiene la coherencia de los datos almacenados en caché en todos los nodos.
  • El acceso transparente a las tablas no almacenadas en caché reside en la base de datos de destino: la caché de la base de datos debe realizar un seguimiento de las consultas y debe poder enrutar inteligentemente a la caché de la base de datos oa la base de datos de origen según la localidad de los datos sin ninguna modificación del código de la aplicación .
  • Fallo transparente: no debería haber interrupciones del servicio en caso de falla de la plataforma de almacenamiento en caché. Las conexiones del cliente deben enrutarse a la base de datos de destino.
  • Ninguno o muy pocos cambios en la aplicación: Soporte para interfaces estándar JDBC, ODBC, etc. que harán que la aplicación funcione sin problemas sin ningún cambio en el código de la aplicación. Debe enrutar todas las llamadas a procedimientos almacenados a la base de datos de destino para que no sea necesario migrarlas.

Productos

  • Couchbase : https://www.couchbase.com/caching
  • Redis : sistema de base de datos distribuida en memoria, que también admite varios escenarios de almacenamiento en caché distribuido
  • GigaSpaces - InsightEdge SmartCache
  • Caché CSQL : para almacenar en caché tablas de MySQL, Postgres y Oracle.
  • memcached : para almacenar en caché el conjunto de resultados de consultas
  • Almacenamiento en caché de Windows Azure : para almacenar en caché el conjunto de resultados de consultas en Windows Azure
  • TimesTen : para almacenar en caché las tablas de ORACLE
  • SafePeak : almacenamiento en caché automatizado de conjuntos de resultados de consultas y procedimientos de SQL Server, con desalojo automático de caché para una corrección completa de los datos
  • Apache Ignite
  • Sistemas GridGain
  • Tarantool : base de datos de caché en memoria de código abierto con servidor de aplicaciones Lua completo
  • Heimdall Data : motor de almacenamiento en caché SQL comercial para Postgres, SQL Server, MySQL y cualquier fuente de datos JDBC, con desalojo automático de caché y muchas otras características

Referencias

enlaces externos