我为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
。因此,根据我所学到的,我可以选择二级索引或物化视图。
这是事实:
visibility
列的基数较低(只有3个值),可以更新,但很少。那我应该选择什么?物化视图或索引?我知道具有低基数的索引是不好的选择,但我的查询总是包括分区键和限制,所以可能不是那么糟糕。
答案 0 :(得分:10)
如果您总是要使用分区键,我建议使用二级索引。
当您不知道分区键时,物化视图会更好
<强> 参考文献: 强>
主要文章!
•Cassandra Secondary Index Preview #1
这是与物化视图和二级索引的比较
•Materialized View Performance in Cassandra 3.x
这里PK已知的地方使用索引更有效