Hoy en día, la memoria caché distribuida se usa ampliamente para lograr escalabilidad y rendimiento en aplicaciones de alto tráfico. El caché distribuido descarga sus servidores de base de datos al servir datos almacenados en caché desde el almacén en memoria. Además, algunas cachés distribuidas también le brindan una capacidad de consulta similar a SQL, que puede consultar fácilmente su caché distribuida de la misma manera que consulta su base de datos, es decir “SELECT employee WHERE employee.city=‘New York’”
En primer lugar, la mayoría de los cachés distribuidos ni siquiera proporcionan Capacidades de consulta similares a SQL. Incluso algunos que proporcionan esto tienen un apoyo muy limitado. Solo proporcionan búsquedas de caché distribuida basadas en criterios simples. Considerando que hay varios escenarios en los que debe encontrar el resultado en función de funciones agregadas, es decir “SELECT COUNT(employee) WHERE salary > 1000”
or “SELECT SUM(salary) WHERE employee.city = ‘New York’”
. Para lograr esto, primero debe consultar el caché distribuido y luego calcular la función agregada en los datos de caché obtenidos.
NCache Detalles NCache Docs Consulta SQL en NCache Docs
¿Por qué utilizar NCache para consultar la memoria caché distribuida mediante funciones agregadas
Este enfoque tiene dos inconvenientes importantes. Primero, debe ejecutar la consulta en la memoria caché distribuida, lo que implica obtener todos los datos de la memoria caché distribuida al cliente de memoria caché. Estos datos pueden variar de MBs a GBs, y esta operación se encarece cuando además se paga por el ancho de banda de red consumido. Además, la mayoría de las veces no necesita estos datos una vez que haya terminado con los cálculos de la función agregada.
El segundo inconveniente es que implica una programación personalizada para el cálculo de funciones agregadas. Esto agrega horas de trabajo adicionales y aún así la mayoría de los escenarios complejos no se pueden cubrir. Sería mucho mejor si pudiera continuar desarrollando la aplicación con el propósito de que se está construyendo y no preocuparse por diseñar e implementar estas funciones adicionales usted mismo.
Estas son las razones por las cuales NCache le brinda la flexibilidad de consultar la memoria caché distribuida utilizando funciones agregadas como COUNT, SUM, MIN, MAX y AVG como parte de su lenguaje de consulta de objetos (OQL). Utilizando NCache Funciones agregadas de OQL, puede realizar fácilmente los cálculos agregados requeridos dentro del dominio de caché distribuida. Este enfoque no solo evita el tráfico de red, sino que también proporciona un rendimiento mucho mejor en términos de cálculo de funciones agregadas. Esto se debe a que todas las selecciones y cálculos se realizan dentro del dominio de caché distribuida y no se involucran viajes de red.
Aquí está el ejemplo de código para buscar NCache usando consultas agregadas OQL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public void Main(string[] args) { ... NCache.InitializeCache("myPartitionReplicaCache"); String query = "SELECT COUNT(Business.Product) WHERE this.ProductID > ? AND this.Price < ?"; Hashtable param = new Hashtable(); param.Add("ProductID", 100); param.Add("Price", 50); // Fetch the cache items matching this search criteria IDictionary searchResults = _cache.SearchEntries(query, values); ... } |
Para un tiempo de ejecución de consulta más reducido, NCache ejecuta la consulta similar a SQL en paralelo distribuyéndola a todos los servidores de caché al igual que el mecanismo de reducción de mapa. Además, puede utilizar NCache Consultas agregadas OQL en aplicaciones .NET y Java.
¡Conclusión!
En resumen, NCache le brinda no solo la escalabilidad y el rendimiento, sino también la flexibilidad de buscar en la memoria caché distribuida utilizando una función agregada similar a SQL.