[ 
https://issues.apache.org/jira/browse/CASSANDRA-21642?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stefan Miklosovic updated CASSANDRA-21642:
------------------------------------------
    Description: 
In CASSANDRA-15379 we have introduced {{flush_compression}} configuration 
parameter into cassandra.yaml by which an operator can say what compression 
should be used upon flushing.

While this is indeed a valuable contribution, currently it is not possible to 
say that a particular table can be flushed with its table compressor while all 
the rest of tables can be flushed with fast / none. In other words, the current 
solution is global, applied to all tables, we can not be granular.

Also, currently it is driven by a configuration property in cassandra.yaml. 
That means that if we ever change our minds about how this should be 
configured, we have to change that property and restart whole cluster which is 
understandably not ideal.

The proposal is about the introduction of a CQL table parameter, 
{{flush_compression}} with values: auto, none, fast, table.

{{auto}} means that it will fallback to cassandra.yaml values. 

Example:

{code}
CREATE TABLE ks.tb WITH flush_compression = 'table' and compression = {'class': 
'ZstdCompressor' }
{code}

This means that table will be flushed with ZstdCompressor.

{code}
CREATE TABLE ks.tb WITH flush_compression = 'auto' and compression = {'class': 
'ZstdCompressor' }
{code}

This means that table will be flushed with whatever is in cassandra.yaml

{{auto}} is default hence copying the current behavior.

  was:
In CASSANDRA-15379 we have introduced {{flush_compression}} configuration 
parameter into cassandra.yaml by which an operator can say what compression 
should be used upon flushing.

While this is indeed a valuable contribution, currently it is not possible to 
say that a particular table can be flushed with its table compressor while all 
the rest of tables can be flushed with fast / none. In other words, the current 
solution is global, applied to all tables, we can not be granular.

The proposal is about the introduction of a CQL table parameter, 
{{flush_compression}} with values: auto, none, fast, table.

{{auto}} means that it will fallback to cassandra.yaml values. 

Example:

{code}
CREATE TABLE ks.tb WITH flush_compression = 'table' and compression = {'class': 
'ZstdCompressor' }
{code}

This means that table will be flushed with ZstdCompressor.

{code}
CREATE TABLE ks.tb WITH flush_compression = 'auto' and compression = {'class': 
'ZstdCompressor' }
{code}

This means that table will be flushed with whatever is in cassandra.yaml

{{auto}} is default hence copying the current behavior.


> Consider the introduction of flush_compression CQL table parameter
> ------------------------------------------------------------------
>
>                 Key: CASSANDRA-21642
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21642
>             Project: Apache Cassandra
>          Issue Type: New Feature
>          Components: Feature/Compression
>            Reporter: Stefan Miklosovic
>            Assignee: Stefan Miklosovic
>            Priority: Normal
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> In CASSANDRA-15379 we have introduced {{flush_compression}} configuration 
> parameter into cassandra.yaml by which an operator can say what compression 
> should be used upon flushing.
> While this is indeed a valuable contribution, currently it is not possible to 
> say that a particular table can be flushed with its table compressor while 
> all the rest of tables can be flushed with fast / none. In other words, the 
> current solution is global, applied to all tables, we can not be granular.
> Also, currently it is driven by a configuration property in cassandra.yaml. 
> That means that if we ever change our minds about how this should be 
> configured, we have to change that property and restart whole cluster which 
> is understandably not ideal.
> The proposal is about the introduction of a CQL table parameter, 
> {{flush_compression}} with values: auto, none, fast, table.
> {{auto}} means that it will fallback to cassandra.yaml values. 
> Example:
> {code}
> CREATE TABLE ks.tb WITH flush_compression = 'table' and compression = 
> {'class': 'ZstdCompressor' }
> {code}
> This means that table will be flushed with ZstdCompressor.
> {code}
> CREATE TABLE ks.tb WITH flush_compression = 'auto' and compression = 
> {'class': 'ZstdCompressor' }
> {code}
> This means that table will be flushed with whatever is in cassandra.yaml
> {{auto}} is default hence copying the current behavior.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to