2009-03-21 23 views
6

¿Hay alguna aplicación de código abierto que demuestre buenas técnicas de online-offline synchronizationde bases de datos, algo así como Remember The Milk hace con su aplicación de iPhone, modo fuera de línea de Google Gears, etc.?¿Hay ejemplos de código abierto de sincronización fuera de línea?

+0

¿Algún cliente IMAP? – derobert

+0

Pensé en clientes IMAP, pero IMAP no tiene funcionalidad completa cuando no está conectado, por ejemplo, los mensajes se guardan en la bandeja de salida y luego se cambian a correos enviados, por lo que tiene arreglos temporales ... esto es lo mejor que puedo explicar una breve oración sobre por qué IMAP no es un buen ejemplo. –

+0

@Marc Preferiblemente Python. –

Respuesta

7

La Unison file synchronizer es una herramienta magnífica, pero su código fuente no es para corazones débiles. No solicitó documentos académicos pero escribí one I'm proud of. Hubo algún código perl para ir con eso, pero no estoy seguro si es de alguna utilidad. Si lo deseas, envíame un correo electrónico.

+0

Gracias Norman, el documento debería ser útil, echaremos un vistazo. Sin embargo, ¿se pueden usar los conceptos en el documento para trabajar para la sincronización de la base de datos (pregunta ingenua?), Lo siento si no estaba claro antes de que estoy buscando específicamente la sincronización de datos estructurados. –

+0

Ciertamente, las ideas de las operaciones de registro y poner el registro en una forma normal serán útiles para las bases de datos. Espero que los detalles del álgebra sean diferentes. También consulte el nuevo trabajo de Pierce sobre "programación de lentes", que está motivado por el problema de actualización de la vista de la base de datos. –

3

google gears es de código abierto. querrás mirar el módulo localserver.

echa un vistazo a code.google.com/p/gears para el sitio principal del desarrollador, y the LocalServer source. Aunque gears es una pieza compleja de software porque tiene muchos componentes (interfaz de complemento de navegador, integración con javascript, integración de SQLite, etc.), está bastante bien factorizada, por lo que la fuente de LocalServer es bastante fácil de seguir.

+0

Según tengo entendido, Gears proporciona una base de datos fuera de línea y una API para detectar conectividad en línea/fuera de línea, NO realiza ningún tipo de sincronización en sí misma. Los programadores de aplicaciones tienen que hacer eso ellos mismos. –

+0

Thx Swaroop. ¡Estaba equivocado! – Aaron

2

Tengo experiencia con SymmetricDS y es realmente bueno. Puede manejar una gran cantidad de escenarios. Es de código abierto, por lo que puede modificarse o ampliarse para algunos casos especiales. Como dicen los autores, fue desarrollado para un proyecto de la vida real, así que puedes estar seguro de que realmente funciona bien (y también funciona para mí).

Solo una cosa. SymmetricDS se basa en desencadenadores de base de datos, por lo que su base de datos debe admitir activadores.

2

El artículo de Wikipedia en Operational Transform hace referencia a cuatro aplicaciones de código abierto: Ace, Gobby, Subetheredit y So6. Quizás uno de ellos puede usarse como punto de partida para usted.

Si bien es posible que no funcionen directamente con el DBMS de su elección, valdría la pena considerar Operation Transform como base de su sincronización.

+0

Gracias por esta información.¡No sabía que había todo un campo dedicado a esto! Encontré esto interesante también en el contexto de la charla [Google Waves "Under The Hood"] (http://www.youtube.com/watch?v=uOFzWZrsPV0) donde hablan de Transformación operativa durante los primeros 20 minutos . –

+0

He tenido la intención de volver aquí y mencionar a Google Wave, ¡pero estás un paso por delante! –

0

El artículo Create offline web applications on mobile and stationary devices with CouchDB describe una sencilla aplicación de gestión de inventario. con el código fuente. Utiliza CouchDB's replication support. CouchDB es una base de datos NoSQL (documento orientado, para ser más específico). Si está buscando una solución para RDBMS, el database synchronization provider en el marco Sync de Microsoft aprovecha el mecanismo de seguimiento de cambios creado en SQL Server 2008. Microsoft también describe a service-oriented approach en su documentación del Bloque de aplicaciones sin conexión de Smart Client. Este enfoque es más flexible en algunos casos que usar la duplicación de mezcla en el enfoque orientado a datos.

Cuestiones relacionadas