2017-01-19 57 views
1

這是設置默認(讀寫)一致性水平 val connector: KeySpaceDef = ContactPoints(hosts, port).withClusterBuilder { builder => builder.withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.QUORUM)) }.keySpace("test")設置默認的一致性水平

回答

0

不,一致性水平設定爲每查詢協議級坐着設置一個默認的可以是非常危險的正確途徑。如果您不想讓設置發生默認設置,您不必在任何地方顯式設置。

否則,使用一致性水平重要的地方:

class Table extends .. { 

    def store(rec: Record): Future[ResultSet] = { 
     insert.value(_.id, rec.id).consistencyLevel_=(ConsistencyLevel.QUORUM) 
    } 

} 

一致性水平涉及到複製的因素,性能,可用性,和很多其他的事情,所以在現實生活中,你可以最終花費相當多的的時間找到完美的答案。

全球默認並不是一個真正的技術上可行的想法,所以沒有真正的動機在驅動程序中產生這樣的機制。

+0

同意一般情況下全局一致性設置不是一個好主意,但在我們的情況下,我們要確保我們可以讀取我們自己的寫入。除此之外,我的代碼會從上面做到嗎?它會設置默認的一致性級別嗎?如果不是,它是做什麼的? – EugeneMi

+0

我同意@EugeneMi - 爲所有查詢設置默認的一致性級別很有用,例如QUORUM - 在每個查詢中手動設置此一致性級別會添加大量樣板,並且如果通過忘記添加設置而使用ConsistencyLevel.ONE意外執行查詢,則會引入微妙錯誤的機會。 EugeneMi的上述代碼是否正常工作? 「如果您不想讓設置發生默認設置,您無需在任何地方進行明確的設置。」 - 在我們的例子中ConsistencyLevel.ONE絕對不是一個好的默認值(假設這是默認值)。 –