2015-10-05 30 views
7

我做的大的結果集與Cassanda 2.2使用Java客戶端和PagingState分頁喜歡這裏所描述的行爲方式:https://datastax.github.io/java-driver/2.2.0-rc2/features/paging/卡桑德拉分頁上併發插入

這工作得很好,但我無法找到任何信息卡珊德拉的行爲時,而在分頁結果中插入新記錄(或更新現有記錄)。這些新的或改變的記錄是否包含在結果中,或者結果集是不可變的?

用例是一個無狀態Web服務,客戶端可以查詢大型結果集。

編輯: 對於一般的ResultSet分頁同樣的問題(卡桑德拉不會自動懶取這裏)

EDIT2:據我所知卡桑德拉不支持任何酸,但援助交易,那麼回事的時候我會在這裏想到了一種隔離通過結果集

回答

5

沒有這樣的隔離,因爲實施起來太昂貴了。整個結果集不會保存在內存中,並且在將當前版本發送到客戶端時,下一頁中返回的行是未知的。

在屬於給定分區鍵@ @批所有的更新都在隔離執行:這

一個有趣的結果是,它打破了批量更新的保證,在文檔中說明。

這裏有一個開放的issue

還有一些性能影響,因爲完成很多工作以獲取頁面n必須再次完成以獲取頁面n + 1(例如從索引文件和數據文件打開和讀取)。 Scylla是我貢獻的Cassandra的替代品,正在致力於fixing this