我正在尋找理智檢查我的方法來分頁卡桑德拉表。我的使用案例如下:我需要一張表格,爲某個特定日期的某個網站提供最後的X個訪問者,以便爲分析儀表板提供支持。我使用session_id記錄訪問,並且我有以下表格架構:Cassandra分頁正確嗎?
session_id text,
yyyymmdd test,
bucket int,
timeuuid timeuuid,
primary key((yyyymmdd, bucket), timeuuid)
WITH CLUSTERING ORDER BY (timeuuid DESC)
存儲桶用於避免一個節點上的熱點。上分頁: 查詢將是這個樣子:
SELECT session_id FROM recent_visitors WHERE yyyymmdd = ? AND bucket IN (?) LIMIT 1000;
現在,這個查詢很可能會影響到每一個節點,因爲桶數量比節點的數量較大。這個查詢是否太昂貴/有沒有更好的方法?另外,我知道對於每個分區,數據按聚類列排序,但是cassandra會對所有分區的結果進行排序嗎?換句話說,數據將在每個(yyyymmdd,bucket)組中返回排序,但是跨組將會不得不對最終顯示的結果進行排序?然後,如果我從結果得到的最古老的timeuuid,我就準備用下面的查詢分頁:
SELECT session_id FROM recent_visitors WHERE yyyymmdd = ? AND bucket IN (?) LIMIT 1000 WHERE timeuuid < previous_oldest_timeuuid;
那是一個理智的方式?預先感謝您的時間。