【发布时间】:2017-02-10 12:02:50
【问题描述】:
我正在为 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