Compare and Contrast Datastax java drivers for CQL with Astyanax thrift support for java.
#Moving on from Astyanax to Datastax:
This is the description of the tests performed to monitor the performance of both Datastax Java-Driver and Astyanax Driver for Cassandra so as to make a decision regarding replacing the current Astyanax Driver used by Blueflood with Datastax Driver.
#Environment Setup:
• Compute Machines:
Four Rackspace’s On-metal Compute machines with the following configuration:
CPU
2.8 Ghz, 10 core Intel® Xeon® E5-2680 v2
RAM
32 GB
System Disk
32 GB
Network
Redundant 10 Gb / s connections in a high availability bond
Each for Read using Astyanax, Read using Datastax, Write using Astyanax, Write using Datastax
• Cassandra Cluster:
Cassandra (Version 2.0) cluster with six nodes and one seed node was spun using Rackspace’s Cassandra Orchestration stack.
Each node with following configuration:
CPU
8 vCPUs
RAM
30 GB
System Disk
1.2 TB
Network
1.2 Gb / s
• Keyspace and Table:
CREATE KEYSPACE "DATA" WITH replication = {
'class': 'SimpleStrategy',
'replication_factor': '3'
};
use "DATA";
CREATE TABLE metrics_full (
key text,
column1 bigint,
value blob,
PRIMARY KEY ((key), column1)
) WITH COMPACT STORAGE AND
bloom_filter_fp_chance=0.010000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.100000 AND
gc_grace_seconds=864000 AND
index_interval=128 AND
read_repair_chance=0.000000 AND
replicate_on_write='true' AND
populate_io_cache_on_flush='false' AND
default_time_to_live=0 AND
speculative_retry='NONE' AND
memtable_flush_period_in_ms=0 AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'LZ4Compressor'};
• Graphite:
Graphite was used as a time-series database to store the metrics generated during the test.
• Grafana: To monitor the metrics using nice Graphs.
#Running the program using maven:
Clone the Repo.
mvn clean install
mvn exec:java -Dexec.args="'astyanax' 'read'" (For Read Operations using Astyanax Drivers).
mvn exec:java -Dexec.args="'datastax' 'read'" (For Read Operations using Datastax Drivers).
mvn exec:java -Dexec.args="'astyanax' 'write'" (For Write Operations using Astyanax Drivers).
mvn exec:java -Dexec.args="'datastax' 'write'" (For Write Operations using Datastax Drivers).
#Results:
##Batch Writes:
• Batch Size 20:
###Datastax Leading

• Batch Size 15:
###Datastax ~= Astyanax

• Batch Size 10:
###Astyanax Leading

• Batch Size 5:
###Astyanax Leading

##Single Writes using prepared statement (without using batches):
###Datastax Leading
