I have the following design for a system which holds basically key->value pairs (aka Columns) for each user (SuperColumn Key) in different namespaces (SuperColumnFamily row key).
Namesapce->user->column_name = column_value;
- name: NKVP
- name: Namespaces
Cluster using random partitioner.
I use multiget_slice() for fetching 1 or many columns inside the child supercolumn at the same time. This is an awkward performance result I get:
100 sequential reads completed in : 0.383 this uses multiget_slice() with 1 key, and 1 column name inside the predicate->column_names
100 batch loaded completed in : 0.786 this uses multiget_slice() with 1 key, and multiple column names inside the predicate->column_names
read/write consistency are ONE.
Why doing 100 sequential reads is faster than doing 100 in batch?
Is this a good design for my problem?
Does my issue relate to https://issues.apache.org/jira/browse/CASSANDRA-598?
Now on a single node with replication factor 1 I get this:
100 sequential reads completed in : 0.438
100 batch loaded completed in : 0.800
Please advice as to why is this happening?
These nodes are VMs. 1 CPU and 1 Gb.