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.spe...@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 <nikola...@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?
>> 
>> 

Reply via email to