Thank you for the response. I modify RF just to see what is the effect on the performance, there is no data in the datastore when I change its value. But I see my mistake and will definitely change it like you mentioned.
Reading will not be used that much, we will mostly write into the datastore. And the batching needs some work so the numbers will change, sorry about that.
Just wanted to see what is this “linear scalability”, because when I do the reading operation as well I don’t see the scaling. So is the scaling based on only writing into datastore?
My main question for everybody probably is: Do these numbers seem reasonable to you?
I quickly went through the code and noticed that you are updating RF from code and expecting that Cassandra would automatically distribute replicas as per the new RF. I think this is not how it works. After updating the RF, you need to run repair on all the nodes to make sure that data replicas are as per the new RF. Please refer to https://docs.datastax.com/en/cql/3.1/cql/cql_using/update_ks_rf_t.html . This would give you reliable results.
It would be good if you explain the exact purpose of your exercise. Tests seem more in academic interest. You are adding several variables in your tests but each of these params have entirely different purpose:
1. Batch/No Batch depends on business atomicity needs.
2. Read/ No read is dependent on business requirement
3. RF depends on fault tolerance needed