tutorial pagina oficial sql database-design sqlite replication embedded-database

pagina - sqlite tutorial



¿Admite SQLite la replicación? (6)

En una aplicación que incorpora SQLite3 y utiliza una base de datos en memoria, ¿es posible replicar la base de datos entre dos instancias en ejecución de la aplicación? Podría hacerlo a mano con un protocolo homebrew que duplique todos mis accesos a bases de datos, pero parece que algo debería hacerse dentro de la capa DB.


¿Unísono? Lo mejor que se podía hacer, sin embargo, era el repuesto dinámico, porque SQLite db en un solo archivo monolítico. No se podía hacer round-robin entre las dos "instancias". El repuesto dinámico no está mal, simplemente toma la otra aplicación + db sin mucho alboroto, en comparación con MySQL maestro-esclavo o activo-pasivo donde hay alguna intervención manual que no es fácil. La replicación de MySQL pasa por SQL, no solo diffs como unison / rsync. Pero al unísono tienes maestro maestro.


Enfoque de fuerza bruta: envíele el comando ".dump" para crear una representación de texto de los datos. Lea esos datos en la segunda base de datos. No estoy seguro de que puedas usar eso.

Si necesita una actualización detallada (enviando una copia de cada uno a la otra copia), eche un vistazo a sqlite3_update_hook

Pero, ¿cómo planeas manejar los errores? Por ejemplo, ¿qué sucede cuando la copia del DB en la aplicación 2 no puede hacer una actualización por alguna razón?

Para solucionar esto, mueva la base de datos a un proceso de servidor y haga que las dos aplicaciones hablen con ella.


Fuera de la caja, no. Hay una pequeña cantidad de opciones de terceros:

Sincronización SQLite: https://ampliapps.com/sqlite-sync/ Este parece atractivo porque puede replicarse en otras bases de datos además de SQLite, y no modifica el motor SQLite. No lo he intentado todavía

Litereplica: http://litereplica.io/ Solo de una manera. Parece haber estado alrededor un poco.

LiteSync: http://litesync.io/ Replicación bidireccional. Bastante nuevo, pero una evolución de Litereplica tan probablemente más maduro de lo que parece. He intentado esto un poco y parece funcionar sin problemas, con algunos errores que el desarrollador está mirando. Tienes que usar el motor SQLite modificado del desarrollador, que parece una dependencia preocupante. Tampoco tienes mucho control, por ejemplo, no puedes decir replicar ahora sin reabrir la base de datos.


No, no porque el alcance del proyecto es una base de datos simple en proceso. Pero debido a que la base de datos es solo un archivo, puede escribir su propia secuencia de comandos de replicación basada en operaciones simples de copia de archivos, rsync o algo similar.

Si realmente desea un tipo de RDBMS cliente / servidor basado en SQLite, puede echarle un vistazo a SQLiteDBMS .


Si desea la replicación en una base de datos en memoria, debe consultar berkeley DB (BDB) . Sin embargo, el modelo de datos para BDB es un diccionario de cadena de caracteres, por lo que se pierde la flexibilidad de SQL. Además, tiene una licencia de tres cláusulas, por lo que si su proyecto es comercial, debe obtener licencias.