2014-03-26 3 views
1

BatchStatement 실행에 대한 설명을 듣고 싶습니다.Cassandra BatchStatement 동작 - datastax java 드라이버

다른 테이블에 대한 많은 삽입/업데이트 문을 배치에 추가했습니다. 일괄 처리를 실행하면 쿼리가 하나라도 실패하면 다른 모든 삽입/업데이트가 성공하지 않아야합니다. 그러나 그것은 일어나지 않습니다. 부분 업데이트/삽입을 볼 수 있습니다.

어떻게하면됩니까? [하나의 쿼리가 실패하면 배치의 모든 업데이트/삽입이 발생하지 않아야합니다. ]

배치 실행이 실패한 문제가있는 정확한 쿼리를 어떻게 가져올 수 있습니까?

LOGGED 배치 문의 목적은 무엇입니까?

http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/BatchStatement.Type.html#LOGGED

BatchStatement에서 추적을 사용의 목적은 무엇인가? 디버그 쿼리 문제를 추적하려면 어떻게 인쇄합니까? 내 코드는 모양

http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/Statement.html#enableTracing%28%29

,

BatchStatement batch = new BatchStatement(); 
batch.add(ps1.bind(xxx)); 
batch.add(ps2.bind(xxx)); 
batch.add(ps3.bind(xxx)); 
session.execute(batch); 

감사합니다,

라 메쉬

답변

1

여기 카산드라에서 작동하는 방법을 원자 배치에 대한 내 대답을 읽어

Atomic Batches in Cassandra

로깅 된 배치는 원자 배치를 사용합니다. 그것은 그들이 같은 조정자에게가는 것을 의미합니다.

일괄 처리가 아닌 모든 쿼리에 대해 CAssandra 1.2 이후의 추적을 사용하도록 설정할 수 있습니다. 각 쿼리에는 UUID가 연결됩니다. 해당 UUID를 사용하여 추적 로그를 가져올 수 있습니다.

참조 예 : http://www.datastax.com/doc-source/developer/java-driver/tracing_t.html

관련 문제