我目前正在使用和研究 cassandra 中的数据建模实践。到目前为止,我知道您需要基于执行的查询进行数据建模。然而,多重select
需求使得数据建模更难或不可能在一张表上处理。因此,当您无法在 1 个表上处理这些要求时,您需要插入 2-3 个表。换句话说,您需要在 1 次操作中进行多次插入。
目前,我正在处理活动结构的数据模型。我在 cassandra 上有一个带有以下 cql 的活动表;
CREATE TABLE campaign_users
(
created_at timeuuid,
campaign_id int,
uid bigint,
updated_at timestamp,
PRIMARY KEY (campaign_id, uid),
INDEX(campaign_id, created_at)
);
在此模型中,我需要能够仅在给定时间戳的情况下进行增量导出。在 cassandra 中,有一种allow filtering
启用select
二级索引查询的模式。因此,我用于增量导出的 cql 语句如下;
select campaign_id, uid
from campaign_users
where created_at > minTimeuuid('2013-08-14 12:26:06+0000') allow filtering;
但是,如果使用允许过滤,则会出现一条警告,指出该语句具有不可预测的性能。那么,依靠 是一个好习惯allow filtering
吗?还有什么其他选择?