Cassandra中的用户时间轴和数据复制

时间:2018-11-14 22:15:55

标签: cassandra

我目前正在为instagram克隆创建后端,并使用Cassandra作为数据库(首次使用NoSQL)。我试图对数据进行非规范化处理-但是感觉不对。复制级别为N(其中N是关注者/订阅者的数量)。

我知道主键是如何由两部分组成的(分区键和聚类列),并尝试进行相应的建模。

 CREATE TABLE IF NOT EXISTS instagram.user_post (
   user_id uuid,
   post_id timeuuid,
   tag text,
   caption text,
   PRIMARY KEY (user_id, post_id)
 ) WITH CLUSTERING ORDER BY (post_id DESC);

CREATE TABLE IF NOT EXISTS instagram.user_post_comment (
  user_id uuid,
  post_id timeuuid,
  comment text,
  PRIMARY KEY (user_id, post_id)
) WITH CLUSTERING ORDER BY (post_id DESC);


CREATE TABLE IF NOT EXISTS instagram.user_post_timeline (
  user_id uuid,
  post_id timeuuid,
  caption text,
  month text,
  PRIMARY KEY ((user_id, month) post_id)
) WITH CLUSTERING ORDER BY (post_id DESC);

如果“ Joe”发布了一条帖子并拥有400位关注者,那么我的代码将创建400条instagram.user_post_timeline条目....每个用户一个。我继续阅读数据复制是可以的-但这似乎很极端。有一个更好的方法吗? (我知道,twitter在每个用户的redis中都保留ZIPLISTS ...但是那只是一个缓存)。

谢谢

0 个答案:

没有答案