首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Cassandra -跟随/取消跟随关系在Twissandra示例

Apache Cassandra -跟随/取消跟随关系在Twissandra示例
EN

Stack Overflow用户
提问于 2016-04-15 15:46:41
回答 1查看 443关注 0票数 0

我正在尝试通过查看Twissandra project来学习卡桑德拉建模。

似乎当用户取消关注他的一个关注者时,只有友情/关注者关系从表中删除,但未关注的用户的推文仍保留在刚刚未关注他的用户的时间线中。

此外,根据我目前对Cassandra建模的非常基本的了解,在我看来,从时间线中删除tweet几乎是不可能的。这是来自Twissandra的模型:

代码语言:javascript
复制
  CREATE TABLE timeline (
    username text,
    time timeuuid,
    tweet_id uuid,
    PRIMARY KEY (username, time)
  ) WITH CLUSTERING ORDER BY (time DESC)

由于tweet_id既不是分区键,也不是聚集列,因此不可能通过它进行查询并删除记录。

此外,有人可以建议一个模型,它将有可能从时间线上删除未关注的用户的推文。

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

EN

回答 1

Stack Overflow用户

发布于 2016-04-15 16:55:45

由于tweet_id既不是分区键也不是聚集列,因此不可能通过它进行查询并删除记录。

代码语言:javascript
复制
CREATE TABLE timeline (
    username text,
    tweet_id timeuuid,
    tweet_content text
    PRIMARY KEY (username, tweet_id)
  ) WITH CLUSTERING ORDER BY (tweet_id DESC)

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

此外,有人能建议一个模型,在这个模型中,可以从时间线中删除未关注的用户的推文。

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

代码语言:javascript
复制
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“,你的用户名是”海伦·苏“时:

DELETE FROM followed_users_tweets WHERE username='Helen SUE' AND followed_user='John DOE'

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36641193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档