Twitter ApacheCassandra-Twissandra示例上的跟随/取消跟随关系

Twitter ApacheCassandra-Twissandra示例上的跟随/取消跟随关系,twitter,cassandra,data-modeling,Twitter,Cassandra,Data Modeling,我正试图通过观察图片来学习卡桑德拉的建模 看起来,当用户解开一个跟随者时,只有友谊/跟随者关系从表中移除,但解开跟随者的推文仍保留在刚刚解开跟随者的用户的时间线中 此外,我目前掌握了卡桑德拉建模的基本知识,在我看来,从时间线上删除推文几乎是不可能的。这是Twissandra的模型: CREATE TABLE timeline ( username text, time timeuuid, tweet_id uuid, PRIMARY KEY (username

我正试图通过观察图片来学习卡桑德拉的建模

看起来,当用户解开一个跟随者时,只有友谊/跟随者关系从表中移除,但解开跟随者的推文仍保留在刚刚解开跟随者的用户的时间线中

此外,我目前掌握了卡桑德拉建模的基本知识,在我看来,从时间线上删除推文几乎是不可能的。这是Twissandra的模型:

  CREATE TABLE timeline (
    username text,
    time timeuuid,
    tweet_id uuid,
    PRIMARY KEY (username, time)
  ) WITH CLUSTERING ORDER BY (time DESC)
由于tweet_id既不是分区键,也不是集群列,因此无法通过它进行查询并删除记录

此外,请有人提出一个模型,在该模型中,可以从时间线中删除未关注用户的推文

我已经为这个问题绞尽脑汁一天了,这在卡桑德拉似乎不是一件容易的事。我来自关系世界,所以也许我的观点也是错误的

由于tweet_id既不是分区键,也不是集群列,因此无法通过它进行查询并删除记录

上面的数据模型应该可以做到这一点

此外,请有人提出一个模型,在该模型中,可以从时间线中删除未关注用户的推文

您必须反规范化并创建另一个表

CREATE TABLE followed_users_tweets(
    username text,
    followed_user text,
    tweet_id timeuuid,
    tweet_content text
    PRIMARY KEY ((username,followed_user) tweet_id)
) WITH CLUSTERING ORDER BY (tweet_id DESC);
当您取消关注“John DOE”且用户名为“Helen SUE”时:


DELETE FROM followed\u users\u tweets,其中username='Helen SUE'和followed\u user='John DOE'

感谢您的回复。将tweet_id更改为timeuuid可以做到这一点,但我必须选择所有未跟随的用户的tweet_id,然后根据这些tweet_id发出删除。若用户有太多的推文,这可能是一个问题。您建议的关注用户推文表的用例是什么?我需要以某种方式从时间线中删除tweets,因此,同样,我必须从用户中选择我要取消跟踪的所有tweets,然后使用这些id在时间线表中发出delete。我不确定这是否行得通。
CREATE TABLE followed_users_tweets(
    username text,
    followed_user text,
    tweet_id timeuuid,
    tweet_content text
    PRIMARY KEY ((username,followed_user) tweet_id)
) WITH CLUSTERING ORDER BY (tweet_id DESC);