我想查詢我的表的完整分區。 我的複合分區密鑰由(id, date, hour_of_timestamp)
組成。 id
和date
是字符串,hour_of_timestamp
是一個整數。Cassandra - IN或TOKEN查詢查詢整個分區?
我需要添加hour_of_timestamp字段到我的分區鍵因爲熱點,而攝取數據。
現在我想知道什麼是最有效的方式來查詢我的數據的完整分區? 根據this blog,使用SELECT * from mytable WHERE id = 'x' AND date = '10-10-2016' AND hour_of_timestamp IN (0,1,...23);
在協調器節點上造成大量開銷。
使用TOKEN函數並用兩個令牌查詢分區更好嗎?如SELECT * from mytable WHERE TOKEN(id,date,hour_of_timestamp) >= TOKEN('x','10-10-2016',0) AND TOKEN(id,date,hour_of_timestamp) <= TOKEN('x','10-10-2016',23);
所以我的問題是: 我應該使用IN
或TOKEN
查詢查詢我的數據的整個分區?或者我應該使用23個查詢(hour_of_timestamp
的每個值),然後讓司機完成剩下的工作?
我使用Cassandra 3.0.8和最新的Datastax Java驅動程序連接到6節點羣集。
你可以發佈你的整個PRIMARY KEY定義嗎? – Aaron
@Aaron PRIMARY KEY((log_creator,date,hour),ts,log_id)是實際的定義。我已經調整了問題中的字段名稱,使其更加「通用」...... ts'的類型是'timestamp','log_id'是另一個字符串。 – j9dy