2009-03-21 15 views
6

Esistono applicazioni open source che dimostrano buone tecniche di online-offline synchronizationdi database, qualcosa come Remember The Milk fa con la loro app iPhone, la modalità offline di Google Gears, ecc.?Eventuali esempi open source di sincronizzazione offline-online?

+0

Qualsiasi client IMAP? – derobert

+0

Ho pensato ai client IMAP, ma IMAP non ha funzionalità complete quando offline, ad esempio i messaggi sono conservati nella posta in uscita e successivamente spostati alla posta inviata, quindi ha disposizioni temporanee ... questo è il meglio che posso spiegare in una breve frase sul perché IMAP non è un buon esempio. –

+0

@Marc Preferibilmente Python. –

risposta

7

Il Unison file synchronizer è un magnifico strumento, ma il suo codice sorgente non è per i deboli di cuore. Non hai chiesto documenti accademici, ma ho scritto one I'm proud of. C'era un codice perl per andare con quello, ma non sono sicuro che sia di qualche utilità. Se vuoi, mandami una mail

+0

Grazie a Norman, la carta dovrebbe essere d'aiuto, darà un'occhiata. Tuttavia, i concetti del documento possono essere utilizzati per lavorare con la sincronizzazione del database (domanda ingenua?), Scusate se non sono stato chiaro prima di osservare specificamente la sincronizzazione dei dati strutturati. –

+0

Sicuramente le idee delle operazioni di registrazione e l'inserimento del log in una forma normale saranno utili per i database. Mi aspetto che i dettagli dell'algebra siano diversi. Verificate anche il nuovo lavoro di Pierce su "programmazione dell'obiettivo", motivato dal problema dell'aggiornamento della vista del database. –

3

google gears è di per sé open source. vorrete dare un'occhiata al modulo localserver.

check out code.google.com/p/gears per il sito di sviluppo principale e the LocalServer source. Anche se gears è un software complesso perché ha molti componenti (interfaccia per i plugin del browser, integrazione con javascript, integrazione SQLite, ecc ...), è abbastanza ben calcolato, quindi la fonte LocalServer è abbastanza facile da seguire.

+0

Per quanto ho capito, Gears fornisce un database offline e un'API per rilevare la connettività online/offline, NON esegue alcun tipo di sincronizzazione. I programmatori di applicazioni devono farlo da soli. –

+0

Thx Swaroop. Mi sbagliavo! – Aaron

2

Ho esperienza con SymmetricDS ed è davvero buono. Può gestire molti scenari. È open source, quindi può essere modificato o esteso per alcuni casi speciali. Come dicono gli autori, è stato sviluppato per un progetto di vita reale, quindi puoi essere sicuro che funziona davvero bene (e funziona anche per me).

Solo una cosa. SymmetricDS si basa su trigger di database, quindi il tuo database deve supportare i trigger.

2

L'articolo di Wikipedia su Operational Transform fa riferimento a quattro applicazioni open source: Ace, Gobby, Subetheredit e So6. Forse uno di loro è in grado di usarlo come punto di partenza per te.

Anche se potrebbero non funzionare direttamente con il DBMS scelto, sarebbe opportuno considerare l'operazione Transform come base della sincronizzazione.

+0

Grazie per questa informazione.Non sapevo che ci fosse un intero campo dedicato a questo! Ho trovato interessante questo anche nel contesto del talk [Google Waves "Under The Hood" (http://www.youtube.com/watch?v=uOFzWZrsPV0) dove parlano di Operational Transform per i primi 20 minuti . –

+0

Avevo intenzione di tornare qui e menzionare Google Wave, ma tu sei un passo avanti! –

0

L'articolo Create offline web applications on mobile and stationary devices with CouchDB descrive una semplice app di gestione dell'inventario. con il codice sorgente. Utilizza CouchDB replication support. CouchDB è comunque un database NoSQL (orientato al documento, per essere più specifico). Se stai cercando una soluzione per RDBMS, lo database synchronization provider nel framework Sync di Microsoft sfrutta il meccanismo di tracciamento delle modifiche integrato nel server SQL 2008. Microsoft descrive anche a service-oriented approach nella documentazione del blocco di applicazioni non in linea di Smart Client. Questo approccio è più flessibile in alcuni casi rispetto all'utilizzo della replica-unione nell'approccio orientato ai dati.