En escenarios complejos de la vida real, su aplicación a menudo necesita obtener datos basados en atributos particulares en lugar de buscar a través de la clave principal. Consultar sus datos usando SQL le facilita la recuperación de datos de su base de datos según su lógica personalizada en tiempo de ejecución.
NCache admite un mecanismo de consulta SQL que le permite buscar en su caché de acuerdo con un criterio determinado y devolver el conjunto de resultados requerido. NCache utiliza un lenguaje de consulta muy parecido al lenguaje estructurado de SQL nativo, lo que facilita la consulta de los datos indexados en caché.
NCache utiliza una interfaz de consulta similar a la interfaz ADO.NET para admitir varios métodos de consulta para buscar o eliminar datos de la memoria caché. Estos son algunos de los métodos de consulta más importantes admitidos en NCache.
string query = "SELECT * FROM FQN.Product WHERE ProductID > ?";
var queryCommand = new QueryCommand(query);
queryCommand.Parameters.Add("ProductID",50000);
ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand, false, 0);
if (reader.FieldCount > 0)
{
while (reader.Read())
{
string result = reader.GetValue<string>(0);
}
}
String query = "SELECT * FROM FQN.Product WHERE ProductID > ?";
QueryCommand queryCommand = new QueryCommand(query);
HashMap<String, Object> parameters = new HashMap<>();
parameters.put("ProductID", 50000);
queryCommand.getParameters().putAll(parameters);
CacheReader cacheReader = cache.getSearchService().executeReader(queryCommand);
if (cacheReader.getFieldCount() > 0) {
while (cacheReader.read()) {
cacheReader.getString(0);
}
NCache le permite especificar columnas para proyectar en su consulta SQL. A continuación se mencionan las proyecciones básicas y más comúnmente utilizadas admitidas en NCache.
SELECT COUNT(*) FROM FQN.Product WHERE UnitsInStock > ?
Consulte Búsqueda SQL de objetos para obtener más información.
Estos operadores se utilizan y reutilizan en toda la base de datos SQL para procesar y manipular datos. NCache admite varios operadores SQL que le permiten obtener el resultado deseado de manera eficiente. Estas funciones son:
string query = "SELECT OrderID FROM FQN.Order WHERE OrderDate = ?";
var queryCommand = new QueryCommand(query);
DateTime orderDate = new DateTime(2022, 01, 01);
queryCommand.Parameters.Add("OrderDate", orderDate);
ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand);
if (reader.FieldCount > 0)
{
while (reader.Read())
{
int orderID = reader.GetValue<int>("OrderID");
Console.WriteLine($"Order: {orderID} was placed on 1st January, 2022.");
}
}
else
{
Console.WriteLine($"No orders were placed on 1st January 2022.");
}
String query = "SELECT OrderID FROM FQN.Order WHERE OrderDate = ?";
QueryCommand queryCommand = new QueryCommand(query);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date orderDate;
orderDate = sdf.parse("2022-01-01");
HashMap<String, Object> parameters = new HashMap<>();
parameters.put("OrderDate", orderDate);
queryCommand.getParameters().putAll(parameters);
CacheReader cacheReader = cache.getSearchService().executeReader(queryCommand);
if (cacheReader.getFieldCount() > 0) {
while (cacheReader.read()) {
int orderID = cacheReader.getInt(cacheReader.getOrdinal("OrderID"));
System.out.println("Order: " + orderID + " was placed on 1st January, 2022.");
}
} else {
System.out.println("No orders were placed on 1st January 2022.");
}
Los operadores de SQL son palabras clave reservadas en la cláusula WHERE para realizar operaciones lógicas y de comparación. NCache le brinda el soporte de los siguientes operadores SQL para consultar sus datos de acuerdo con condiciones personalizadas.
SELECT ProductName, UnitsAvailable From FQN.Product WHERE Category IN ('Beverages', 'Confections')