我們有一個活動指標頁面,用戶可以在其中選擇一個日期時間並查看其他用戶的聚合活動(通過操作),並可選擇過濾所有4或5個字段。操作按順序進行,但其中一個字段爲Tags
,用戶可以隨時更改舊操作的標籤。數據位於Cassandra 3.7中,分區密鑰爲(company_id, action_year, action_week)
。對於每週我們有約70k的行動(有20列與long
或int
數據爲每個動作,每個行動與分區密鑰加action_timestamp
和action_key
作爲行鍵)。從Cassandra 3.x篩選標籤
PRIMARY KEY ((company_id, action_year, action_week), action_date, action_key)
) WITH CLUSTERING ORDER BY (action_date ASC, action_key ASC)
對於第一個版本,我們正在查詢一段時間的完整操作並執行所有聚合和內存過濾。當用戶選擇幾個星期時,整個請求需要10或15秒。我們希望能夠擴展到成千上萬的用戶,要求這些分析應該以接近實時的分析方式工作。
我們認爲使用「allow filtering」將篩選移動到C *,但WHERE子句似乎非常有限。而且我們也擔心標籤的頻繁更新。
在這裏使用C *的正確方法是什麼?
「目前,SASI不支持集合」。我需要多個標籤,因此集合是必需的 –
您確定要將標籤作爲集合存儲嗎?將它們保存爲C *文本可能更有意義。如果你需要集合的語義,那麼你似乎有點卡住了。 –
是的,我可以將它們保留爲文本並使用LIKE。但是,我再也不能在WHERE子句中使用OR,對吧? –