在布尔列上过滤
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
在 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