Note, that as I think about it, if you had the new OnDiskAtom time with TTL and 
no value, then you wouldn’t need anything special about static columns, you’d 
just need a CQL syntax to update/set the TTL for a column which might be useful 
for lots of things.

On Jun 24, 2014, at 12:22 AM, graham sanderson <gra...@vast.com> wrote:

> So, I was thinking about a new use case, where an ideal situation would be to 
> have something like
> 
> CREATE TABLE series {
>       id uuid,
>       inserted timeuuid,
>       small_thing blob,
>       large_static_thing blob static,
>       PRIMARY KEY (id, inserted)
> }
> 
> So this is my first use of static columns, but I also want to use TTL (I just 
> built 2.0.8 to play with)
> 
> https://issues.apache.org/jira/browse/CASSANDRA-6782 and friends are pretty 
> confusing when it comes to TTL and the row marker, but from my playing, it 
> seems at least you can control behavior because you can (re) INSERT the 
> primary key values only using or not using a TTL. (Side node docs still say 
> UPDATE and INSERT are identical which is strictly no longer true)
> 
> So what I really want is the ability to do
> 
> INSERT INTO series (id, large_static_thing)
> 
> then repeated 
> 
> INSERT INTO series (id, inserted, small_thing) VALUE (a, b, c) USING TTL X;
> 
> and have the partition (and the static column) disappear when the last “row” 
> for the partition key is gone.
> 
> I can get this behavior if I update the large_static_thing every time along 
> with inserting small_thiing, but that is exactly what I don’t want to do 
> because it is large and static.
> 
> It sort of seems semantically right that "a special column that is shared by 
> all the rows of the same partition”  should at least have an option to have 
> it expire when all “rows” expire.
> 
> It seems like this would be technically feasible (though very much non 
> trivial) if you had a syntax, say “large_static_thing blob static 
> autoexpiring”, to make the static column an ExpiringColumn, and have any row 
> updates with TTL insert a new OnDiskAtom type (that contains a TTL but no 
> value) for the static column. These could be reconciled/reduced/compacted or 
> whatever with the ExpiringColumn during read and compaction.
> 
> It all sounds a bit over-complicated… so:
> 
> 1) Does this sounds like a useful feature, or is it a me only use case
> 2) Can someone think of a way to model this reasonably efficiently today 
> without using TTL on the static column (and thus having to rewrite it every 
> time) - not that I’m trying to be abusive and I haven’t thought this thru, 
> but my spider sense makes me think that maybe I can abuse an index on a small 
> expiring column to quickly find empty partition keys
> 3) Is it actually simpler to implement than I think in the code base (This is 
> the first time I’ve peeked at these areas of the code)
> 4) If implemented as I suggested above, does that have to be done in a major 
> version?
> 
> Thanks,
> 
> Graham
> 
> 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to