Paging Support
In some scenarios there's a need to return a collection of entries from the space. This is usually carried out using one of the readMultiple overloads in GigaSpace
. However, if there are lots of matching entries, you may encounter several problems:
- Memory usage - Both the server and client need to allocate enough memory for the entire result set.
- Latency - Since all the results are returned in one bulk, the client must wait until the final result arrives before it can process the first one.
A better approach is to create an iterator that iterates over the matching entries one at a time. Under the hood, the server returns results in batches, and when the client's buffer is exhausted the next batch is implicitly returned from the server.
This page describes the new space iterator, which replaced the GSIterator
starting in XAP version 10.2. Information about the GSIterator is available here.
Usage
Use the GetSpaceIterator(template)
to create the iterator. Example:
// Find and print all persons who are older than 21:
foreach (var person in spaceProxy.GetSpaceIterator<Person>(new SqlQuery<Person>("Age > 21")))
{
Console.WriteLine("Id: " + person.Id + ", Age: " + person.Age);
}
Transactions
Iterating through the matched set does not lock the object. Objects that are under transaction and match the specified template will not be included as part of the matched set.
Limitations
The space iterator only supports simple SQL queries.
For more information about the differences between simple and complex queries, see the Simple vs. Complex Queries explanation on the SQL Query page.