cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Laing, Michael" <michael.la...@nytimes.com>
Subject Re: Modeling contact list, plain table or List<UDT>
Date Sat, 09 Jan 2016 13:51:04 GMT
Note that in C* 3.02 the second query is invalid:

cqlsh> Select * from communication.user_contact_list where user_id =
98f50f00-b6d5-11e5-afec-6003089bf572 and is_favorite = true order
by contact_name asc;

*InvalidRequest: code=2200 [Invalid query] message="PRIMARY KEY column
"is_favorite" cannot be restricted as preceding column "contact_name" is
not restricted"*

On Fri, Jan 8, 2016 at 6:50 PM, Jack Krupansky <jack.krupansky@gmail.com>
wrote:

> How big is each contact list expected to be? Dozens? Hundreds? Thousands?
> If just dozens, a simple list column would seem sufficient. If thousands,
> the row (not partition) would get kind of bloated.
>
> What requirements do you have for updating? If updating contacts and lots
> of contacts, I think I'd prefer each contact as a row/clustering key. Nice
> to be able to do selective queries to return slices of the clustering key
> values, which is not so easy if they are all just a single list column.
>
> -- Jack Krupansky
>
> On Fri, Jan 8, 2016 at 6:31 PM, Isaac P. <ipvp@hotmail.com> wrote:
>
>> Hi everyone
>>
>> What would perform better while modeling a simple user contact list  that
>> will be used mainly to select the recipients for/from/to messages ?
>>
>> a) Individual rows to each (user, contact) pair so a select would fetch
>> all the rows  to retrieve all the contacts from a given user.
>>
>> or
>>
>> b) A single row for each user containing the List<Contact>  UDT.
>>
>> Aside of the basic CRUD, the queries will be the following ones:
>>
>> Select * from user_contact_list where user_id = :userid order by
>> contact_name asc
>>
>> Select * from user_contact_list where user_id = :userid and is_favorite =
>> true order by contact_name asc
>>
>> After reading this
>> https://docs.datastax.com/en/cql/3.0/cql/ddl/ddl_compound_keys_c.html
>>  the table is looking like this:
>>
>> CREATE TABLE communication.user_contact_list (
>> user_id uuid,
>> contact_id uuid,
>> contact_name text,
>> created_at timeuuid,
>> is_favorite boolean,
>> favorite_at timestamp,
>> PRIMARY KEY (user_id, contact_name, is_favorite)
>> );
>>
>> Any guidance will be appreciated.
>>
>> Thanks
>>
>> --
>> IPVP
>>
>>
>

Mime
View raw message