Hi TR, The query I used is list email of user (also support paging)
Thanks for your reply. On Tue, Dec 1, 2009 at 4:24 AM, Tux Racer <[email protected]> wrote: > Hello QuyenPN, > > You forgot to tell us what typical search queries you will do against your > database. > If you know the user id and mail id, and just want to get the mail content, > then you may even not need super columns: > > key= userid_mailid->content:the_content > > If you only know the user id and want to get the mails for that user, you > could get the mails ID using and key ordered scanner. > > Cheers > TR > > > Quyen Pham Ngoc wrote: > >> 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 >> >> > -- Best regards, QuyenPN Mail: [email protected] Tel: 0909 269 792
