Hi,

I made a speed comparison of retrieving data from Apache Ignite using
several methods. All records are in one table, I did not use any WHERE
condition, only a SELECT * FROM TABLE XYZ LIMIT 20000.

Test results are:
Apache Ignite

   - Apache Ignite REST API - 0.52 seconds
   - JDBC - 4 seconds
   - Python pyignite - 40 seconds !!!

pseudocode in Python using pyignite:

client = Client(username="ignite", password="pass", use_ssl=False)
client.connect('localhost', 10800)

cursor=client.sql('SELECT * FROM TABLE_XYZ LIMIT 20000')for row in cursor:
    pass

After that I made a speed comparison of retrieving data from PostgreSQL
using JDBC and psycopg2 Python package. SQL select is same, SELECT * FROM
TABLE XYZ LIMIT 20000
PostgreSQL

   - JDBC - 3 seconds
   - Python psycopg2 using fetchall - 3 seconds
   - Python psycopg2 using fetchone - 4 seconds

pseudocode in Python using psycopg2:

import psycopg2

conn = psycopg2.connect(database=DB_NAME,
            user=DB_USER,
            password=DB_PASS,
            host=DB_HOST,
            port=DB_PORT)

cur = conn.cursor()
cur.execute("SELECT * FROM TABLE_XYZ LIMIT 20000")
rows = cur.fetchall()for data in rows:
    pass

I can conclude that the pyignite implementation has much worse performance
compared to psycopg2 tests. The performance difference on PostgreSQL
between Java JDBC and Python psycopg2 is negligible.

The performance difference on Apache Ignite between Java JDBC and Python
pyignite is very big.

Please if someone can comment on the tests, did I do something wrong or are
these results expected? How can such large differences in execution times
be explained? Do you have any suggestions to get better results using
pyignite?

Thank you

Reply via email to