음...앱에서 파일을 온라인으로 동기화 시키는데요
파일을 주고받는 알고리즘이 궁금합니다.
A앱:
file1
file2
file3
B온라인:
file2
file3
file4
요렇게 있을때,
당연히 A에 있는 file1을 B로 백업해야할것 같지만
꼭 그렇지가 않습니다.
B온라인에서(사용자가 웹에서) file1을 삭제한 경우라면
A에 file1을 삭제해야 맞는 동기화겠죠.
또한 B에 있는 file4를 A로 전송 해줘야할것 같지만
A에 있는 file4를 삭제한 경우라면
B에있는 file4를 같이 삭제해줘야겠죠.
극단적인 경우를 생각하자면
B온라인에 file 1, 2,3,4,5 가 있다고 가정했습니다.
사용자가 어플을 삭제하고 다시 설치했을때
폰 내부에는 파일이 하나도 없는 상태이기 때문에
동기화를 할겁니다.
그런데 B온라인에 있는 파일을 가져와야하는데
사용자가 A앱에 있는 파일을 모두 삭제한걸로 착각하고
B온라인에 있는 파일을 모두 삭제할 수도 있다는겁니다.
요 알고리즘을 어떻게 만들어야 할지 도저히 모르겠습니다. ㅠㅠ
마지막에 행한 액션을 서버가 관리하면 될것 같습니다.
가령 클라우드 서버가 B에서 file1을 삭제한 것이 마지막 액션코드였다면
A에서도 file1을 삭제해서 동기화 해야하겠죠.
또한 B에 file4가 있지만 마지막 행한 액션이 A앱에서 file4를 삭제한 경우라면 B에서도 file4를 삭제하면 될 것 같네요.
별도의 서버로 관리하기 힘들다면 A 앱과 B 에서 각기 액션을 행한 시각을 가진 DB를 관리해서 비교하면 되겠네요.
이 경우 양측의 시간이 동일하게 설정되었다는 가정이 필요할 것 같습니다.
저라면 이렇게 해볼텐데 도움이 되셨는지 모르겠네요.




그래서 제가 생각한것은...
우선 B온라인에 있는걸 모두 A로 가져오고난뒤에
A에 있지만 B에 없는 파일은 B에 올려주고
B에 있지만 A에 없는 파일을 삭제하면 알고리즘이 될까요...말이 안되는군요 -_-;; B에서 모두 가져온상태인데..