Search Group Data in Cache with SQL
Note
This feature is only available in NCache Enterprise.
NCache provides object queries through which you use criteria given in a query to search result sets. To retrieve the data according to your specified criteria, NCache provides you with an extension of SQL.
A special keyword $Group$
is used to specify that the condition under consideration uses group. A query with the searching criteria is executed using ExecuteReader
.
ExecuteReader
processes the query on the server side and then sends the result in chunks (as a dictionary containing keys and values) to the client in the tabular form to the ICacheReader
type of instance.
Prerequisites
- To learn about the standard prerequisites required to work with all NCache client-side features please refer to the given page on Client Side API Prerequisites.
- Custom classes/searchable attributes must be indexed as explained in Configuring Query Indexes.
- For API details refer to: ICache, ICacheReader, QueryCommand, ExecuteReader, SearchService.
Warning
If the searched group is not in the cache, the query will be returned as a Null
value.
Search for Data in Groups
You can also search for the cache items present in groups through SQL. The following program searches for Customer IDs present in a group through SQL query.
// A user wants to see all the West Coast Customers using the SQL query.
// Preconditions: Cache is already connected
// Items with groups exist in the cache
// Custom class is query indexed through the NCache Management Center or config.ncconf
// Create an SQL Query with the specified criteria
// Make sure to use the Fully Qualified Name (FQN)
string query = "SELECT CustomerID,ContactName FROM Alachisoft.NCache.Samples.Data.Customer WHERE $Group$ = ? ";
// Use QueryCommand for query execution
var queryCommand = new QueryCommand(query);
// Providing parameters for query
queryCommand.Parameters.Add("$Group$", "West Coast Customers");
// Executing the Query
ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand);
// Read results if result set is not empty
if (reader.FieldCount > 0)
{
while (reader.Read())
{
// Get the value of the result set
string customerID = reader.GetValue<string>("CustomerID");
string customerName = reader.GetValue<string>("ContactName");
Console.WriteLine($"Customer '{customerName}' having ID '{customerID}' belongs to West Coast.");
}
}
else
{
Console.WriteLine($"No customers from West Coast found");
}
Note
To ensure the operation is fail-safe, it is recommended to handle any potential exceptions within your application, as explained in Handling Failures.
Additional Resources
NCache provides sample application for Groups on GitHub.
See Also
Add/Update Cache Data with Groups
Retrieve Cache Data with Groups
Remove Cache Data with Group
Use Groups for Logical Data Grouping
Delete Group Data in Cache with SQL