La mia e' una richiesta un po' particolare, tutti bene o male si sono scontrati prima o poi con le sincronizzazioni (copio il record, lo flaggo etc.), quello che cerco io e' in realtà una sincronizzazione client server fra istanze simili di mysql.
In pratica sto cercando una cosa molto simile ad oracle lite, ma per MYSQL
Problema (semplificato):
un cliente deve gestire un'applicazione in 2 sedi separate. Una delle 2 sedi pero' è sprovvista di connessione stabile (problema INSORMONTABILE), quindi è necessario installare una struttura client server che possa essere sincronizzata tramite un tasto del client.
Scenario:
- Server centrale con N tabelle e un'applicazione online
- Clients (saranno 2, ma il numero è irrilevante), ogni client è formato da un'applicazione LOCALE PHP + un DB mysql formato da un sottoinsieme delle tabelle del server centrale
In pratica ogni qualvolta su un client viene inserito/modificato/eliminato un record, lo stesso dato dovrà essere riportato sul server, e quindi successivamente propagato sugli altri client.
Il problema è che le modifiche possono essere concorrenti, ad esempio se sia sul client A che sul client B viene modificato lo stesso record, dovra' essere tenuta come valida l'ultima modifica, indipendentemente da quando viene sincronizzato il client A o il client B. Questo deve essere applicato per QUALSIASI tabella, e potrebbe a mio avviso gestito con una tabella di messaggi simile a questa:
codice:
CLIENT | TABELLA | RECORD | TIPO_OPERAZIONE | DATA_OPERAZIONE
-------------------------------------------------------------------
A | articoli | A002 | insert | 2010-01-01 01:10
A | articoli | B001 | update | 2010-01-04 02:10
B | articoli | B001 | update | 2010-01-04 03:10
La tabella in pratica comunica al server quali sono le operazioni che sono state fatte sulle tabelle.
in questo esempio sia A che B hanno fatto un'update al record B001 della tab articoli, pero' l'ultima modifica è quella fatta da B, e quindi sarà quella da tenere valida (anche se A sincronizza con il server dopo che l'ha fatto B).
Questo è solo un esempio, però la cosa potrebbe essere molto più complessa, quindi chiedo: nessuno si è mai scontrato con un problema simile? sapete se esistono script che trattanola cosa?
Io sto pensando di produrre qualcosa di generico, e credo che potrebbe essere utile a molti... Parliamone!