Cassandra第二天索引与物化视图



我正在为Cassandra 3.0+建模我的表。目标是构建一个存储用户活动的表,以下是我迄今为止所做的工作:(userid来自另一个数据库Mysql)

CREATE TABLE activity (
userid int,
type int,
remoteid text,
time timestamp,
imported timestamp,
visibility int,
title text,
description text,
img text,
customfields MAP<text,text>,
PRIMARY KEY (userid, type, remoteid, time, imported))

这是我使用的主要查询:

SELECT * FROM activity WHERE userid = ? AND remoteid = ?;
SELECT * FROM activity WHERE userid = ? AND type = ? AND LIMIT 10;

现在,我需要在第二个查询中添加列visibility。因此,根据我所学到的,我可以在二级索引物化视图之间进行选择。以下是事实:

  • 这里每个用户有一个分区,里面有数千行(活动)
  • 我在所有查询中总是使用分区键(userid)来访问数据
  • 全球活动数量为3000万,正在成长
  • visibility列的基数较低(只有3个值),可以更新,但很少更新

那么我应该选择什么?物化视图还是索引?我知道基数低的索引是不好的选择,但我的查询总是包括分区键和限制,所以可能没那么糟糕。

如果您总是要使用分区键,我建议您使用辅助索引。

当你不知道分区密钥时,物化视图会更好

参考文献:

主要文章

•Cassandra二级指数预览#1

以下是与物化视图和二级索引的比较

•Cassandra 3.x 中的物化视图性能

这里是已知PK的地方,使用索引更有效

•Cassandra原生二级指数深潜

最新更新