Dettagli di implementazione dell'API di sincronizzazione del database

1

Voglio ottenere una sincronizzazione del database tra il mio database del server e un'applicazione client. Il server eseguirà MySQL e le applicazioni potrebbero eseguire diverse tecnologie di database, la loro implementazione non è importante.

Ho un database MySQL online e accessibile tramite una API che ho scritto in PHP (solo un dettaglio).

La mia applicazione client viene spedita con una copia dei dati online. Con il passare del tempo il mio obiettivo è controllare eventuali modifiche nel database online e rendere questi aggiornamenti disponibili all'app client tramite una chiamata API, inviando una data a un endpoint API corrispondente alla data dell'aggiornamento dell'app, la risposta sarebbe essere un JSON pieno di tutti i nuovi oggetti e oggetti aggiornati ed eliminare gli ID, questo rende possibile aggiornare l'archivio locale in modo appropriato.

In sostanza voglio fare questo: link

La mia domanda riguarda i dettagli di implementazione.

  1. Dovrei aggiungere una colonna alle mie tabelle del database con una data "ultima modifica"?

  2. Poiché l'app client potrebbe essere molto obsoleta se è offline per un lungo periodo, vuol dire che non dovrei cancellare i dati dal database online ma avere un'altra colonna chiamata "cancella" impostata su 1 e una data di modifica aggiornata in modo appropriato?

  3. La mia query SQL controllerebbe semplicemente tutti i dati con una data modificata superiore alla data passata nella richiesta API dal client?

Mi sembra che ci sia molto di più ad avere un sacco di date ovunque. Inoltre, temo di dover mantenere molti vecchi dati per garantire che le vecchie versioni dell'app client abbiano sempre l'opportunità di eliminare parti dei loro dati quando sono in grado di sincronizzarsi.

    
posta Daniel 02.07.2013 - 16:32
fonte

1 risposta

3

Ci sono diversi modi per farlo, ma in generale hai 2 scelte:

Importazioni approssimative: sovrascrive ciò che hai con i nuovi dati in arrivo. Quindi una nuova importazione completa dei dati.

o l'alternativa:

Segui le modifiche: Non utilizzare solo un campo data modificato ma tenere traccia di tutte le modifiche. Quindi lascia che le modifiche siano scaricabili con una data di scadenza. Quindi, il cliente chiede tutte le modifiche dall'ultima volta che ha chiesto. Quindi applicherà tutte le modifiche e potrai gestire i conflitti nascenti.

    
risposta data 02.07.2013 - 17:13
fonte

Leggi altre domande sui tag