Sincronizzare SQLite usando solo HTTP

1

Al momento ho un DB SQLite sul mio server che è necessario per un'app per Android che sto attualmente sviluppando. Scarico il DB sul dispositivo Android tramite HTTP ogni volta che i contenuti vengono modificati.

Qualcuno ha qualche suggerimento su come farlo in modo più efficiente. vale a dire. quando il database diventa grande, non voglio che l'utente Android debba scaricare di nuovo l'intero database solo perché è stato aggiunto un record.

    
posta Keagan Ladds 11.06.2013 - 09:17
fonte

2 risposte

2

Non penso che ci sia una buona soluzione disponibile a livello di database. Il modo in cui ci si avvicina a questo è all'incirca questo:

  • Lo schema del database include informazioni sulla versione; questo può essere semplice come timestamp creati / modificati su ogni riga, oppure puoi storicizzare completamente tutto, a seconda delle tue esigenze pratiche. La chiave qui è che devi essere in grado di verificare quali sono state le modifiche dopo una determinata data / ora.
  • Il server espone i dati attraverso un servizio web; dal momento che tutto ciò di cui hai bisogno è CRUD di base, sarebbe opportuno utilizzare un'API RESTful. L'API dovrebbe esporre un modo di interrogare le modifiche, ad es. http://example.com/api/modifications/things?refdate=20130601 ti darebbe tutte le modifiche alla tabella things dal 06/01/2013.
  • L'app client utilizza le chiamate API per scaricare le modifiche recenti dal server e consente di eseguire il backup delle modifiche locali. Avrebbe eseguito il proprio database SQLite a livello locale, ma non avresti mai scambiato i file del database direttamente.

Quindi, anziché spingere l'intero database avanti e indietro, spinga selettivamente e tiri solo le modifiche, con l'API che funge da interfaccia.

    
risposta data 11.06.2013 - 10:34
fonte
0

È richiesto l'uso di HTTP? Puoi usare una connessione TCP?

In tal caso, puoi utilizzare la litereplica biblioteca.

Rendi il file db del server il db principale (scrivibile) e il cellulare ha il db secondario (di sola lettura)

Se l'app mobile deve scrivere sul db, può utilizzare un altro file per il proprio contenuto. Puoi persino utilizzare un'altra coppia nella direzione opposta, che funge da backup e il server può persino leggerla.

E gli aggiornamenti db sono incrementali. Ciò significa che vengono trasferite solo le pagine modificate anziché l'intero database.

    
risposta data 16.11.2015 - 22:08
fonte

Leggi altre domande sui tag