이것은 특정 기술에 반드시 바인딩되는 개념적 질문이 아닙니다. 서버의 일부 데이터베이스, 일부 REST/JSON API가 해당 데이터베이스의 컨텐츠에 액세스하고 일부 모바일 클라이언트가 API를 통해 검색된 데이터를 표시한다고 가정 해 보겠습니다.부분 데이터베이스 모델을 서버에서 클라이언트로 동기화
클라이언트에서 일부 캐싱 메커니즘을 사용하고 클라이언트가 읽기만하는 한 데이터에 오프라인으로 액세스 할 수있게하는 것이 좋습니다. (제 경우에는 오프라인 클라이언트에 대한 쓰기 액세스를 거부하는 것이 좋습니다. 발생할 수있는 모든 불쾌한 갈등을 관리하지 않아도됩니다.
문제를 해결하는 좋은 방법은 서버 데이터베이스 모델의 하위 집합을 클라이언트에두고 서버에서 클라이언트로 데이터를 동기화하는 것입니다. 로컬 데이터베이스에 액세스하면 즉시 결과가 반환 될 수 있지만 업데이트 요청이 서버에 트리거됩니다. 서버가 수정 된 데이터를 반환하는 경우 클라이언트 모델은 로컬 데이터베이스를 동기화하고 데이터 변경 사항을 디스플레이에 알립니다.
결국 목표는 사용자가 인터넷 연결의 안정성에 관계없이 정보를 탐색 할 수 있으며 데이터를 수정하지 않는 한 연결 대화 상자 또는 이와 유사한 방법으로 짜증을 내지 않는 것입니다.
구현의 관점에서 ... 한편으로는 다른 벤더의 서버 데이터베이스와 서버 데이터베이스를 직접 연결하는 것이 좋지 않은 것처럼 보입니다. 최소한 두 데이터베이스 구현보다 공급 업체 독립적 모델이 필요합니다. 반면에 서버 데이터베이스의 데이터를 일부 전송 형식으로 변환하고 다시 클라이언트 데이터베이스에 저장하는 것보다 많은 오버 헤드가 발생합니다.
우아하고 유지 보수가 잘되는 방식으로 해결하는 방법에 대한 제안이 있으십니까?
나는 John이 위에서 설명한 두 가지 옵션 중 하나를 강력하게 제안합니다. GCM은 Android에 내장 된 방식 때문에 선호됩니다. 그러나 프로젝트 요구가 GCM 경로를 충족시킬 수없는 경우 첫 번째 옵션이 유지됩니다. –
첫 번째 옵션이 마음에 들지 않으므로 사용자가 볼 수없는 데이터를 업데이트 할 수 있습니다. GCM 내가 경량 알림을 포함 할 계획이지만이를 통해 데이터베이스 업데이트를 트리거하는 것은 내 경우에 너무 낭비 일 수 있습니다. 또한 그 푸시 서비스는 벤더 고유의 것으로 보이기 때문에 휴대 전화 플랫폼에서 얼마나 잘 작동하는지 잘 모르겠습니다. 이 세 번째 옵션에 대해 어떻게 생각하십니까? 사용법에 따라 로컬 데이터베이스를 업데이트하십시오. 데이터가 로컬에서 액세스 될 때 로컬 결과가 즉시 반환 될 수 있지만 서버에 대한 요청이 동일한 데이터에 대해 전송됩니다 – mibollma