Hi all,

I know the limitation when using super column.

"# Cassandra has two levels of indexes: key and column. But in super columnfamilies there is a third level of subcolumns; these are not indexed, and any request for a subcolumn deserializes _all_ the subcolumns in that supercolumn. So you want to avoid a data model that requires large numbers of subcolumns"

I have Mail data model like
//Column Family
MailBox{
    userId{//row key
        "inbox":{//super column
            mailId1: mailData1,
            mailId2: mailData2    
        },
        "outbox":{//super column
            mailId3: mailData3,
            mailId4: mailData4
        }
        }
}

I know above design violate the Cassandra limitation with super column, because day by day, email user send and receive increase.
Try to avoid this, I have 2 solution:
1. Use 2 column Family: InboxMailBox and OutboxMailBox
//Column Family
InboxMailBox{
    userId{//row key
        mailId1: mailData1,
        mailId2: mailData2    
    }
}

//Column Family
OutboxMailBox{
    userId{//row key
        mailId3: mailData3,
        mailId4: mailData4    
        }
}

2. Use complex row key: I use a prefix append to userId, ex "inbox" or "outbox"

//Column Family
MailBox{
    prefix + userId{//row key
        mailId1: mailData1,
        mailId2: mailData2    
        }
}

Could you give me some advice?
Thanks a lot for support.


Best regards,
QuyenPN