카산드라 데이터베이스에 HTML 페이지를 만드는 다소 복잡한 웹 응용 프로그램이 있습니다.카산드라 데이터베이스의 페이지 상태 변경이 항상 작동하지 않는 이유는 무엇입니까?
페이지를 만들 때 작업중인 사실을 반영하여 페이지에 상태를 저장합니다.
INSERT INTO content (key, column1, value)
VALUES ('http://domain/path', 'content:status', 0x0201);
(열 이름은 ... 중고품 일에서 온)
상태가 0x0201 동안
, 더 otherp 프로세스는 페이지에 아무것도 할 수 없습니다. 은 잠겨져으로 표시됩니다.페이지 작성이 완료되면 1ms 정도가 지나면 상태가 "정상"으로 전환됩니다. 이것은 content::status
필드의 또 다른 삽입입니다. 0x0201
에서 0x0102
에
INSERT INTO content (key, column1, value)
VALUES ('http://domain/path', 'content:status', 0x0102);
상태로 변경됩니다. 단, 웹 사이트 초기화시 생성되는 약 700 페이지 중 22 ~ 30 개 (3 % ~ 4 %)의 상태는 변경되지 않습니다.
첫 번째 INSERT INTO
사이의 시간이 걸리고 두 번째 것이 너무 짧고 카산드라 클러스터가 혼란 스럽기 때문에 이러한 현상이 발생할 수 있습니까? (예를 들어 꽤 많은 것을 함께 도착한 것으로보고 그 중 하나를 선택하면 실패하는 몇 가지 경우에는 잘못된 것입니다.)
이것은 서버의 시계 왜곡과 관련이 있습니다. 이 갱신 사항이 단일 클라이언트 인스턴스에서 오는 경우, 클라이언트 측 시간 소인의 사용을 고려하십시오. 예상 상태를 확인하기 위해 비교 및 설정 (경량 트랜잭션) 조정을 고려할 수도 있습니다. –
예. 실제로 나는 삽입물에'USING TIMESTAMP ms '를 추가하거나 드라이버에 발전기를 요청할 수 있음을 알았습니다. 기본적으로 주문이 보장되지 않는다는 사실을 실제로 변경하지는 않습니다 ... –