我們有一個android應用程序和一個iPhone應用程序(相同的功能),使用sqlite本地數據存儲。應用程序最初沒有數據,然後在第一次運行時,它們從遠程服務器接收數據並將其存儲在sqlite數據庫中。 sqlite數據庫由服務器創建,應用程序將其作爲一個文件下載,然後用於購買應用程序。按照今天的標準,數據庫文件不是很大,但也不是很小 - 大約5-6 MB。同步/更新sqlite數據庫
現在,有一段時間,應用程序需要刷新服務器中的數據。有幾種方法可以考慮:
從服務器下載新的完整數據庫並替換現有的數據庫。這聽起來像是處理這個問題最簡單的方法,不是因爲重複5-6 MB的下載。這些應用程序確實會提示用戶是否要下載更新,因此這可能不是太大問題。
從服務器上下載增量數據庫,其中只包含新的/修改的記錄,並以某種形式提供有關要刪除哪些記錄的信息。這將導致更小的下載量,但客戶端的工作更復雜。我需要讀取一個數據庫,並根據讀取的內容更新另一個數據庫。據我所知,沒有辦法用sqlite來做類似
insert into db1.table1 (select * from db2.table1)
的地方,其中db1
和db2
是兩個包含結構相同的table1
的sqlite數據庫。 (完整的sqlite數據庫包含大約10個表,最大的可能包含約500個記錄左右)。下載某些其他格式(json,xml等)中的數據增量並使用此信息更新應用程序中的數據庫。與以前一樣:在服務器端沒有太多問題,比完整的數據庫更小的下載大小,但是執行更新是一個非常痛苦的過程。
您推薦三種方法中的哪一種?或者,也許還有另一種我錯過的方式?
非常感謝提前。
https://stackoverflow.com/questions/4008015/android-sqlite-bidirectional-synchronization-sqlite – 2017-07-01 03:39:52