Primeros pasos con la caché de plataforma
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Describir qué es la Caché de plataforma y para qué se utiliza.
- Enumerar los dos tipos de caché de plataforma que existen y proporcionar ejemplos.
- Describir el concepto de particiones y su utilización.
¿Qué se entiende por caché?
Una caché es un almacenamiento temporal. En computación, la caché es el almacenamiento temporal de los datos de las bases de datos a los que se accede frecuentemente. A continuación se ofrece una analogía. Supongamos que es usted una ardilla que busca nueces y bellotas para cenar. Son las 5:00 y se dispone a comer. ¿Va a comer las nueces y las bellotas que tiene guardadas en sus abazones (caché) o piensa volver al bosque para buscar más en los árboles (base de datos)? Si accede a la caché temporal de comida que tiene en sus abazones, su alimento está realmente cerca de usted y podrá cenar muy rápido. Además, cumplirá su objetivo de una manera mucho más eficiente. Las cachés de datos ofrecen beneficios similares, aunque para las personas y no para las ardillas.
¿Qué se entiende por caché de plataforma?
La caché de plataforma es una capa de memoria que almacena datos de la organización y la sesión de Salesforce para su posterior acceso. Cuando se utiliza la Caché de plataforma, las aplicaciones se ejecutan con mayor rapidez porque almacenan datos reutilizables en la memoria. De este modo, las aplicaciones pueden acceder con rapidez a estos datos puesto que no necesitan duplicar cálculos ni realizar solicitudes a la base de datos para futuras transacciones. En resumen, piense en la Caché de plataforma como la memoria RAM de su aplicación en la nube.
Con la Caché de plataforma, también podrá asignar espacio de caché para que ciertas aplicaciones u operaciones no consuman la capacidad de otras. Utilice las particiones para distribuir el espacio. Hablaremos de las particiones más adelante.
Antes de continuar
Vamos a hacer una breve pausa para que pueda solicitar una prueba de caché de plataforma. De manera predeterminada, las organizaciones Developer tienen una capacidad de caché de 0 MB. Sin embargo, puede solicitar un espacio de caché de prueba de 10 MB.
Para solicitar una prueba, vaya a la Configuración de su organización Developer. En el cuadro Quick Find (Búsqueda rápida), ingrese caché y, a continuación, haga clic en Platform Cache (Caché de plataforma). Haga clic en Solicitar capacidad de prueba y espere a recibir un email notificándole de que su prueba de caché de plataforma está activa. Salesforce aprueba las solicitudes de prueba de inmediato, aunque puede tardar unos minutos en recibir el email.
Si no dispone de prueba de caché, podrá ejecutar operaciones de caché para aprender a utilizar la caché. Sin embargo, se omite el almacenamiento de caché y los valores recuperados son nulos (errores de caché).
Bien. Ahora que solicitó una prueba de Caché de plataforma, es hora de aprender algunos conceptos adicionales.
¿Cuándo puedo utilizar la caché de plataforma?
Puede utilizar la Caché de plataforma en su código prácticamente en cualquier punto en el que se acceda a los mismos datos de manera repetitiva. La utilización de datos que se almacenaron en la caché incrementa el desempeño de su aplicación y resulta más rápido que utilizar consultas SOQL de manera repetitiva, realizar múltiples llamadas de API o programar cálculos complejos.
A continuación se describen los mejores datos para almacenar en la caché:
- Datos que se reutilizan en las sesiones o que reutilizan todos los usuarios y las solicitudes.
- Datos estáticos (que no cambian rápidamente).
- Datos difíciles de computar o recuperar.
Almacenar datos que no cambien a menudo
Utilice la caché para almacenar datos estáticos o datos que no cambien a menudo. Estos datos se recuperan inicialmente mediante llamadas a API de terceros o de manera local mediante consultas SOQL. Si los datos cambian, almacene dichos datos en caché si los valores no tienen que ser muy precisos.
A continuación se ofrecen ejemplos de datos estáticos:
- Programaciones de transporte público.
- Programaciones de lanzaderas de compañías.
- Encabezados de fichas visibles para todos los usuarios.
- Barra de navegación estática que se muestra en todas las páginas de su aplicación.
- Carro de la compra de un usuario que desee mantener durante una sesión.
- Instantáneas diarias de tipos de cambio de divisas (las tasas fluctúan durante el día).
Almacenar datos que se obtuvieron mediante cálculos complejos
Los valores que se obtienen como resultado de cálculos complejos o consultas largas son buenos candidatos para el almacenamiento en la caché. A continuación se ofrecen ejemplos de estos datos:
- Ventas totales de la semana pasada.
- Total de horas de voluntariado de los empleados de la compañía en conjunto.
- Clasificación de mejores ventas.
Inspeccione su código para obtener pistas sobre dónde utilizar la Caché de plataforma. Por ejemplo, ¿actualmente almacena datos de aplicación sobrecargando estados de vista de Visualforce? Estos valores almacenados son candidatos para la Caché de plataforma.
No todos los casos de uso son casos de uso de Caché de plataforma. Por ejemplo, los datos que cambian a menudo o en tiempo real, como, por ejemplo, las cotizaciones de bolsa, no son buenos candidatos para el almacenamiento en caché. Asegúrese también de familiarizarse con las limitaciones de la Caché de plataforma. Por ejemplo, si el acceso a los datos se realiza mediante Apex asíncrono, estos no pueden almacenarse en una caché que se base en la sesión de los usuarios.
Asignaciones de caché por versión
La función de caché de plataforma está disponible para los clientes con organizaciones Enterprise Edition y superiores. Las versiones que se indican a continuación se suministran con un espacio de caché predeterminado; sin embargo, a menudo, al agregar más caché se obtienen mayores mejoras de desempeño.
- Enterprise Edition (10 MB de forma predeterminada).
- Unlimited Edition (30 MB de forma predeterminada).
- Performance Edition (30 MB de forma predeterminada).
Probar con espacio de caché de prueba
Puede adquirir espacio de caché adicional para su organización. Para determinar la cantidad adicional de espacio de caché que resultaría beneficiosa para sus aplicaciones, puede solicitar espacio de caché de prueba y hacer pruebas. Además, puede solicitar espacio de caché de prueba para la versión Professional Edition antes de adquirir espacio de caché. Utilice el espacio de caché de prueba en su organización Developer Edition para desarrollar y probar aplicaciones con la caché de plataforma. Cuando se apruebe su solicitud, recibirá 30 MB de espacio de caché de prueba (10 MB para la versión Developer Edition). Si necesita más espacio de caché de prueba, haga contacto con Salesforce.
¿Cuáles son los distintos tipos de caché de plataforma?
Existen dos tipos de Caché de plataforma: la caché de la organización y la caché de la sesión.
Caché de la organización
La caché de la organización almacena datos de la organización que todos los usuarios de la organización pueden utilizar. La caché de la organización está disponible a través de las sesiones, las solicitudes y los perfiles y usuarios de la organización.
Por ejemplo, los datos del tiempo pueden recuperarse y mostrarse a los contactos dependiendo de cuál sea su ubicación. O bien, es posible almacenar en la caché instantáneas diarias de tipos de cambio de divisas para su utilización en una aplicación.
Caché de sesión
La caché de sesión almacena datos de usuarios individuales y depende de la sesión de dicho usuario. La duración máxima de una sesión es de 8 horas.
Por ejemplo, supongamos que su aplicación calcula la distancia desde la ubicación de un usuario a todos los clientes que dicho usuario desea visitar el mismo día. La ubicación y los cálculos de distancias pueden almacenarse en la caché de la sesión. De este modo, si el usuario desea recuperar nuevamente esta información, no será necesario volver a calcular las distancias. O bien, puede tener una aplicación permita a los usuarios personalizar el orden de su ficha de navegación y volver a utilizar dicho pedido en las visitas a otras páginas de la aplicación.
¿Qué incrementos de desempeño se obtienen al utilizar la caché?
Probablemente se esté preguntando cuál será el incremento de desempeño que tendrá su aplicación al utilizar la Caché de plataforma. Los datos se recuperan de la caché con mayor rapidez que mediante llamadas de API. Si compara SOQL con el tiempo de recuperación de la caché, la caché resulta mucho más rápida que las consultas SOQL.
El gráfico siguiente muestra los tiempos de recuperación de datos, en milisegundos, que se obtienen con llamadas de API y la caché. Es fácil percibir el increíble aumento de desempeño que se obtiene al recuperar datos de manera local mediante la caché, sobre todo cuando se recuperan datos en varias transacciones. En el ejemplo que se utilizó para el gráfico, la caché es hasta cien veces más rápida que las llamadas a API. En este gráfico, el tiempo de recuperación de la caché es de solo unos milisegundos, pero da la impresión de ser casi cero debido a la escala que se utiliza para el valor de tiempo. Tenga en cuenta que este gráfico es una prueba de ejemplo, por lo que las cifras reales pueden variar para otras aplicaciones.
Realizar llamadas de API a servicios externos es más lento (1) que obtener los datos de la caché (2).
El gráfico que se muestra a continuación compara SOQL con los tiempos de recuperación que ofrecen la caché de la sesión y la organización. Como puede observar, SOQL es más lento que la caché. En este ejemplo, la caché es hasta dos veces más rápida, o incluso más, que SOQL para recuperar datos en transacciones sencillas. Con recuperaciones de transacciones múltiples, la diferencia es aún mayor. (Tenga en cuenta que este gráfico es un ejemplo, por lo que las cifras reales pueden variar para otras aplicaciones).
La obtención de datos mediante consultas SOQL (1) es más lenta que la obtención de datos con la caché de la organización y la sesión (2).
¿Qué son las particiones de caché?
¿Recuerda cuando mencionamos antes que con la Caché de plataforma podía asignar espacio utilizando particiones? A continuación hablaremos de las particiones. Las particiones permiten asignar espacio de caché para lograr un equilibrio entre desempeño y utilización de las aplicaciones. El almacenamiento de datos en caché en particiones designadas garantiza que otras aplicaciones o datos de menor importancia no sobrescriban el espacio de la caché.
Antes de utilizar el espacio de caché en su organización, deberá crear particiones para definir la capacidad que desea para sus aplicaciones. La capacidad de cada partición se divide entre caché de la organización y caché de sesión. Las asignaciones de caché de sesión y organización pueden ser de 0 MB, 5 MB o superiores y deben ser números enteros. El tamaño mínimo de una partición, incluidas las asignaciones de caché de sesión y organización, es de 5 MB. Supongamos, por ejemplo, que su organización tiene un espacio de caché total de 10 MB y que creó una partición con un total de 5 MB, con 5 MB para la caché de sesión y 0 MB para la caché de la organización. Otra posibilidad sería crear una partición de 10 MB de espacio con 5 MB para la caché de la organización y 5 MB para la caché de la sesión. La suma de todas las particiones, incluida la partición predeterminada, es igual a la asignación total de la caché de plataforma.
La imagen siguiente muestra gráficos de la capacidad de la caché y de la asignación de la partición. En este ejemplo, aún no utilizamos la caché, tal como indica el 0% de utilización de la caché (1), y se crearon dos particiones con las mismas asignaciones (2).
Partición predeterminada
Es posible definir cualquier partición como partición predeterminada. Sin embargo, solo puede tener una partición predeterminada. La partición predeterminada permite utilizar sintaxis abreviada de Apex para realizar operaciones de caché en dicha partición. Esto significa que no tiene que cualificar completamente el nombre clave con el espacio de nombres y el nombre de la partición al agregar un par de clave-valor. Por ejemplo, en lugar de llamarlo Cache.Org.put('namespace.partition.key', 0); puede llamarlo Cache.Org.put('key', 0);
En la unidad siguiente, veremos cómo crear una partición en la Configuración para dar los primeros pasos en la utilización de la Caché de plataforma.
Recursos
Recursos de la Guía del desarrollador de Apex:
Recursos de Ayuda de Salesforce: