Hi

I'm very new with cassandra and I've created a schema like this

CREATE TABLE statistics.stats_count (
    id text,
    metric text,
    resolution text,
    time timestamp,
    value counter,
    PRIMARY KEY ((id, metric, resolution), time)
)

Below is an example of data.
This data basically just track a counter value of POST api call in 2
resolution (minute and hour) of a user


 id     | metric     | resolution | time                     | value
--------+------------+------------+--------------------------+--------
 user-1 |  POST-call |     minute | 2000-12-15 06:07:00+0100 |      1
 user-1 |  POST-call |     minute | 2000-12-15 06:08:00+0100 |      1
 user-1 |  POST-call |       hour | 2000-12-15 06:00:00+0100 |      2


This schema would make it easy for me to propagate a value to a higher
resolution.
everytime time i insert a minute data, i also insert a hour data on that
window.

I have a couple of requirement:

1. Each resolution have it's own TTL. minute for 1 week, hour for one month
2. I never updated counter outside of the TTL. I never update minute of
data that is more that 1 week ago,

I just found out that I can not set a ttl on a counter. I was planning to
do an insert followed by delete to clean up.
for example:
  * udate  id: user-1, metric: POST-call, resolution: minute, time: 2000-12-15
06:08:00+0100, value:  value + 1
  * delete id: user-1, metric: POST-call, resolution: minute, time: 2000-12-8
06:08:00+0100 (time is 1 week ago)

So my question is.

1. Is this a proper use of a counter
2. would the delete operation has impact on performance ?
3. Is it better if I don't use counter ? use an integer column type and use
the TTL ?

I would really appreciate some advice.

Thank you.




Ahmy Yulrizka
http://ahmy.yulrizka.com
@yulrizka

Reply via email to