2013-05-29 5 views
4

소개파이썬 + 카산드라 1.2 자동 테이블 생성

나는 카산드라 1.2 클러스터 (7 개 노드, 복제 팩터 3)를 사용하여 파이썬에서 응용 프로그램을 쓰고 있어요 그리고 내가 CQL 라이브러리를 사용하여 파이썬에서 카산드라에 접근하고있어 (CQL 3.0).

응용 프로그램이 구성되지 않은 열 가족에 대한 CQL 문을 실행하려고 할 때, 자동으로 테이블을 생성하고 CQL 문을 시도하는 방식으로 내장되어있는 문제

.

SELECT * FROM table1 

을 그리고하지 존재 않습니다 표는 다음 응용 프로그램은 표 CREATE TABLE을 해당 실행하고 이전 선택을 다시 시도합니다 : 예를 들어, 내가하려고하면이를 실행합니다.

Request did not complete within rpc_timeout 

내가 클러스터를 가정 문제가의 생성을 전파하는 데 약간의 시간이 필요합니다 : 문제는 테이블의 생성 후 SELECT (재시도)이이 오류와 함께 실패한다는 것입니다 테이블 같은 거요? 테이블 생성과 select 문의 재 시도 사이에 몇 초가 걸리면 모든 것이 작동하지만 더 나은 방법이 있는지 정확히 알고 싶습니다. 아마도 create table이 리턴하기 전에 변경 사항이 전파 될 때까지 기다릴 것입니까?, 그렇게하는 방법이 있습니까?

미리 감사드립니다.

답변

1

나는 cqlsh를 사용한다고 가정합니다. cqlsh의 기본 일관성 수준은 첫 번째 노드가 완료된 후에 반환되지만 모든 노드가 완료되기 전에 반환한다는 의미입니다. 읽으면 완성 된 테이블이있는 노드에서 읽을 수 있다고 보장 할 수 없습니다. 추적을 켜서 확인할 수 있지만 성능에 영향을 미칩니다.

consistency을 적용하면 모든 노드에서 테이블을 만들 때까지 기다릴 수 있습니다.

CREATE TABLE ... USING CONSISTENCY ALL 
+0

아니요, 저는 cqlsh를 사용하지 않습니다. Python에서 CQL 3.0 라이브러리를 사용하여 테이블에 액세스하고 있습니다. 그리고 그렇습니다. 일관성 수준은이 문제를 피하는 데 도움이됩니다. 그러나 그렇지 않습니다. 나는 이미 일관성 수준 ALL (이 질문을 게시 한 후 몇 개월 전)으로 테스트했으며 문제가 지속되면 지금까지 유일한 해결책은 테이블을 사용하기 전에 몇 초 정도 기다리는 것입니다. 이 상황이 테이블 당 한 번만 발생하기 때문에 그다지 큰 거래는 아니지만, 여전히 진행되고있는 일에 대해 확실한 답을 찾을 수없고,보다 우아한 방식으로 처리 할 수 ​​있습니다. –

+0

나는 테이블 생성으로 확장 된 일관성을 가정 했었지만 스키마 전파와 같이 들리는 것은 별개의 두통이다. 이런 종류의 문제에 대한 자세한 내용은 https://groups.google.com/a/lists.datastax.com/forum/#!topic/java-driver-user/vkCeBerFxUg –

+0

입니다. ppl처럼 여전히 문제가있는 것 같습니다. 제 경우에는 2 년 넘게 견디기 힘들었습니다. 게시 한 링크를 읽으면 대기 시간이있는 것처럼 보이지만 드라이버가 투명하게 만들어야합니다 (질문에 답한 경우). 또한 나는 0.0.0.0 (또는 나는 지금)을 rpc 주소로 사용하지 않으므로 아마 시간이 필요하고 내가 사용했던 오래된 엉뚱한 드라이버는 스키마 변경이 전파 될 때까지 기다릴 필요가 있다는 것을 알지 못했다. –

관련 문제