Todos nos encontramos con situaciones en las que tenemos que esperar una eternidad para obtener una respuesta de la base de datos a cambio de las consultas generadas en el servidor de aplicaciones. Para las aplicaciones críticas para el negocio, la latencia y el retraso en la respuesta son intolerables. Aquí es donde surge la necesidad de una solución de almacenamiento en caché optimizada.
Si bien los cachés se asocian comúnmente con almacenes de clave-valor, NCache va un paso más allá al permitirle consultar datos sobre atributos no clave de sus objetos. Esto significa que puede acceder a los datos en función de una amplia gama de propiedades más allá de las claves. Este enfoque proporciona una mayor flexibilidad y eficiencia para la recuperación de datos, lo que facilita el análisis y la gestión de sus datos.
Con el tiempo, los datos en la memoria caché crecen, por lo que necesita tales capacidades en las memorias caché, donde puede generar consultas para un rendimiento de búsqueda y recuperación más rápido. NCache le permite consultar sus datos de manera eficiente cuando está buscando.
Cómo NCache optimiza el rendimiento de búsqueda y recuperación?
NCache optimiza su rendimiento de búsqueda y recuperación a través de la indexación, las proyecciones, el tamaño de los fragmentos y la memoria caché del cliente. Al almacenar en caché los resultados de las consultas en la memoria, la capacidad de respuesta de las solicitudes mejora significativamente. Dado que muchas consultas se atienden directamente desde la memoria caché, se guardan viajes adicionales a la base de datos. NCache utiliza múltiples formas de aumentar el rendimiento de búsqueda y recuperación, como se explica a continuación.
1. Crear índices estratégicamente
Para una búsqueda de datos eficiente basada en consultas, NCache requiere la creación de índices de búsqueda. A diferencia de las bases de datos tradicionales, que pueden ser lentas sin índices y realizar búsquedas completas en la tienda para encontrar datos, NCache prioriza el rendimiento, haciendo obligatoria la creación de índices. Al crear índices, NCache puede determinar el tipo de datos y el formato de almacenamiento que mejor se adapte a sus necesidades de búsqueda, asegurando que las búsquedas sean rápidas y eficientes
Sin embargo, NCache usos indexación ya que es un enfoque orientado al rendimiento, pero la indexación de los atributos para una búsqueda debe realizarse con mucho cuidado, ya que requiere espacio para retener un índice, y la indexación de atributos innecesarios puede generar una sobrecarga de memoria y rendimiento.
NCache proporciona dos formas de definir índices.
• Índice predefinido (Índice estático)
• Índice de tiempo de ejecución (Índice dinámico)
2. Usa las proyecciones de manera inteligente
Cuando se trata de consultas, proyecciones puede mejorar significativamente el rendimiento de su aplicación. En base a su consulta, NCache le permite recuperar todas las características indexadas de una clase o proyecciones particulares del almacén de caché.
Usar NCache, puede especificar las columnas de su elección para que se proyecten en su consulta para realizar la búsqueda de manera más eficiente. Además de las proyecciones de columnas específicas, también puede recuperar varias proyecciones. A continuación se menciona un ejemplo que proyecta $GROUP$
y $Value$
en una sola consulta.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
string query = "SELECT $Value$, $Group$ FROM FQN.Product WHERE Productid > ?"; // Providing parameters for query queryCommand.Parameters.Add("ProductID",50000); // Check if the result set is not empty if (reader.FieldCount > 0) { while (reader. Read()) { Product value = reader.GetValue(1); string group Name = reader.GetValue(2); // Perform operations } } else { // Null query result set retrieved } |
De forma predeterminada, si no especifica las proyecciones, el objeto completo junto con las características indexadas viajan del servidor al cliente a pedido; será más lento que los datos selectivos. A continuación se menciona un ejemplo que recupera todos los campos relacionados con la clase Producto del caché a través del *
operador.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
string query = "SELECT * FROM FQN.Product WHERE ProductID > ?"; // Providing parameters for query queryCommand.Parameters.Add("ProductID",50000); // Check if the result set is not empty if (reader.FieldCount > 0) { while (reader.Read()) { string result = reader.GetValue("ProductID"); // Perform operations } } else { // Null query result set retrieved } |
Es importante notar que al usar proyecciones, NCache reduce el trabajo adicional de recuperar todas las características indexadas del objeto y solo recupera las columnas deseadas. NCache ayuda a los usuarios a mejorar el rendimiento de esta manera al facilitar una mejor sintaxis de consulta.
3. Tamaño de fragmento / Obtener datos en fragmentos
NCache ofrece otra característica para la optimización de consultas llamada Chunk Size. Después de ejecutar una consulta de búsqueda, la aplicación recibe paquetes de datos/clave en fragmentos, donde cada fragmento representa un tamaño específico de paquetes de datos/clave. Hay varias formas de consultar datos, ya sea que desee consultar solo las claves o elementos selectivos, o un conjunto completo de propiedades de un objeto, denominado conjunto de datos.
Cuanto mayor sea el conjunto de resultados, más lento será obtener en respuesta a la consulta generada. Por lo tanto, el cliente que consume los datos en lugar de obtener todo el conjunto de resultados a la vez, consume los datos en fragmentos del servidor uno por uno. NCache de forma predeterminada, trae los datos en fragmentos más pequeños desde el servidor al lado del cliente, fusiona los fragmentos de datos y proporciona los datos a la aplicación.
El valor predeterminado de un tamaño de fragmento es 512 KB, pero los usuarios pueden configurar tamaño de porción en función de sus requisitos, mientras ejecuta el lector para realizar una búsqueda en el caché en función de la consulta especificada. Dado que los datos viajan en forma de fragmentos a través de la red, esto mejora el rendimiento de la búsqueda y recuperación de datos.
4. Uso de la caché del cliente
NCache tiene una característica versátil llamada caché de cliente (caché L1). L1 es un subconjunto de la memoria caché principal que reside más cerca de la aplicación que se puede En proceso y, OutProc. Dado que es un subconjunto de la caché principal (caché L2), las consultas no se ejecutan con la caché L1. Solo las operaciones basadas en claves, como add
, get
o getbulk
Las operaciones se ejecutan buscando claves en la memoria caché L1 primero y obtienen las claves faltantes de la memoria caché L2, se fusionan y sirven.
La caché L2 contiene datos completos, por lo que las consultas y operaciones realizadas por las etiquetas siempre se ejecutan en ella. En lugar de ejecutar una consulta para recuperar todos los datos de la caché L2, el usuario puede obtener claves solo de la caché L2. Y luego use la obtención masiva para recuperar esas claves de la caché L1. Si falta algún dato, se servirá desde la memoria caché L2. Las operaciones de lectura/escritura realizadas con frecuencia se almacenan en la memoria caché del cliente, lo que da como resultado tiempos de recuperación más rápidos para solicitudes posteriores de los mismos datos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Executing query to fetch keys only ICacheReader reader = _cache.SearchService.ExecuteReader(queryCommand, false); // Check if the result set is not empty if (reader.FieldCount > 0) { while (reader.Read()) { //Populate Keys List keys.Add(reader.GetValue(0)); } } //Get Data using Bulk API. IDictionary<string, Product> productsList = _cache.GetBulk(keys); //If the number of keys is very large, you can break the list into multiple chunks and then do GetBulk for each chunk separately. |
NCache proporciona una aplicación de muestra para obtener datos de manera eficiente desde Client Cache en GitHub.
Conclusión
En este blog, cubrimos las múltiples formas en que NCache utiliza para mejorar la búsqueda de consultas y el rendimiento de recuperación de datos. NCache no solo aumenta el rendimiento de la aplicación, sino que también garantiza una alta disponibilidad y escalabilidad para satisfacer la carga de los usuarios. Así que sin más espera Descargar NCache ¡ahora y comience su prueba gratuita de 60 días!