Pregunta

En una aplicación que incrusta SQLite3 y utiliza una base de datos en memoria, es posible replicar la base de datos entre dos instancias de funcionamiento de la aplicación? Podría hacer esto a mano con un protocolo homebrew duplicar todos los accesos mi DB, pero parece como algo que se debe hacer dentro de la capa de base de datos.

¿Fue útil?

Solución

método de fuerza bruta: envíe el comando ".dump" para crear una representación de texto de los datos. Leído que en los datos en la segunda base de datos. No está seguro de que puede utilizar.

Si necesita una actualización de grano fino (el envío de una copia de cada una hasta la otra copia), echar un vistazo a sqlite3_update_hook

Pero, ¿cómo va a manejar los errores? Por ejemplo, ¿qué ocurre cuando la copia de la base de datos en app2 no puede realizar una actualización por alguna razón?

Para resolver esto, mover la base de datos a un proceso de servidor y tienen las dos aplicaciones hablar con él.

Otros consejos

Fuera de la caja, no. Hay un pequeño número de opciones de otros fabricantes:

SQLite sincronización: https://ampliapps.com/sqlite-sync/ Éste parece atractiva, ya que puede replicarse en otras bases de datos, así como SQLite, y no modificar el motor SQLite. No he probado todavía.

Litereplica: http://litereplica.io/ una sola manera. Parece haber sido un poco.

LiteSync: http://litesync.io/ la replicación bidireccional. Bastante nuevo, sino una evolución de Litereplica así que probablemente más maduro de lo que parece. He intentado esto un poco y parece que no funciona sin problemas, con algunos errores, que el desarrollador está mirando. Usted tiene que utilizar el motor SQLite modificada del desarrollador, que parece una dependencia preocupante. También no tienes mucho control, por ejemplo no se puede decir ahora replicar sin volver a abrir la base de datos.

Lsyncd - Vivo sincronización (espejo) Daemon pueden ser de utilidad aquí. Utiliza rsync para hacer la replicación continua en el nivel de archivo.

Si desea replicación en una base de datos en memoria que hay que buscar la dirección Berkeley DB (BDB) . Sin embargo, el modelo de datos para BDB es el diccionario de cadena de cadena, por lo que perder la flexibilidad de SQL. además de que tiene una licencia de tres cláusula, por lo que si su proyecto es comercial que necesita para obtener licencias.

No se lo hace no porque el alcance del proyecto es ser un simple base de datos en proceso. Pero debido a que la base de datos es sólo un único archivo, se podría escribir su propio guión replicación basada en las operaciones de copia de archivos planos, rsync o algo similar.

Si realmente quiere un tipo de SQLite cliente / servidor con base de RDBMS, que podría echar un vistazo a SQLiteDBMS .

Unison? Mejor que podría hacer era a pesar de repuesto de emergencia, porque db SQLite en un archivo monolítico. No podía round robin entre los dos "instancias". repuesto en marcha no es malo, sólo tiene que recoger la otra aplicación + db sin mucho alboroto, comparar a MySQL maestro-esclavo o activo-pasivo, donde hay una cierta intervención manual que no es fácil. La replicación MySQL pasa alrededor de SQL, no sólo como Diffs unísono / rsync. Pero con al unísono tiene maestro-maestro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top