Hi Eugene,

If we never use updates (time series data), is it safe to set
> gc_grace_seconds=0.


As Kurt pointed, you never want 'gc_grace_seconds' to be lower than
'max_hint_window_in_ms' as the min off these 2 values is used for hints
storage window size in Apache Cassandra.

Yet time series data with fixed TTLs allows a very efficient use of
Cassandra, specially when using Time Window Compaction Strategy (TWCS).
Funny fact is that Jeff brought it to Apache Cassandra :-). I would
definitely give it a try.

Here is a post from my colleague Alex that I believe could be useful in
your case: http://thelastpickle.com/blog/2016/12/08/TWCS-part1.html

Using TWCS and setting and lowering 'gc_grace_seconds' to the value of
'max_hint_window_in_ms' should be really effective. Make sure to use a
strong consistency level (generally RF = 3, CL.Read = CL.Write =
LOCAL_QUORUM) to prevent inconsistencies I would say (and depending on your
interest in consistency).

This way you could expire entires SSTables, without compaction. If overlaps
in SSTables become a problem, you could even consider to give a try to a
more aggressive SSTable expiration
https://issues.apache.org/jira/browse/CASSANDRA-13418.

C*heers,
-----------------------
Alain Rodriguez - @arodream - al...@thelastpickle.com
France / Spain

The Last Pickle - Apache Cassandra Consulting
http://www.thelastpickle.com



2017-10-05 23:44 GMT+01:00 kurt greaves <k...@instaclustr.com>:

> No it's never safe to set it to 0 as you'll disable hinted handoff for the
> table. If you are never doing updates and manual deletes and you always
> insert with a ttl you can get away with setting it to the hinted handoff
> period.
>
> On 6 Oct. 2017 1:28 am, "eugene miretsky" <eugene.miret...@gmail.com>
> wrote:
>
>> Thanks Jeff,
>>
>> Make sense.
>> If we never use updates (time series data), is it safe to set
>> gc_grace_seconds=0.
>>
>>
>>
>> On Wed, Oct 4, 2017 at 5:59 PM, Jeff Jirsa <jji...@gmail.com> wrote:
>>
>>>
>>> The TTL'd cell is treated as a tombstone. gc_grace_seconds applies to
>>> TTL'd cells, because even though the data is TTL'd, it may have been
>>> written on top of another live cell that wasn't ttl'd:
>>>
>>> Imagine a test table, simple key->value (k, v).
>>>
>>> INSERT INTO table(k,v) values(1,1);
>>> Kill 1 of the 3 nodes
>>> UPDATE table USING TTL 60 SET v=1 WHERE k=1 ;
>>> 60 seconds later, the live nodes will see that data as deleted, but when
>>> that dead node comes back to life, it needs to learn of the deletion.
>>>
>>>
>>>
>>> On Wed, Oct 4, 2017 at 2:05 PM, eugene miretsky <
>>> eugene.miret...@gmail.com> wrote:
>>>
>>>> Hello,
>>>>
>>>> The following link says that TTLs generate tombstones -
>>>> https://docs.datastax.com/en/cql/3.3/cql/cql_using/useExpire.html.
>>>>
>>>> What exactly is the process that converts the TTL into a tombstone?
>>>>
>>>>    1. Is an actual new tombstone cell created when the TTL expires?
>>>>    2. Or, is the TTLed cell treated as a tombstone?
>>>>
>>>>
>>>> Also, does gc_grace_period have an effect on TTLed cells?
>>>> gc_grace_period is meant to protect from deleted data re-appearing if the
>>>> tombstone is compacted away before all nodes have reached a consistent
>>>> state. However, since the ttl is stored in the cell (in liveness_info),
>>>> there is no way for the cell to re-appear (the ttl will still be there)
>>>>
>>>> Cheers,
>>>> Eugene
>>>>
>>>>
>>>
>>

Reply via email to