모바일 데이터베이스에 로컬 데이터베이스가 있습니다. 몇 분마다 장치는 테이블을보고 REST 인터페이스를 통해 업로드 된 것으로 표시되지 않은 데이터를 서버로 보냅니다.REST 인터페이스를 통한 데이터베이스 일관성 유지
name : "bob", phone : "444"
서버가 응답합니다 : 다음 REST 인터페이스를 통해 전송됩니다 무엇
id | name | phone | uploaded
1 | "bob" | "444" | 0
은 다음과 같습니다이 "OK"메시지가되면
status : "OK"
여기에 예제 테이블입니다 모바일 장치가 수신 한 경우 해당 레코드를 uploaded=1
으로 표시합니다. 이것은 실제로 일어난 것과 장치가 일치하도록 유지되어야합니다. 문제는 서버가 모바일 장치에서 두 가지 메시지 (어떤 이유로 든)를 수신 할 수 있으며 정확히 동일한 데이터가있는 두 개의 레코드를 서버 데이터베이스에 삽입한다는 것입니다.
발생을 막을 수있는 방법은 무엇입니까?
나는 서버 데이터베이스의 모든 필드에 대해 고유성 인덱스를 생각했지만 더 좋은 방법이 있어야한다고 생각합니다.
왜 두 개의 업데이트 메시지가 필요한 경우에만 보내셨습니까? 그게 당신이 해결해야 할 문제입니다. –
실수로 '이중 전송'을 일으킬 수있는 여러 가지 원인이 있습니다 : 잘못된 연결, 실수로 서버가 응답하기 전에 '업로드'를 두 번 누르십시오. 어쨌든, 우연히 그걸 우연에 맡길 수는 없습니다. – you786