alimarcus
2012-01-24 17:41:10 UTC
Salve a tutti, espongo subito il mio problema.
Ho due gestionali identici che funzionano su pc distanti tra di loro, ma collegati da una vpn su adsl. Ognuno lavora sul proprio database locale (si tratta di Firebird, ma credo sia indifferente ai fini del problema).
C'è la necessità di mantenere sincronizzata una tabella, quella dei clienti, in modo che da entrambe le sedi si possano eseguire modifiche/inserimenti/eliminazioni e la tabella rimanga di fatto univoca.
Ho già creato un software esterno che effetta periodicamente l'operazione di sincronizzazione (basta una volta al giorno) sulla base del confronto tra i dati presenti nella stessa tabella dei due database e di appositi marcatori di record lasciati dai due gestionali. Ho messo in funzione tale software su uno dei pc col gestionale, quindi la sincronizzazione avviene tramite connessione ad un database locale e l'altro remoto.
La seconda connessione è ovviamente più lenta, ma il tutto funziona bene.
A questo punto mi trovo a gestire i casi di caduta di linea/rete.
Per la sincronizzazione di OGNI record, occorre eseguire modifiche su entrambi i database ed è chiaro che se la prima modifica va e buon fine ma la seconda no, allora i dati diventano inconsistenti. Bisogna quindi evitare di aggiornare da una parte sola: o da tutte e due o niente.
L'ideale sarebbe di poter disporre di un'unica transazione su entrambi i database, ma non mi risulta che esista.
Avete qualche idea?
Grazie, Marco M.
Ho due gestionali identici che funzionano su pc distanti tra di loro, ma collegati da una vpn su adsl. Ognuno lavora sul proprio database locale (si tratta di Firebird, ma credo sia indifferente ai fini del problema).
C'è la necessità di mantenere sincronizzata una tabella, quella dei clienti, in modo che da entrambe le sedi si possano eseguire modifiche/inserimenti/eliminazioni e la tabella rimanga di fatto univoca.
Ho già creato un software esterno che effetta periodicamente l'operazione di sincronizzazione (basta una volta al giorno) sulla base del confronto tra i dati presenti nella stessa tabella dei due database e di appositi marcatori di record lasciati dai due gestionali. Ho messo in funzione tale software su uno dei pc col gestionale, quindi la sincronizzazione avviene tramite connessione ad un database locale e l'altro remoto.
La seconda connessione è ovviamente più lenta, ma il tutto funziona bene.
A questo punto mi trovo a gestire i casi di caduta di linea/rete.
Per la sincronizzazione di OGNI record, occorre eseguire modifiche su entrambi i database ed è chiaro che se la prima modifica va e buon fine ma la seconda no, allora i dati diventano inconsistenti. Bisogna quindi evitare di aggiornare da una parte sola: o da tutte e due o niente.
L'ideale sarebbe di poter disporre di un'unica transazione su entrambi i database, ma non mi risulta che esista.
Avete qualche idea?
Grazie, Marco M.