2013-03-22 63 views
7

我正在使用Cassandra及其Node.JS驅動程序Helenus進行一些測試。有沒有辦法使用CQL來改變查詢的一致性級別?在CQL查詢中更改Helenus一致性級別

Helenus文檔僅顯示使用Helenus Thrift連接器執行此操作的示例,但我想使用CQL連接器。

我試圖查詢卡桑德拉這樣

conn.cql(cqlRead, vals, {ConsistencyLevel:ANY, gzip:true}, cb); 

但節點拋出這個錯誤

ReferenceError: ANY is not defined 

然後,我改變了「ANY」到「1」和節點運行的代碼,但我沒有沒有注意到任何區別。

回答

3

問題是你不能使用CL.ANY讀取,只能寫入。 ANY表示將提交日誌寫入成功,即使沒有任何副本可用。由於提交日誌不能被查詢讀取,因此使用CL.ANY進行讀取是沒有意義的,所以Cassandra不會讓你。

+1

這是正確的。我看到了Cassandra文檔,並且無法使用設置爲ANY的一致性級別進行讀取。但是,除此之外,Helenus CQL連接器不使用'ConsistencyLevel'JSON選項密鑰。如果我想修改ConsistencyLevel查詢選項,我應該修改查詢字符串,而不是選項對象。 我的cqlRead var是「SELECT * FROM DUMMY」,我應該使用「SELECT * FROM DUMMY USING CONSISTENCY ALL」來代替。 感謝您的幫助! – 2013-03-22 15:05:15

1

我已經看到了Helenus documentation和他們建立這樣

cf.get('foo', {consistency:helenus.ConsistencyLevel.ONE}, function(err, row){ 
    // Your code here 
}) 

你有與一致性嘗試一致性:helenus.ConsistencyLevel.ANY。我認爲你可能會得到另一個不同於ReferenceError