2014-10-13 3 views
1

나는 카산드라 읽기가 키 'K'의 값을 반환하지 않는 수수께끼 같은 문제에 직면하고 있습니다. 나는 거의 2 주전에 컬럼 패밀리에 삽입 된 키를 가지고 있는데, CQLSH를 연속적으로 8 회 사용하여 키를 쿼리했을 때, 값을 반환하지 않은 횟수는 2 회였습니다. 6 번 결과가 올바르게 나타났습니다. 내 키 공간의 복제 인수는 3입니다.카산드라가 간헐적으로 실패 함을 읽습니다.

이 키는 QUORUM 일관성 (Java Hector 클라이언트)으로 작성되었습니다. 나는 하나의 기본 일관성을 가지고 CQLSH를 사용하여 그것을 읽고있다. 나는 지금까지 이것을 설명 할 수 없었다. 이견있는 사람 ?

답변

2

이유는 일관성 레벨 disequation 존중하지 않는 점이다

(WRITE CL + READ CL)> 복제 FACTOR RF = 3

-> 정족수 = 2

그래서 당신의 disequation는

((쓰기 CL) 2 + (CL 읽기) 1)> 3말2 + 1> 3 = 거짓

this post에서 일관성을 유지하는 방법을 찾을 수 있습니다. 당신은 @Carlo CONSISTENCY 명령

cqlsh> CONSISTENCY QUORUM; 

를 사용 CQLSH에서 CL 쿼럼을 설정하고 어이 다시

HTH, 카를로

+0

을 읽을 수행하기 위해 read repair chance

시도를 튜닝에 관심이있을 수있다 그러나 정보 주셔서 감사합니다. 그러나 데이터의 신선도를 보장하기위한 일관성이 아닌가? 하나의 읽기 일관성 (쓰기에 QUORUM 일관성 사용)을 사용하더라도이 키를 보유하고있는 가장 가까운 복제본에서이 특정 키에 대한 데이터를 리턴합니다. 일관성이 약해지면이 키의 최신 값을 얻지 못할 수도 있습니다. 그러나이 키에 대한 데이터를 전혀 얻을 수 없다는 것이 어떻게 가능합니까? 나는 어떤 상황에서 카산드라가 존재하는 키에 대한 데이터를 반환하지 않을 것이라고 추측하고있다. – invinc4u

+0

키 K에 3 개의 노드 RF가 있고 CL = Quorum으로 작성한 경우 클라이언트에 제어를 반환하기 전에 2 개의 노드 만 작성한 것입니다. CL = 1의 읽기가 수행되고 첫 번째 노드가 K가 누락 된 경우 다시 결과가 표시되지 않습니다. 편집 된 대답에서 말한대로 CL을 설정하려고했는지 확인하십시오. –

+0

감사합니다. @Carlo. 그것은 지금 의미가있다 :) – invinc4u

관련 문제