Hi, I have below sample bean which I am storing as value in cache. I want to build a map such that it gives me count of trade status for each trade type(Pls see sample output, done thru java 8 streams). Problem with this approach is I have to pull millions of entries from cache to some collection and manipulate them.
Is there a way to query cache using SQL/ScanQueries to build same map in more efficient way. Below is my sample code to explain the problem. public class TradeCacheExample { public static void main(String[] args) { Trade trade1 = new Trade(1, TradeStatus.NEW, "type1"); Trade trade2 = new Trade(2, TradeStatus.FAILED, "type2"); Trade trade3 = new Trade(3, TradeStatus.NEW, "type1"); Trade trade4 = new Trade(4, TradeStatus.NEW, "type3"); Trade trade5 = new Trade(5, TradeStatus.CHANGED, "type2"); Trade trade6 = new Trade(6, TradeStatus.EXPIRED, "type1"); Ignite ignite = Ignition.start("examples/config/example-ignite.xml"); CacheConfiguration<Integer, Trade> config = new CacheConfiguration<>("mycache"); config.setIndexedTypes(Integer.class, Trade.class); IgniteCache<Integer, Trade> cache = ignite.getOrCreateCache(config); cache.put(trade1.getId(), trade1); cache.put(trade2.getId(), trade2); cache.put(trade3.getId(), trade3); cache.put(trade4.getId(), trade4); cache.put(trade5.getId(), trade5); cache.put(trade6.getId(), trade6); List<Trade> trades = cache.query(new ScanQuery<Integer, Trade>()).getAll().stream().map(item->item.getValue()).collect(toList()); Map<String, Map<TradeStatus, Long>> resultMap = trades.stream().collect( groupingBy(item -> item.getTradeType(), groupingBy(Trade::getStatus, counting()))); System.out.println(resultMap); //{type3={NEW=1}, type2={CHANGED=1, FAILED=1}, type1={EXPIRED=1, NEW=2}} } } public class Trade { private int id; private TradeStatus status; private String tradeType; public Trade(int id, TradeStatus status, String tradeType) { this.id = id; this.status = status; this.tradeType = tradeType; } //setter getter, equals, hashcode methods public enum TradeStatus { NEW, CHANGED, EXPIRED, FAILED, UNCHANGED } -- View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Building-complex-queries-to-query-ignite-Cache-tp9392.html Sent from the Apache Ignite Users mailing list archive at Nabble.com.