2013-07-31 3 views
0

대다수의 시간 동안 오프라인에서 사용할 앱을 만들고 있습니다. 우리가하고자하는 것은 실제 데이터베이스에서 몇 개의 테이블 복사본을 생성하고 PhoneGap 애플리케이션에 데이터베이스를 주기적으로 복사하는 것입니다 (PhoneGap에서 실제 데이터베이스로 이동하지 마십시오).PhoneGap에서 오프라인으로 사용할 수 있도록 mysql 데이터베이스 복사본을 만들려면 어떻게해야합니까?

처음 앱을 실행할 때마다 PhoneGap에 삽입물을 넣을 수 있습니다 (사용자는 Wi-Fi에 액세스 할 수있는 사무실에있을 것입니다). 그리고 나서 라이브 DB의 어떤 레코드가 마지막 ' 동기화 '를하고 PhoneGap 앱에서 그 레코드를 업데이트 할 수는 있지만 라이브 DB를 파일에 더 무차별 적으로 덤프하고 로컬 PhoneGap 복사본을 대체 할 수 있다면 좋을 것입니다.

답변

1

얼마나 많은 데이터를 로컬에 저장해야하는지 모르지만 5MB로 제한 할 수있는 경우 로컬 db 대신 jsonlocalStorage을 사용할 수 있습니다.

앱에서 데이터를 요청하면 마지막에 타임 스탬프를 사용하여 한 번에 모두 반환하고이를 사용하여 업데이트 된 데이터 만 스마트하게 반환합니다. yourhost.com/retrieveData과 같은 호출은 모든 데이터를 반환하고 yourhost.com/retrieveData/timestampParam은 타임 스탬프 이후에 업데이트 된 데이터 만 반환합니다.

같은 반환 :

{ "table1" : [{"col1":"data1","col2":"data2"},{"col1":"data3","col2":"data4"}], 
    "table2" : [{"col3":"data5","col4":"data6"},{"col3":"data5","col4":"data6"}], 
    "timestamp" : 1234567 } //this should be optimized for your needs, it's just a generic example. 

때 응용 프로그램이 시작, 아무것도는이 라인을 따라 뭔가를하고 당신은 당신의 응용 프로그램은 항상 최신해야합니다 전에 :

Check if the data is stored 
    If there isn't, or if the user is online or if the timestamp is too old, or you can perform any check you might need here 
     Retrieve the data again using the stored timestamp 
     Update the local data 
     Store the timestamp returned 
    If none of the above applies, the app is good to run 

I 여러 가지 앱에서 그 접근법을 사용했습니다. 나는 구현하고 유지하는 것이 더 간단하기 때문에 데이터베이스를 통해 그것을 선택했다.

+0

모든 데이터는 확실히 json에서 5MB보다 커질 것입니다. 파일/개체 당 총 5MB 또는 5MB의 제한이 있습니까? – SomethingOn

+1

5MB는 로컬 저장소에 저장할 수있는 데이터의 최대 크기입니다. 하지만 AFAIK는 iOS (사용자가 승인하는 경우 10 개까지 확장 가능)와 5GB의 Web SQL에 대해서도 제한되어 있습니다. 그래도 검색을해야합니다. 집에 갈 때 뭔가를 찾으려고 노력할 것입니다. 하지만 그 이상을 필요로한다면 나는 네가 원주민이되어야한다는 것을 확신한다. – caiocpricci2

+0

감사합니다. caiocpricci2, 플러그인을 https://github.com/pgsqlite/PG-SQLitePlugin-iOS에서 사용하고 싶습니다. 플러그인을 사용할 때 문제가 있습니다. – SomethingOn