2012-11-20 2 views
2

데이터베이스에 대한 모든 변경 사항을 반영해야하는 실시간 자바 스크립트 애플리케이션에 대해 작업하고 있습니다. 은 즉시 자바 스크립트로으로 미러링됩니다.데이터베이스와 자바 스크립트 동기화하기

지금 JavaScript가 변경되면 API에 대한 ajax 호출을 수행하고 DOM에 대한 해당 변경을 수행합니다. 서버에서 API는 요청을 처리하고 PubNub를 사용하여 다른 현재 JavaScript 사용자에게 변경 사항을 적용하여 푸시를 보내 완료합니다. 또한 JavaScript에 순차적 인 changeID가 포함되어 있으면 누락 된 경우 전체 데이터 세트를 다시 동기화 할 수 있습니다. 다음은 해당 푸시의 예입니다.

{ 
    "changeID":"2857693", 
    "type":"update", 
    "table":"users", 
    "where":{ 
     "id":"32" 
    }, 
    "set":{ 
     "first_name":"Johnny", 
     "last_name":"Applesead" 
    } 
} 

JavaScript가이 변경 사항을 가져 오면 로컬 저장소를 업데이트하고 변경되는 테이블을 기반으로 해당 DOM 변경을 수행합니다. 내 문제는 DOM을 업데이트하는 것이 아니라 데이터베이스의 데이터를 JavaScript로 신속하고 완벽하게 동기화하는 것입니다.

이 과정을 거치면서 나는 이것이 상당히 단순해야하는 무언가에 대한 매우 복잡한 해결책이라고 생각할 수 밖에 없습니다. 나는 Gotcha를 놓치고 있니? 여러 자바 스크립트 클라이언트를 MySQL 데이터베이스와 원활하게 동기화하려면 어떻게해야합니까?

+1

는 "이 겪고, 나는 도움이되지만이 합리적으로 간단해야 뭔가 몹시 복잡한 해결책이 생각할 수 없다." - 이것은 희망찬 생각입니다. ** 완전히 다른 ** 저수준 모델 (관계형과 탐색 형/계층 형)을 기반으로 네트워크를 통해 동기화 된 두 개의 데이터 세트를 유지하는 것은 많은 이동 부품이 관련되어있는 어려운 문제입니다. 데이터베이스 모델과 객체 모델 간 변환은 "투명하게"ORM 프레임 워크를 필요로한다는 것을 고려하십시오. 복잡하고 변함없이 누출되는 추상화입니다. 기본적으로 Javascript에서 ORM 라이브러리 (일부)를 구현하려고합니다. – millimoose

+0

@millimoose, 당신은 잘 생각하고 유효한 포인트가 있습니다. 나는 내 견본이 내가 제공하는 장애물을 얻을 수있는만큼 간단하다고 생각한다. 의견을 보내 주셔서 감사합니다! – Jonathan

답변

0

몇 달 후 질문을 업데이트하기 만하면됩니다. 결국이 방법을 고수하고 꽤 잘 작동합니다.

0

나는 이것이 이전의 질문이라는 것을 알고 있지만 완전히 다른 맥락에서 똑같은 문제를 해결하기 위해 많은 시간을 보냈습니다. Phonegap App을 만들고 있는데 나중에 오프라인으로 작업하고 동기화해야합니다.

나를 위해 커다란 계시는 브라우저와 서버 간의 버전 제어이므로 내가 만든 것입니다. 데이터를 각각 setskeys에 저장합니다. 이러한 세트와 버전은 모두 개별적으로 저장됩니다. 일이 잘못 될 경우 해결할 때 사용할 수있는 충돌 해결 콜백이 있습니다.

난 그냥 GitHub의에 프로젝트를 넣어

, 그것의 URL이 https://github.com/forbesmyester/SyncIt

관련 문제