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?