Risoluzione dei conflitti per sincronizzazione offline bidirezionale

2

Come gestite la sincronizzazione bidirezionale tra un server di database "principale" e molti server "secondari", in particolare la risoluzione dei conflitti, supponendo che una connessione non sia sempre disponibile (sincronizzazione offline)?

Ad esempio, ho un'applicazione Android che utilizza i dati dal database locale (sqlite). E l'utente può gestire i dati anche se è online o offline. Nel frattempo, se è online, il database locale (sqlite) dovrebbe sincronizzarsi con il database reale (mysql) nel server e risolvere i conflitti come un servizio in background.

Esiste già una soluzione già implementata per questo tipo di scenario?

Ho sentito parlare di Couchdb che è una soluzione NoSQL che può essere una soluzione per questo. Se è così posso usarlo con SQL?

    
posta Dumidu Madushanka 09.11.2015 - 10:35
fonte

1 risposta

0

Fondamentalmente è necessario prendere i registri di commit da entrambi i database e confrontarli, cercando istanze di aggiornamenti alla stessa tabella e riga (e possibilmente colonna) in entrambi i database. Tutti i record di commit per le righe non in conflitto possono essere inviati al database appropriato (ovvero, un record di commit dal master può essere trasformato in un'istruzione CRUD appropriata e rilasciato al client), tutte le righe in conflitto dovranno avere i loro commit ordinati temporaneamente e l'ultimo impegno rilasciato avrebbe "vinto". Se i registri di commit non vengono conservati, dovrai mantenerli manualmente (probabilmente strutturando gli aggiornamenti utilizzando il schema di comando ). Questo è un esercizio non banale.

    
risposta data 09.11.2015 - 18:10
fonte

Leggi altre domande sui tag