[
https://issues.apache.org/jira/browse/CASSANDRA-9420?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14554386#comment-14554386
]
Matt Stump commented on CASSANDRA-9420:
---------------------------------------
Yes it is extremely common for customers to have an append only data model.
Sometimes the access pattern has a uniform TTL, but some customers will have
different TTLs because they use retention period to distinguish between
different levels of service or plans for a multi-tenant environment. To deal
with this we have multiple CFs, one per data retention period. This isn't ideal.
I would be very much in favor of a feature that allows the avoidance of
tombstone creation by telling C* about the access patterns. Tombstones are the
achilles heel of TTLs.
> Table option for promising that you will never touch a column twice
> -------------------------------------------------------------------
>
> Key: CASSANDRA-9420
> URL: https://issues.apache.org/jira/browse/CASSANDRA-9420
> Project: Cassandra
> Issue Type: New Feature
> Reporter: Björn Hegerfors
>
> There are time series use cases where you write all values with various TTLs,
> have GC grace = 0 and never ever update or delete a column after insertion.
> In the case where all TTLs are the same, DTCS with recent patches works
> great. But when there is lots of variations in TTLs, you are forced to choose
> between splitting your table into multiple TTL tiers or having your SSTables
> filled to the majority with tombstones. Or running frequent major compactions.
> The problem stems from the fact that Cassandra plays safe when a TTL has
> expired, and turns it into a tombstone, rather than getting rid of it on the
> spot. The reason is that this TTL _may_ have been in a column which has had
> an earlier write without (or with a higher) TTL. And then that one should now
> be deleted too.
> I propose that there should be table level setting to say "I guarantee that
> there will never be any updates to any columns". The effect of enabling that
> option is that all tombstones and expired TTLs should always be immediately
> removed during compaction. And the check for dropping entirely expired
> SSTables can be very loosened for these tables.
> This option should probably require gc_grace_seconds to be set to zero. It's
> also questionable if writes without TTL should be allowed to such a table,
> since those would become constants.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)