Hi, I have a partitioned cache distributed on 5 nodes without replication nor persistence. This cache contains 5000 items (id: [passage-0...4999]) of type: public class SectiePassage implements Serializable { @QuerySqlField(index = true) public String id; @QuerySqlField public String sectieId; @QuerySqlField(index = true) public String passantId; /* afgeleidde, hoeft niet te worden bewaard */ private transient AffinityKey<String> key;
public SectiePassage(String id, String sectieId, String passantId) { this.id = id; this.sectieId = sectieId; this.passantId = passantId; } public SectiePassage() { } public AffinityKey<String> key() { if (key == null) key = new AffinityKey<>(id, sectieId); return key; } public String toString() { return this.getClass().getSimpleName() + "[" + id + "](" + key() + ")"; } } This entity is registered with my cache configuration when my client (mode=true) connects with the cluster using: setIndexedTypes(String.class,SectiePassage.class); When the client is connected and executes a SqlQuery: SqlQuery sql = new SqlQuery(SectiePassage.class,"id=?"); List<String> error = new ArrayList<>(); int found = 0; for(int i =0 ;i<5000;i++) { if (passageCache.query(sql.setArgs("passage-" + i)).getAll().size()==0) error.add("passage-" + i); else found++; } System.out.println(error.size() + " not found"); System.out.println(found + " found"); System.out.println(passageCache.size(CachePeekMode.ALL) + " total"); The results would be: 4033 not found 967 found 5000 total A) I expected 5000 found... B) Also I expected SqlQuery to perform better as a map-reduce looping through each and every item in the cache on each node locally (both take approx. equal amount of time) It seems SqlQuery only considers the data on the node my client is directly connected with (thus query is not mapped to the other nodes). What am I doing wrong here and is it normal the SqlQuery performance is not faster than a simple map-reduce? -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/