2016-10-04 5 views
2

복제 계수 3 인 6 노드 클러스터가 있습니다. 정상적인 일관성 수준을 QUORUM으로 사용하고 직렬 일관성 수준을 SERIAL로 사용하고 있습니다.정상적인 일관성 수준을 조건부 기록 (LWT)으로 설정하면 어떻게됩니까?

조건부 쓰기 쿼리 (IF EXIST)가 있습니다. 다음과 같이 datastax java 드라이버를 사용하여이 명령문에 일반 및 직렬을 설정하면 어떻게됩니까?

//preparedStatement has a conditional query. 
BoundStatement boundStatement = new BoundStatement(preparedStatement); 
boundStatement.setSerialConsistencyLevel(ConsistencyLevel.SERIAL); 
//is this required?? 
boundStatement.setConsistencyLevel(ConsistencyLevel.QUORUM); 

내 쿼리 :

  1. 정상적인 일관성 정족수가 무시됩니다 것인가 또는이 고려 될 것입니다?
  2. 이 경우 직렬 일관성 수준 만 설정해야합니까?

내가 아래 링크를 참조하지만 경량 쓰기가 발생하는 경우 작업을 즉시 완료 을 보장 할 것 읽은 것을 정의하는 많은 https://docs.datastax.com/en/cassandra/3.x/cassandra/dml/dmlConfigSerialConsistency.html

런 단계를 설명하지 못한다는 정상를 사용 일관성 수준.

간단히 설명하십시오.

답변

4

직렬 일관성 레벨은 간단한 트랜잭션의 Paxos 단계에서만 사용됩니다. 해당 단계가 성공하면 실제 변형 (읽기 또는 쓰기)은 지정된 "정상"일관성 레벨을 사용하여 수행됩니다.

그래서 귀하의 질문에 대답 :

은 일반 일관성 정족수는 무시됩니다 것인가 아니면 고려해야한다?

경량 트랜잭션이 성공하고 돌연변이가 수행되는 경우 고려됩니다.

이 경우 직렬 일관성 수준 만 설정해야합니까?

모든 문장에는 일관성 수준이 있습니다. 문장 수준에서 아무 것도 지정하지 않으면 the defaults defined at cluster level apply입니다.

+0

설명해 주셔서 감사합니다. – Laxmikant

+1

내 대답이 정확하다고 생각되면 해결해주십시오. 감사 :) – adutra