incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aaron Morton <aa...@thelastpickle.com>
Subject Re: How to store news lists in optimal way?
Date Sun, 13 Feb 2011 20:13:01 GMT
The best way to store things depends on how you want to read them back.

You could use a compound key such as user/listtype and then store the items in the lists as
column were the col name is a timestamp and the col value is a packed data structure like
json.

As bill says, don't create a CF per user.

Aaron

On 12/02/2011, at 4:14 AM, Bill Speirs <bill.speirs@gmail.com> wrote:

> I don't know enough about Lucene to comment, but option #2 seems like
> a bad idea. You shouldn't grow your database by the number of Column
> Families as there are bad implications to doing this. Option #1 or #3
> seems plausible depending upon how much data you have.
> 
> Hope this helps...
> 
> Bill-
> 
> On Fri, Feb 11, 2011 at 4:26 AM, Nikolay Fominyh <nikolayfn@gmail.com> wrote:
>> Hello.
>> 
>> We have a problem with finding way to store user news list.
>> Our task - we have 2 group of filters:
>> 1) News Types(photo, video, audio, etc... )
>> 2) User Lists(user, friends, friends friends, etc..)
>> 
>> Our solution ways:
>> 1) Store matrix of filters for each user.
>> UserNews:
>>   user_id1:
>>        <list_type1>: (date, uuid)
>>        <list_type1>_<news_type1>: list(date, news_uuid)
>>        <list_type1>_<news_type2>: list(date, news_uuid)
>>        ....
>>        <list_typeN>: (date, uuid)
>>        <list_typeN>_<news_type1>: list(date, news_uuid)
>>        <list_typeN>_<news_type2>: list(date, news_uuid)
>>        ...
>>   ...
>>   user_idN:
>>        <list_type1>: (date, uuid)
>>        <list_type1>_<news_type1>: list(date, news_uuid)
>>        <list_type1>_<news_type2>: list(date, news_uuid)
>>        ....
>>        <list_typeN>: (date, uuid)
>>        <list_typeN>_<news_type1>: list(date, news_uuid)
>>        <list_typeN>_<news_type2>: list(date, news_uuid)
>>        ...
>> 
>> Numbers of filters in this way more than 100..
>> 
>> 2) Store news lists for each user in personal column family.
>> UserNews_<id>:
>>    date_uuid:
>>        <news_type> : indexed
>>        <list_type> : indexed
>>        <news_uuid>
>> 
>> In this case we have huge number of column families.
>> 
>> 3) Store news lists in SQL Database and News in Cassandra.
>> 
>> 4) Use Apache Lucene for indexes on filters.
>> 
>> Question: What of this ways is most optimal? Is there another ways of solutuion?
>> 
>> 

Mime
View raw message