我的任务是在 Cassandra 中简单地建模。不过,我几乎完全来自 SQL 背景,但在弄清楚它时遇到了一些麻烦。
基本上,我们有一个订阅列表,我们会定期收听该更新。这可以是 RSS、JSON、ATOM、XML 等(取决于提要)。
我们要做的是定期检查每个提要中的新项目,将数据转换为几种格式(即 JSON 和 RSS)并将其存储在 Cassandra 存储中。
因此,在 RBDMS 中,结构类似于:
Feed:
feedId
name
URL
FeedItem:
feedItemId
feedId
title
json
rss
created_time
我很困惑如何在 Cassandra 中对数据进行建模以促进简单的事情,例如按创建的降序获取特定提要的 x 数量的项目(这可能是最常见的查询)。
我听说过一种策略提到有一个复合键存储,在这个例子中,created_time 作为一个基于时间的 UUID 和提要项 ID,但我仍然有点困惑。
例如,假设我有一系列行,其键基本上是 feedId。在每一行中,我存储了上面提到的一系列列。问题是,实际数据到哪里去了(即 JSON、RSS、标题)?我是否必须将该“记录”的所有数据存储为列值?
我想我混淆了宽行和窄(短?)行,因为我喜欢复合键的想法,但我也想在每条记录中存储其他数据,我不知道如何将两者融合在一起......