Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Realm(Mobile) - MySQL sync #32

Open
ChangJoo-Park opened this issue May 8, 2018 · 9 comments
Open

Realm(Mobile) - MySQL sync #32

ChangJoo-Park opened this issue May 8, 2018 · 9 comments

Comments

@ChangJoo-Park
Copy link

오프라인에서 조작한 데이터를 서버와 싱크하는 경우는 아래 세가지 경우가있습니다.

  1. 데이터 추가 (모바일 <-> 서버)
  2. 데이터 삭제 (모바일 <-> 서버)
  3. 데이터 갱신 (모바일 <-> 서버)

Realm Sync Engine은 삭제와 갱신시에는 마지막 데이터가 항상 최신으로 판단된다고 하니까(참고URL 함께 수정하는 경우에도 마지막 데이터가 최신으로 판단될거 같아요
지금 하시는 프로젝트가 웹은 없으니까(맞나요?) 여러군데에서 한번에 조작할 일은 없을 것 같기도 하네요

오전에 갱신시 어떻게 할까? 에 관한 내용은 Realm을 쓰시면 고려할만한 부분은 아닐 것 같아요 항상 마지막 데이터만 보존되면 되니까요 (갱신 얘기는 웹에서 offlinefirst를 고려하면 CouchDB에서의 갱신을 기준으로 말씀드렸어요)
만약 구현하려는 노트가 둘다 오프라인인 경우에 수정 후 나중에 함께 싱크가 되어야 하는 노트가 아니라면 상관없겠죠?

Realm을 쓰는 경우 MySQL과 Sync하는 방법을 찾아봤는데 대부분의 답변이 Realm Object Server를 쓰라고하네요 😭

@fobidlim
Copy link
Member

fobidlim commented May 8, 2018

@ChangJoo-Park 님이 웹 서비스를 담당하십니다. 😊

농담이고, Realm과 Firebase Database가 없던 시절부터 존재하던 노트 서비스에서는 이런 문제를 과연 어떻게 해결했을지 궁금하네요.
개인적으로는 서버에서 Realm이나 Firebase Database 등 Realtime Database 서비스를 사용하지 않고 해결해보고싶었어요.

@fobidlim
Copy link
Member

fobidlim commented May 8, 2018

@ChangJoo-Park
Copy link
Author

우리나라에서 offlinefirst라는게 그렇게 각광을 받는게 아니라서요 ㅋㅋㅋ
보통 CouchDB(또는 Couchbase)/PouchDB를 이용해서 서버 - 웹앱간 offlinefirst를 해결하거든요
앱이 중심이 되는 서비스에서 필요한가? 라고 질문하시면 모르겠습니다

웹까지 끼는 경우는 이야기가 달라질거에요 ㅋㅋ 정말 리얼타임이 필요할까 부터 고민해야하지 않을까요

@ChangJoo-Park
Copy link
Author

http://couchdb.apache.org/ 얘는 서버에서 사용
https://pouchdb.com/ 얘는 클라이언트에서 사용

기록용으로 남겨놓습니다 (_ _)

@ChangJoo-Park
Copy link
Author

ChangJoo-Park commented May 8, 2018

영상은 내일 회사가면서 볼게요 ㅋㅋ
슬라이드만 보면 앱에서 폴링한다는거 보니까 되게 업데이트가 잦은 경우에 쓰는건가봐요

앱에서 한 클라이언트가 변경되는 내용을 보고있는 다른 클라이언트도 알아야한다는 정도에서 사용하겠죠?

@rkdgusrnrlrl
Copy link
Member

서버에 사용자 데이터(상태)를 보관하지 말고, 사용자 정보 변경 이벤트를 저장합니다. 클라이언트에서 도 이벤트를 저장해 싱크 될 떄 해당 이벤트를 서버에 보내주면 될 것 같습니다. 서버는 항상 이벤트를 다 돌려서 상태를 만들어 주기 떄문에 엉킬 염려가 없을 것 같습니다.(기존 상태 값을 덮어써 버리는)

너무 과하려나요 ^^;;

이벤트 소싱

@ChangJoo-Park
Copy link
Author

결과적으론 이벤트소싱까지 가지 않을까요 진짜 싱크를 한다면..
;ㅂ;

@fobidlim
Copy link
Member

fobidlim commented May 9, 2018

일이 커지네요
1

1

1

1

@devjin0617
Copy link
Collaborator

OTL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants