在布尔列上过滤

Filter on boolean column

在 Apache Cassandra 中,需要对列进行二级索引以进行过滤。但是,布尔列上的二级索引是一种反模式。

我有一个 post 的集合,每个都有一个标签(大约有 30 个标签)。一个查询是显示 posts,它有一个特定的标签(这意味着标签是集群键 AFAIK 的一个很好的候选者)。

还有一个逻辑,为每个post分配一个布尔值"visibility" 属性。另一个查询应该只显示可见的 posts,标签无关紧要(按时间戳降序排列)。

如何建模post?

恕我直言,标签更适合二级索引。如果是集群键,什么是分区键?

我会用 3 个表来建模:

Table 1
Primary key:PostId 
Columns: Post Content
Table 2
Primary Key:  ( (timebucket), timestamp, visibility)
Columns:PostId
Table 3
Primary Key: Tag
Columns:PostId