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