DOAN DuyHai created CASSANDRA-10533:
---------------------------------------

             Summary: Allowing to have static columns attached to clustering 
columns
                 Key: CASSANDRA-10533
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10533
             Project: Cassandra
          Issue Type: Improvement
          Components: Core
            Reporter: DOAN DuyHai


Now that [CASSANDRA-8099] is done, can we look again into the idea of having 
*static columns* respective to clustering column ?

I have a very relevant use-case for a customer. They want to store store an 
hierarchy of data for user expenses:

{code:sql}
CREATE TABLE user_expenses(
 user_id bigint,
 firstname text static,
 lastname text static,
 report_id uuid,
 report_title text,
 report_amount double,
 report_xxx ....
 ...,
 line_id uuid,
 line_item text,
 line-amount double,
 ...
 PRIMARY KEY((user_id), report_id, line_id)
)
{code}

So basically we have 2 levels of nesting:
 1 user - N reports
 1 report - N lines

 With the above data model,  all report data are *duplicated* for each line so 
that any update on report_title or other report property will require the 
*anti-pattern read-before-write*:

 1. Select all line_id for this report_id
 2. For each line_id, perform the update

One possible trick is to use a static map<report_id, report_property> but it's 
far from being elegant, not to say dirty.

So I believe that there is definitely a need for static columns that are 
*relative* to a clustering column. 




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

Reply via email to