2009-10-27 2 views
0

데이터베이스에서 외부 파일로 일부 정보를 이동하는 배치 프로세스를 만들고 있습니다. 이 작업은 관리가 가능하지만 처리해야하는 많은 데이터가 있으며 약 1 개월 정도 걸릴 수 있습니다.동시 트랜잭션이 발생하는 동안 배치 프로세스

이번 달 동안 새로운 정보가 지속적으로 업로드됩니다. 일괄 처리를 수행하고 새 레코드로 돌아가서 처리 할 수있는 방법이 있습니까 (일괄 처리가 이루어지는 동안 업로드 시스템을 끌 수 없음).

일괄 처리 대부분이 특정 일까지 처리 될 것으로 예상되어 전체 일괄 처리의 약 95 %가 남았고 나머지 5 %는 입력 된 새 레코드가 처리됩니다. 이견있는 사람?

답변

0

"저널"테이블을 사용하여 "다운로드"프로세스를 통해 처리 된 행을 추적하지 않는 이유는 무엇입니까? 새로운 "입장"이 올 경우, 그들은 나중에 픽업 될 것입니다, 그렇지 않습니까?

물론 "생성/수정 된"날짜 필드 인덱싱 필드를 사용하여 일괄 처리를 순서대로 처리합니다.

"월"중에 작성된 새 레코드의 현재 레코드를 왜 취급해야하는지 확신합니다. 명확히하십시오. 구별이 필요한 경우 특정 "중지"날짜와 함께 "다운로드"프로세스를 시작하십시오.

0

SQL Server 2008을 사용하는 경우 변경 내용 추적을 사용하여 마지막 배치 이후 데이터베이스의 변경 내용을 쿼리 할 수 ​​있습니다.

0

+1 저널 아이디어에 대해 +1했는데 프록시를 고려 했습니까?

이 응용 프로그램이 자신의 스키마 또는 정보 업로드 루틴을 자유롭게 수정할 수 있는지 여부를 나타내지 않습니다. 각 레코드의 마지막 수정 시간과 각 레코드의 마지막 백업 시간을 추적 할 수 있으면 최근에 수정 된 레코드를 쉽게 쿼리 할 수 ​​있습니다. 또는 이전 백업 과정에서 수정 된 레코드 저널을 스캔하여 끝에 따라 잡을 수도 있습니다.

테이블을 수정하는 빈도에 따라 흐름을 뛰어 넘어 입력 프로세스를 데이터베이스로 프록시하는 것이 좋습니다. 그러면 입력 프록시가 즉시 외부 파일에 저장을 수행 한 다음 데이터베이스를 예상대로 갱신합니다. 이것은 또한 파일이없는 레코드를 내보내는 관용을 제공합니다.

관련 문제