Abbiamo un'app per Android e un'app per iPhone (stessa funzionalità) che utilizzano sqlite per l'archiviazione locale dei dati. Inizialmente le app non hanno dati, quindi alla prima esecuzione ricevono i dati da un server remoto e li archiviano in un database SQLite. Il database sqlite viene creato dal server e le app lo scaricano come un unico file, che viene quindi utilizzato per acquistare le app. Il file di database non è molto grande per gli standard odierni, ma neanche uno piccolo - circa 5-6 MB.Sincronizza/aggiorna i database sqlite
Ora, una volta ogni tanto, le app devono aggiornare i dati dal server. Ci sono alcuni approcci a cui posso pensare:
Scaricare un nuovo database completo dal server e sostituire quello esistente. Questo suona come il modo più semplice per affrontare il problema se non fosse per un download ripetuto 5-6 MB. Le app richiedono all'utente se vogliono scaricare gli aggiornamenti, quindi questo potrebbe non essere un problema.
Scaricare un database delta dal server, contenente solo i record nuovi/modificati e in qualche modo informazioni su quali record eliminare. Ciò porterebbe a una dimensione di download molto più piccola, ma il lavoro sul lato client è più complicato. Avrei bisogno di leggere un database e, in base a ciò che viene letto, aggiornarne un altro. Per quanto ne so, non c'è modo con sqlite di fare qualcosa come
insert into db1.table1 (select * from db2.table1)
dovedb1
edb2
sono due database sqlite contenentitable1
della stessa struttura. (Il database sqlite completo contiene circa 10 tabelle con la più grande probabilmente contenente circa 500 record.)Scaricare il delta dei dati in un altro formato (json, xml, ecc.) E utilizzare queste informazioni per aggiornare il database nell'app. Lo stesso di prima: non tanto per il lato server, dimensioni di download inferiori rispetto al database completo, ma piuttosto un processo doloroso per fare gli aggiornamenti.
Quale dei tre approcci è consigliabile? O forse c'è ancora un altro modo in cui mi sono perso?
Molte grazie in anticipo.
https://stackoverflow.com/questions/4008015/android-sqlite-bidirectional-synchronization-sqlite –