[ 
https://issues.apache.org/jira/browse/CASSANDRA-18441?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17717012#comment-17717012
 ] 

Jacek Lewandowski edited comment on CASSANDRA-18441 at 4/27/23 7:31 AM:
------------------------------------------------------------------------

I'm sorry for going through it again, but I'd put the selected write format on 
a parent level, that is, if translated into properties, it could look like this:

{noformat}
sstable.selected_format=big
sstable.format.big.max_version=nc
sstable.format.big.opt1=value1
{noformat}

The reason I don't want to do this:
{noformat}
sstable.format.default=big
sstable.format.big.write_version_limit=nc
sstable.format.big.opt1=value1
{noformat}
 
is that, I'd have to actually use {{Map<String, Object>}} on the 
{{sstable.format}} level (at least I don't know how to do that differently)

And, since we want to have some consistency around properties, this 
{{sstable.format.<which format>.<option>=<sth>}} speaks to me more than 
{{sstable.format.options.<which format>.<option>=<sth>}}

In summary, selected format is not a property of any format, IMO it better fits 
to sstable level.

Regarding target version and format - I agree it will be probably modified with 
the downgradability ticket, thus those fields will be completely optional. I 
like the idea of having Cassandra version --> format/version mapping. I've 
changed the name of the write version to "max_version" so that it expresses 
more adequately what that parameter means.


was (Author: jlewandowski):
I'm sorry for going through it again, but I'd put the selected write format on 
a parent level, that is, if translated into properties, it could look like this:

{noformat}
sstable.selected_format=big
sstable.format.big.write_version_limit=nc
sstable.format.big.opt1=value1
{noformat}

The reason I don't want to do this:
{noformat}
sstable.format.default=big
sstable.format.big.write_version_limit=nc
sstable.format.big.opt1=value1
{noformat}
 
is that, I'd have to actually use {{Map<String, Object>}} on the 
{{sstable.format}} level (at least I don't know how to do that differently)

And, since we want to have some consistency around properties, this 
{{sstable.format.<which format>.<option>=<sth>}} speaks to me more than 
{{sstable.format.options.<which format>.<option>=<sth>}}

In summary, selected format is not a property of any format, IMO it better fits 
to sstable level.

Regarding target version and format - I agree it will be probably modified with 
the downgradability ticket, thus those fields will be completely optional. I 
like the idea of having Cassandra version --> format/version mapping. I've 
changed the name of the write version to "write_version_limit" so that it 
expresses more adequately what that parameter means.

> Improvements to SSTable format configuration
> --------------------------------------------
>
>                 Key: CASSANDRA-18441
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-18441
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Local/SSTable
>            Reporter: Branimir Lambov
>            Assignee: Jacek Lewandowski
>            Priority: Normal
>             Fix For: 5.x
>
>
> CEP-17 and CASSANDRA-17056 abstracted some interfaces for SSTable format 
> implementations and defined a method of plugging in specific configurations. 
> This method is brittle and asks users to specify format identifiers whose 
> configuration does not provide value but can be the source of conflicts and 
> problems. On the other hand it makes important choices non-obvious, as the 
> selection of format to write is given by the order of configured interfaces.
> An improved specification mechanism needs to be put in place before Cassandra 
> 5 is released.



--
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