cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aleksey Yeschenko (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-7857) Ability to froze UDT
Date Mon, 01 Sep 2014 20:10:20 GMT

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

Aleksey Yeschenko commented on CASSANDRA-7857:
----------------------------------------------

TBH I'm not really okay w/ frozen, or final, or static - because some people might get wrong
ideas about the finality of the values. Namely, that you can only write them once.

'serialized' or 'packed', on the other hand, are not misguiding, at least when it comes to
the finality of the values. I realize that 'serialized' is a bit overloaded. In absence of
new ideas my vote goes to either 'packed' or 'serialized'.

> Ability to froze UDT
> --------------------
>
>                 Key: CASSANDRA-7857
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7857
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Sylvain Lebresne
>            Assignee: Sylvain Lebresne
>             Fix For: 2.1.0
>
>         Attachments: 7857-v2.txt, 7857.txt
>
>
> Currently, UDT are serialized into a single value. For 3.0, we want to change that somewhat
and allow updating individual subfields: CASSANDRA-7423 (and ultimately, we'll probably allow
querying subpart of UDT to some extend). Also for 3.0, we want to allow some nesting of collections
(CASSANDRA-7826).
> However, migrating the currently serialized UDT would be challenging. Besides that, even
with nested collections, we probably won't be able to support nesting within map keys and
sets without serializing (at the very least, not initially). Also, it can be useful in some
specific case to have UDT or collections for PK columns, even if those are serialized.
> So we need a better way to distinguish when a composite types (collections & UDT)
are serialized (which imply you can't update subpart of the value, you have to rewrite it
fully) and when they are not. The suggestion is then to introduce a new keyword, {{frozen}},
to indicate that a type is serialized:
> {noformat}
> CREATE TYPE foo (a int, b int);
> CREATE TABLE bar (
>     k frozen<foo> PRIMARY KEY,
>     m map<frozen<set<int>>, text>
> )
> {noformat}
> A big advantage is that it makes the downside (you can't update the value without rewriting
it all) clear and upfront.
> Now, as of 2.1, we only support frozen UDT, and so we should make this clear by 1) adding
the frozen keyword and 2) don't allow use of UDT unless they are "frozen" (since that's all
we really support). This is what this ticket proposes to do. And this should be done in 2.1.0
or this will be a breaking change.
> We will have a follow-up ticket that will extend {{frozen}} to collection, but this is
less urgent since this will be strictly an improvement.
> I'll note that in term of syntax, {{serialized}} was suggested as an alternative to {{frozen}}.
I personally have a minor preference for {{serialized}} but it was argued that it had a "sequential"
connotation which {{frozen}} don't have. Changing that is still up for discussion, but we
need to reach a decision quickly.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message