I measure time of time: number of rows is 15 000, using JDBC in both cases. My case is such that ignite is cache of postgresql. Entire database is loaded to cache (ignitevisorcmd shown 15 000 rows in cache scan).
SELECT COUNT(*): 53ms.
SELECT *:290 ms
First of all, with Ignite you should make sure that all participating JVMs are warmed up and don't spent time on runtime byte code optimizations. Simply run the test case in a loop for some period of time (e.g., a minute) and only then start to take measurements. You will get much better results.
Second of all, I would recommend to test queries that are closer to what you're going to use in your application. With 'select *' and 'select count(*)' you will never get a clear picture which technology better fits your use case.
And finally, 15000 rows is a very little number and I doubt that you will get a visible improvement with Ignite. Ignite is a distributed system and allows you to scale large datasets across several nodes - this is the scenario when Ignite is much more powerful. On the other hand, Postgres already has its own in-memory caches and with such a small database there is a big chance that you never access disc at all.