우리가 파일을 가지고 있고, 그것을 처리하고 데이터를 보내는 몇 가지 작업 상상해 이 파일을 한 번만 또는 적어도 뭔가 잘못되었다고 판단하고 사용자에게이 문제를 수동으로 해결하도록 알리십시오.방지 중복
방지 중복
답변
예, 가능합니다.
당신이 할 수있는 일은 데이터베이스에 이름과 플래그/상태 (읽으면 yes yes no)를 저장하는 테이블을 데이터베이스에 생성하는 것입니다. 프로세스가 해당 위치의 파일을 공급할 때 동일한 프로세스가 이름 (매번 이름이 다를 경우)과 데이터베이스의 해당 파일에 대한 플래그/상태를 업데이트하는지 확인하십시오. 파일 읽기 프로세스는 데이터베이스에서 파일 이름을 가져 와서 개미가 어디에 있든 파일을 덤프 할 수 있으며 완료되면 플래그를 read
또는 그 이상으로 업데이트해야합니다. 이렇게하면 파일을 한 번 이상 읽지 않아도됩니다.
데이터베이스에 두 개의 테이블 정보를 저장합니다.
- 이미 처리 한 것처럼 처리 된 파일 행입니다.
- 파일 자체의 레코드입니다. 포함 :
- 파일 이름
- 처리가 성공적으로 부분적으로 파일을 나중에
SHA1
해시 검사를 성공, 실패 여부 파일을 처리하려면 먼저 체크섬이 있는지 여부를 확인하십시오. 이 경우 처리를 중지하고 문제를 기록 할 수 있습니다. 또는 파일 테이블에 해당 정보를 전달할 수 있습니다.
또한 처리 된 줄과 파일간에 외래 키 연결이 있는지 확인하십시오. 그렇게하면 어떤 일이 잘못되면 수동 개입을하는 사람이 영향을받은 행을 추적 할 수 있습니다.
Usmana 또는 Tracy 대답은 실제로 파일이 두 번 이상 처리되지 않고 작업이 데이터베이스 및 외부 서비스 (질문에서 # 1 및 # 2)에 중복 요청을 보내지 않음을 보장하지 않습니다. 두 가지 솔루션 모두 처리가 완료된 후에 로그를 유지하고 업데이트하도록 제안하지만 맨 마지막에 로그를 업데이트하려고 할 때 오류가 발생하면 작업이 다음에 실행될 때 다시 처리하려고 시도하고 중복 요청을 데이터베이스 및 외부 서비스 Usmana와 Tracy가 제안한 솔루션을 사용하여 트랜잭션을 처리하는 유일한 방법은 트랜잭션에서 모든 것을 실행하는 것 뿐이지 만 사용자와 같은 배포 환경에서는 상당히 어려운 작업입니다.
문제의 일반적인 해결책은 데이터베이스 및 외부 서비스에 대한 중복 요청을 정상적으로 처리하는 것입니다. 실제 구현은 다를 수 있지만 예를 들어 데이터베이스에 고유 한 제약 조건을 추가 할 수 있으며 작업에서 중복 레코드를 삽입하려고하면 예외가 발생하여 작업에서 무시할 수 있습니다. 이는 필요한 데이터가 이미 db.
내 대답은 Usmana와 Tracy가 제안한 로그 테이블이 필요 없다는 것을 의미하지 않습니다.처리 상태를 추적하는 데 필요하지만 분산 트랜잭션을 사용하지 않는 한 데이터베이스 및 외부 서비스에 중복 요청이 발생하지는 않을 것입니다.
희망이 있습니다.
- 1. CFgrid의 중복 업데이트 방지
- 2. ID 중복 방지
- 3. 방지 중복 된 항목
- 4. XAML에서 중복 코드 방지
- 5. 방지 중복 요청이
- 6. 날짜 중복 방지 postgresql
- 7. 방지 중복 (VB.NET)
- 8. SQL 방지 중복 항목
- 9. JTable에서 중복 항목 방지
- 10. 중복 값 추가 방지
- 11. 키/데이터의 중복 방지
- 12. 중복 행 방지
- 13. 중복 OFFSET 계산 방지
- 14. 중복 SQL 항목 방지
- 15. 코드 중복 방지 방법
- 16. 방지 중복 코드는
- 17. AngularFire 중복 방지
- 18. 방지 중복 pugixml :: xml_node
- 19. 중복 로그인 기록 방지
- 20. 세트없이 중복 방지?
- 21. 서버에서 이미지 중복 방지
- 22. Oracle에서 중복 작업 방지
- 23. 중복 추측 방지
- 24. PHP에서 ID 중복 방지
- 25. JavaDoc 주석의 중복 방지
- 26. 코드 중복 방지
- 27. jQuery에서 코드 중복 방지
- 28. MySQL은, 중복 행을 방지
- 29. jQuery의 함수 중복 방지
- 30. 특성 : 코드 중복 방지
파일을 누가 보관합니까? 나는 누군가를 의미합니까? 아니면 다른 프로세스 도스? –
@UsmanRana, 예, 다른 프로세스입니다 – nanotexnik
작성하는 데이터 행에 고유 한 식별자가 있습니까? 파일은 어때? 이전에 부분적으로 완료된 파일 재 처리에 대해 걱정할 필요가 있습니까? –