请帮帮我,
我是Cassandra世界的新手,所以我需要一些建议。

我正在尝试为cassandra DB创建数据模型。

在我的项目中
-可以互相关注的用户,
-与许多主题相关的文章。

每个用户可以遵循许多主题。

因此,目标是制作用户将获得的聚合提要:
他关注的所有主题的文章+
他关注的所有朋友的文章+
自我文章。

我搜索了大约相同的任务,并找到了twissandra示例项目。

如我在该示例中所理解的,我们仅在时间轴中存储推文的ID,并且当我们需要获取时间轴时,我们获取推文的ID,然后在单独的非阻塞请求中通过ID来获取每个推文。收集所有推文后,我们会将推文列表返回给用户。

所以我的问题是:有效吗?

向DB发出〜41个请求以获取一页推文?

第二个问题是关于追随者。
当某人创建推文时,我们会吸引他的所有关注者,并将推文ID放入他们的时间表,
但是如果用户有数千个关注者该怎么办?

这意味着仅创建一条推文,我们应该将(1 + followers_count)次写入DB?

最佳答案

twissandra更像是一个玩具例子。它适用于某些工作负载,但可能需要更多的工作量才能对数据进行更多分区(分解大行)。

从本质上讲,虽然是的,但是它相当有效-可以通过在时间轴中包含内容来做到这一点,但是要视需求而定,这可能不是一个好主意(如果需要删除/编辑)。写入应该是非发行的,如果您有足够的系统,则20k写入/秒/节点是合理的。

如果我正确地理解了您的用例,那么您可能会喜欢twissandra这样的模式,但是一定要在预期的工作负载下对其进行测试。请记住,一定程度上一切都会变得更加复杂(即,如果您期望数以百万计的文章,则需要进一步的划分,请参见https://academy.datastax.com/demos/getting-started-time-series-data-modeling)。

08-05 11:22