El camino hacia el almacenamiento en caché inteligente

¿Por qué no crear caché usted mismo?

Muchos desarrolladores de aplicaciones no almacenan en caché ningún dato o, como mucho, almacenan en caché algunos de los datos estáticos de solo lectura. Algunos desarrolladores van un paso más allá y almacenan datos en caché en "Estado de sesión" entre las solicitudes de los usuarios. Sin embargo, todos estos enfoques pasan por alto el beneficio fundamental del almacenamiento en caché, que es almacenar en caché y compartir datos con todos los usuarios de la aplicación. Y, este tipo de almacenamiento en caché debe ser muy inteligente para evitar problemas de integridad de datos en el caché (a través de datos obsoletos).

Si realmente quiere mejorar el rendimiento de su aplicación a través del almacenamiento en caché inteligente, tiene la pregunta obvia de comprar versus construir. Hay una serie de desventajas en la creación de su propia solución de almacenamiento en caché.

Lo primero y más importante es que está quitando importantes recursos de desarrollo de su objetivo comercial de desarrollar su aplicación y poniéndolos en el desarrollo de una infraestructura que podría comprar fácilmente. En segundo lugar, desarrollar una solución de almacenamiento en caché correcta e inteligente requiere mucho esfuerzo y es posible que su equipo no tenga la experiencia adecuada para diseñar y desarrollar un caché de alto rendimiento que pueda manejar escenarios complejos de concurrencia y sincronización. Y, finalmente, incluso si tuviera la experiencia, está poniendo mucho esfuerzo en algo que lo está alejando de su enfoque comercial.

Incluso si finalmente decide comprar una solución comercial de almacenamiento en caché, debe asegurarse de que proporcione todas las funciones de almacenamiento en caché y agrupación en clústeres necesarias que necesitaría su aplicación. Incluso si hoy comienza con una configuración de un solo servidor, querrá una solución de almacenamiento en caché que pueda crecer con su aplicación en un entorno distribuido y agrupado.

Mejore el rendimiento de las aplicaciones

El beneficio más obvio de usar el almacenamiento en caché es una mejora espectacular en el rendimiento de su aplicación. El almacenamiento en caché es el proceso de almacenar datos (tanto de solo lectura como transaccionales) cerca de la aplicación que se usa con frecuencia. Por lo general, estos datos se almacenan en la memoria (como objetos), ya que recuperar datos de la memoria es mucho más eficiente que recuperarlos de otras ubicaciones, como una base de datos.

Escale el servidor de la base de datos sin costosas actualizaciones de hardware

La mayoría de las aplicaciones realizan muchas más operaciones de lectura que de escritura (por lo general, una proporción de 70:30 u 80:20). Y, el almacenamiento en caché de datos en el nivel del servidor de aplicaciones permite que las aplicaciones reduzcan los viajes a la base de datos para las operaciones de lectura. Esto reduce drásticamente la carga en el servidor de la base de datos.

Hay dos beneficios obvios de esto. Primero, el servidor de la base de datos ahora realiza las operaciones de escritura mucho más rápido. Y, en segundo lugar, el servidor de la base de datos ahora puede manejar una cantidad mucho mayor de clientes sin necesidad de costosas actualizaciones de hardware. Los servidores de bases de datos suelen ser el hardware más caro en la mayoría de las implementaciones de aplicaciones de N niveles y, por lo tanto, los ahorros de actualización de hardware aquí suelen ser muy altos.

Caché de datos transaccionales

Tradicionalmente, las aplicaciones web o los servicios web no almacenan en caché ningún dato o utilizan mecanismos primitivos como "Estado de sesión" para almacenar en caché datos de solo lectura. Hay dos problemas con este enfoque. La primera es que la mayoría de los datos que utiliza una aplicación de misión crítica no son de solo lectura sino transaccionales y, por lo tanto, el almacenamiento en caché de datos de solo lectura no es suficiente para mejorar el rendimiento de la aplicación. En segundo lugar, incluso estos datos de solo lectura no se comparten entre los usuarios, que en una aplicación de la vida real se cuentan por miles o decenas de miles. Como resultado, la mayoría de estas aplicaciones terminan yendo al servidor de la base de datos para obtener la mayor parte de los datos que necesitan y, por lo tanto, los problemas de rendimiento.

Por otra parte, NCache permite que las aplicaciones mantengan datos estáticos y transaccionales en la memoria caché. Y estos datos almacenados en caché están disponibles para todos los usuarios en el clúster de servidores. NCache luego proporciona una serie de mecanismos para garantizar que los datos almacenados en caché no se vuelvan obsoletos y siempre se actualicen cada vez que la aplicación actualice los datos en la base de datos. NCache también le permite manejar situaciones en las que los datos deben actualizarse desde fuera de la aplicación. Esto se logra a través de un concepto de "dependencias".

Administrar relaciones

La mayoría de las aplicaciones de la vida real manejan datos complejos que no solo son transaccionales sino que contienen relaciones de varias capas. Esto significa que si almacena datos en caché, también debe manejar sus relaciones. La caché debe conocer estas relaciones para gestionarlas en caso de operaciones de carga, inserción, actualización o eliminación.

NCache administra las relaciones entre los objetos para que los cambios en un objeto puedan desencadenar cambios o invalidaciones en todos los objetos relacionados. De manera similar, incluso si su aplicación carga un objeto primero y lo coloca en el caché y luego carga sus objetos relacionados, puede decir NCache sobre estas relaciones y NCache puede manejarlos.

No solo puede administrar las relaciones entre los objetos almacenados en caché, sino también entre los objetos almacenados en caché y los recursos externos. NCache proporciona dependencias basadas en claves y archivos para este propósito. Y estas dependencias se pueden invocar de forma remota mediante .NET Remoting. Esto ayuda a mantener tu caché actualizada todo el tiempo.

Sincronizar cambios de datos en clústeres

Muchas aplicaciones web y servicios web se ejecutan en configuraciones de clúster de servidor/granja de servidores para manejar una gran cantidad de usuarios. En estos entornos, si su caché no está agrupada, las actualizaciones de un servidor no estarán disponibles para otros servidores. Como resultado, sus datos almacenados en caché se volverán inconsistentes y obsoletos, lo que generará problemas de integridad de datos.

NCache es un potente caché en clúster que sincroniza todos los cambios de datos en todo el clúster. Proporciona un amplio conjunto de topologías de agrupamiento para ayudarlo a cumplir con sus requisitos específicos. Puede elegir entre las topologías Mirrored Cache, Replicated Cache, Partitioned Cache y Partitioned-replica Cache en su clúster. Estos se discuten con más detalle en NCache Topologías de agrupamiento.

NCache asegura que las actualizaciones simultáneas del caché se manejen de forma serializada para evitar problemas de integridad de datos. Además, garantiza que todos los cambios en la memoria caché estén disponibles de inmediato para todos los nodos del clúster. Esto permite que su aplicación trate NCache como una memoria caché lógica en todo el clúster.

© Copyright Alachisoft 2002 - Todos los derechos reservados. NCache es una marca registrada de Diyatech Corp.