mirror of https://github.com/apache/cassandra
Add stress profile yaml with LWT
Patch by Jay Zhuang; reviewed by Jon Haddad for CASSANDRA-7960
This commit is contained in:
parent
5dc79aafce
commit
335d8371a4
|
|
@ -1,4 +1,5 @@
|
|||
4.0
|
||||
* Add stress profile yaml with LWT (CASSANDRA-7960)
|
||||
* Reduce memory copies and object creations when acting on ByteBufs (CASSANDRA-13789)
|
||||
* simplify mx4j configuration (Cassandra-13578)
|
||||
* Fix trigger example on 4.0 (CASSANDRA-13796)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
# Based on https://gist.github.com/tjake/8995058fed11d9921e31
|
||||
### DML ###
|
||||
|
||||
# Keyspace Name
|
||||
keyspace: cqlstress_lwt_example
|
||||
|
||||
# The CQL for creating a keyspace (optional if it already exists)
|
||||
keyspace_definition: |
|
||||
CREATE KEYSPACE cqlstress_lwt_example WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
|
||||
|
||||
# Table name
|
||||
table: blogposts
|
||||
|
||||
# The CQL for creating a table you wish to stress (optional if it already exists)
|
||||
table_definition: |
|
||||
CREATE TABLE blogposts (
|
||||
domain text,
|
||||
published_date timeuuid,
|
||||
url text,
|
||||
author text,
|
||||
title text,
|
||||
body text,
|
||||
PRIMARY KEY(domain, published_date)
|
||||
) WITH CLUSTERING ORDER BY (published_date DESC)
|
||||
AND compaction = { 'class':'LeveledCompactionStrategy' }
|
||||
AND comment='A table to hold blog posts'
|
||||
|
||||
### Column Distribution Specifications ###
|
||||
|
||||
columnspec:
|
||||
- name: domain
|
||||
size: gaussian(5..100) #domain names are relatively short
|
||||
population: uniform(1..10M) #10M possible domains to pick from
|
||||
|
||||
- name: published_date
|
||||
cluster: fixed(1000) #under each domain we will have max 1000 posts
|
||||
|
||||
- name: url
|
||||
size: uniform(30..300)
|
||||
|
||||
- name: title #titles shouldn't go beyond 200 chars
|
||||
size: gaussian(10..200)
|
||||
|
||||
- name: author
|
||||
size: uniform(5..20) #author names should be short
|
||||
|
||||
- name: body
|
||||
size: gaussian(100..5000) #the body of the blog post can be long
|
||||
|
||||
### Batch Ratio Distribution Specifications ###
|
||||
|
||||
insert:
|
||||
partitions: fixed(1) # Our partition key is the domain so only insert one per batch
|
||||
|
||||
select: fixed(1)/1000 # We have 1000 posts per domain so 1/1000 will allow 1 post per batch
|
||||
|
||||
batchtype: UNLOGGED # Unlogged batches
|
||||
|
||||
condition: IF body = NULL # LWT: Do not override
|
||||
|
||||
|
||||
#
|
||||
# A list of queries you wish to run against the schema
|
||||
#
|
||||
queries:
|
||||
singlepost:
|
||||
cql: select * from blogposts where domain = ? LIMIT 1
|
||||
fields: samerow
|
||||
timeline:
|
||||
cql: select url, title, published_date from blogposts where domain = ? LIMIT 10
|
||||
fields: samerow
|
||||
|
|
@ -543,6 +543,11 @@ public class StressProfile implements Serializable
|
|||
|
||||
//Put PK predicates at the end
|
||||
sb.append(pred);
|
||||
if (insert.containsKey("condition"))
|
||||
{
|
||||
sb.append(" " + insert.get("condition"));
|
||||
insert.remove("condition");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -595,6 +600,8 @@ public class StressProfile implements Serializable
|
|||
String query = sb.toString();
|
||||
|
||||
insertStatement = client.prepare(query);
|
||||
System.out.println("Insert Statement:");
|
||||
System.out.println(" " + query);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue