Puoi anche utilizzare un'altro approccio
piu' moderno, decisamente piu'
figo, ma anche piu' sofisticato.
Non e' per deboli di cuore
E' quello che si chiama
database replicato: esistono gia' DBMS che supportano questa funzionalita, devi solo spulciare la documentazione o cercare il DBMS piu' adatto.
L'idea e' la seguente: tu usi sempre un DBMS LOCALE.
Poi c'e' un processo che si occupa di allineare il DBMS locale con quello remoto: porta gli aggiornamento da LOCALE a REMOTO e viceversa, con scadenza di secondi/minuti, a seconda delle esigenze e del carico di lavoro.
In questo modo la tua applicazione NON DEVE preoccuparsi se esiste una connessione verso il DBMS remoto: tu ragioni SEMPRE come se questa connessione esistesse.
Il processo che allinea i due DBMS e' assolutamente generico: non ha nessuna necessita' di conoscere le necessita' specifiche dell'applicazione. Lui ragiona SOLO in termini di tabelle/record/... Questo vuol dire che una volta fatto, lo puoi riutilizzare N-mila volte.
E fa curriculum!
Realizzare tutto questo a mano non e' eccessivamente difficile, se ti accontenti di funzionalita' base.
Attenzione: fare le cose per bene e' abbondantemente al di la delle competenze del programmatore medio.
Il contesto di funzionamento piu' semplice ed ideale (ed implementabile a mano) e' il seguente:
0) hai un solo DB REMOTO
1) BANALE: hai UN SOLO CLIENT. In questo caso devi solo aggiornare il DB REMOTO con le modifiche fatte su quello LOCALE.
Puoi fare tutto con un timestamp di ultima modifica su ogni record ed un timestamp dell'ultimo aggiornamento
2) SEMPLICE: hai PIU' CLIENT (ogn;uno con un ID univoco) che lavorano SOLO suoi propri dati. Ogni tabella ha una colonna che identifica il client (mediante l'ID). E' una variante del CLIENT UNICO, in cui partizioni i dati mediante il client ID.
3) MOLTO COMPLICATO: ogni client puo' lavorare su TUTTI i dati del DB. Per supportare questa confgurazione servono ottime conoscenze di programmazione, programmazione concorrente, teoria relazionale dei dati, strategie di aggiornamento, e non so quante altre cose ...
Per questo DEVI NECESSARIAMENTE ricuperare un DBMS che supporta gia' nativamente questa funzionalita'.
http://dev.mysql.com/doc/refman/5.7/en/replication-howto.html
https://msdn.microsoft.com/en-us/library/ms151198.asp
http://www.oracle.com/technetwork/database/features/data-integration/index.html
e questo:
http://www.symmetricds.org
Ovviamente cose del tipo: ma se mi cancellano il DBMS locale che succede?
E' un po' come dire: vado al lavoro con la mia macchina ma se me la fregano che faccio?
Ti attacchi ...
Insomma: data l'idea, cerca un po' e vedrai che troverai cose DECISAMENTE interessanti!