2013-11-14 1 views
1

나는 Redshift에 몇 개의 행을 쓰는 시스템을 가지고있다. 끝나자 마자 (코드 행이 끝나자 마자 JDBC를 사용하여) 큐에 ID를 보내고 다른 시스템이이 id를 선택하고 Redshift에서이 행과 관련 행을 읽습니다.Redshift : 삽입물의 데이터는 언제 선택할 수 있습니까?

이 읽기는 일반적으로 같은 초에 발생합니다. 문제는 약 10 %의 시간에 (방금 작성한) 데이터를 찾을 수 없다는 것입니다. 데이터가 분명히 있습니다. 나중에 이들 항목을 다시 처리하면 결과가 달라집니다 (올바른).

제 질문은 Redshift가 즉각적인 데이터 일관성을 보장합니까, 아니면 우리 시스템이 읽기 전에 기다려야합니까? 그리고 그것이 얼마나 오래 기다려야한다면?

답변

0

나는 Redshift에서 확인을받을 때까지 작성된 행을 고려하지 않아야한다고 생각합니다.

시간은 클러스터의 부하에 따라 달라질 수 있습니다 다른 등, 해당 테이블에 기록

당신의 큐에 ID를 전송하기 전에 JDBC를 통해 성공 확인을 기다리고보십시오.

+0

불행히도 우리는 JDBC로부터 확인을 기다리고 있습니다. 우리는 표준 포스트 그레스 설치를 위해 redshift를 바꿨고 모든 것이 코드 변경없이 예상대로 작동했습니다. – Gesar

+0

네, 왜 레드 쉬프트를 원래이 용도로 사용 했습니까? –

0

일단 변경 사항이 커밋되면 사용 가능해야하지만, 자동 커밋 동작으로 인해 INSERT/UPDATE가 완료되고 커밋이 완료 될 때까지 약간의 지연이 발생할 수 있습니다.

트랜잭션에서 데이터베이스 변경 사항을 래핑하고 참조 된 다른 시스템에 메시징하기 전에 COMMIT가 완료되기를 기다리는 것이 좋습니다.