> 2)      DynamicComposites : I read somewhere that they are not recommended ?
You probably wont need them. 

Your current model will not sort message by the time they arrive in a day. The 
sort order will be based on Message type and the message ID. 

I'm assuming you want to order messages, so put the time uuid at the start of 
the composite columns. If you often want to get the most recent messages use a 
reverse comparator. 

You could probably also have wider rows if you want to, not sure how many 
messages kids send a day but you may get by with weekly partitions. 

The CLI model could be:
row_key: <phone_number : day>
column: <time_uuid : message_id : message_type> 

You could also pack extra data used JSON, ProtoBuffers etc and store more that 
just the message in the column value. 

If you use using CQL 3 consider this:

create table messages (
        phone_number            text, 
        day                                     timestamp, 
        message_sequence        timeuuid, # your timestamp
        message_id                      integer, 
        message_type            text, 
        message_body            text
) with PRIMARY KEY ( (phone_number, day), message_sequence, message_id)

(phone_number, day) is the partition key, same the thrift row key. 

 message_sequence, message_id is the grouping columns, all instances will be 
grouped / ordered by these columns. 

Hope that helps. 



-----------------
Aaron Morton
Freelance Cassandra Developer
New Zealand

@aaronmorton
http://www.thelastpickle.com

On 7/02/2013, at 1:47 AM, Kanwar Sangha <kan...@mavenir.com> wrote:

> 1)      Version is 1.2
> 2)      DynamicComposites : I read somewhere that they are not recommended ?
> 3)      Good point. I need to think about that one.
>  
>  
>  
> From: Tamar Fraenkel [mailto:ta...@tok-media.com] 
> Sent: 06 February 2013 00:50
> To: user@cassandra.apache.org
> Subject: Re: DataModel Question
>  
> Hi!
> I have couple of questions regarding your model:
> 
>  1. What Cassandra version are you using? I am still working with 1.0 and 
> this seems to make sense, but 1.2 gives you much more power I think.
>  2. Maybe I don't understand your model, but I think you need  
> DynamicComposite columns, as user columns are different in number of 
> components and maybe type.
>  3. How do you associate between the SMS or MMS and the user you are chating 
> with. Is it done by a separate CF?
> 
> Thanks,
> Tamar
>  
> 
> Tamar Fraenkel 
> Senior Software Engineer, TOK Media 
> 
> <image001.png>
> 
> ta...@tok-media.com
> Tel:   +972 2 6409736 
> Mob:  +972 54 8356490 
> Fax:   +972 2 5612956 
>  
>  
>  
> 
> On Wed, Feb 6, 2013 at 8:23 AM, Vivek Mishra <mishra.v...@gmail.com> wrote:
> Avoid super columns. If you need Sorted, wide rows then go for Composite 
> columns. 
> 
> -Vivek
>  
> 
> On Wed, Feb 6, 2013 at 7:09 AM, Kanwar Sangha <kan...@mavenir.com> wrote:
> Hi –  We are designing a Cassandra based storage for the following use cases-
>  
> ·        Store SMS messages
> 
> ·        Store MMS messages
> 
> ·        Store Chat history
> 
>  
> What would be the ideal was to design the data model for this kind of 
> application ? I am thinking on these lines ..
>  
> Row-Key :  Composite key [ PhoneNum : Day]
>  
> ·        Example:   19876543456:05022013
> 
>  
> Dynamic Column Families
>  
> ·        Composite column key for SMS [SMS:MessageId:TimeUUID]
> 
> ·        Composite column key for MMS [MMS:MessageId:TimeUUID]
> 
> ·        Composite column key for user I am chatting with 
> [UserId:198765432345] – This can have multiple values since each chat conv 
> can have many messages. Should this be a super column ?
> 
>  
>  
> 19866666666:05022013
> SMS:xxxx:ttttttt
> SMS:xxx12:ttttttt
> MMS:xxxx:ttttttt
> XXXX:1933333333
> 19877777777:05022013
>  
>  
>  
>  
> 19878888888:05022013
>  
>  
>  
>  
>  
>  
> Thanks,
> Kanwar
>  
> 
>  

Reply via email to