Thanks Denis for confirming the benchmarks are real. 

I am using the latest ignite version i.e. 2.6.7.

I tried with Atomic as well, don't see much variation. Marginal changes. So
currently, in my test,

I am using
<ignite>/examples/config/persistentstore/example-persistent-store.xml, with
persistence disabled.
And starting my 3 server nodes simply via <ignite>/bin/ignite.sh
example-persistent-store.xml

Client uses the same config xml.

As for threads sharing the same key, no that is not a possibility. My daemon
thread iterates over all keys in a loop and every key is handed over to a
threadpool executor. So no 2 threads would get the same key.

For now, i am keeping Cassandra aside. Since my first goal is to atleast see
comparable performance numbers for "get", which is the primary reason to
evaluate Ignite.

After my initial tests, i had run perf test to check the network throughput
between the 2 boxes, and it was around 1GB/s.

So now as part of my next test, i am going to try moving my client to the
same box as the server, getting network related issue out of play and see if
it scales. Additionally try adding the applicable jvm properties you
suggested.

With this, the 2 primary reasons for performance dependencies are out,
network and disk. Everything should be in memory and on the same box.

I am not allocating any heap, and since this is primarily a 'get' as against
'query' test, we should be ok, i suppose. But let me know if heap allocation
is needed. The benchmark test did not mention that.

Lastly, here is the basic client code i am using,

// ======== configuration
Ignition.setClientMode(true);
                
ignite = Ignition.start("/home/example-persistent-store.xml");
ignite.cluster().active(true);
                
CacheConfiguration<String, BinaryObject> cacheConfig = new
CacheConfiguration<>("empCache");
cacheConfig.setAtomicityMode(CacheAtomicityMode.ATOMIC);
cacheConfig.setBackups(1);
cacheConfig.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_ASYNC);
cacheConfig.setIndexedTypes(String.class, BinaryObject.class);
cacheConfig.setSqlSchema("PUBLIC");
cacheConfig.setStatisticsEnabled(true);
                
QueryEntity queryEntity = new QueryEntity();
queryEntity.setValueType("employee");
queryEntity.setKeyType(String.class.getName());
            
LinkedHashMap<String, String> fields = new LinkedHashMap<>();
fields.put(Employee.FIELD_ID, String.class.getName());
fields.put(Employee.FIELD_NAME, String.class.getName());
fields.put(Employee.FIELD_DESIGNATION, String.class.getName());
fields.put(Employee.FIELD_EXPERIENCE, Integer.class.getName());
fields.put(Employee.FIELD_PHONE, Long.class.getName());
fields.put(Employee.FIELD_ISPERMANANT, Boolean.class.getName());
fields.put(Employee.FIELD_DEPARTMENTS, byte[].class.getName());
fields.put(Employee.FIELD_JOININGDATE, Timestamp.class.getName());
fields.put(Employee.FIELD_SALARY, Double.class.getName());

queryEntity.setFields(fields);
queryEntity.setIndexes(Arrays.asList(
        new QueryIndex(Employee.FIELD_ID),
        new QueryIndex(Employee.FIELD_NAME),
        new QueryIndex(Employee.FIELD_DESIGNATION),
        new QueryIndex(Employee.FIELD_EXPERIENCE),
        new QueryIndex(Employee.FIELD_PHONE),
        new QueryIndex(Employee.FIELD_JOININGDATE),
        new QueryIndex(Employee.FIELD_SALARY)
));
            
cacheConfig.setQueryEntities(Arrays.asList(queryEntity));
empCache = ignite.getOrCreateCache(cacheConfig).withKeepBinary();

//=====================
// Get
public Employee get(UUID id) throws Exception {
        BinaryObject empBinary = empCache.get(id.toString());
        if (empBinary == null) System.out.println("Employee not found for Id[" +
id.toString() + "]");
        return retrieveEmployee(empBinary);
}



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to