web-dev-qa-db-fra.com

Qu'est-ce que la base de données SQLite "-journal" dans Android?

Dans le répertoire de base de données de mon application andoid (/data/data/com.me.myApp/databases), pour chaque base de données sqlite que je crée, il existe une base de données correspondante du même nom avec "-journal" ajouté à son nom.

par exemple: myDatabase, myDatabase-journal, myOtherDatabase.db, myOtherDatabase.db-journal

Qu'est-ce que c'est?

et,

Si je fournis des bases de données pré-remplies pour mon application (selon: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-Android-applications/ =) dois-je également les inclure? '

24
ddouglascarr

De tels fichiers -journal N'ont pas besoin d'être (et ne devraient pas ) être distribués.

En effet, les différents fichiers journaux représentent des données temporaires (réf. tilisation de fichiers disque temporaires par SQLite ) utilisées par SQLite. En particulier, un fichier -journal Est un journal de restauration .

Un journal de restauration est un fichier temporaire utilisé pour implémenter les capacités de validation et de restauration atomiques dans SQLite. (Pour une discussion détaillée sur la façon dont cela fonctionne, consultez le document séparé intitulé Atomic Commit In SQLite.) Le journal de restauration est toujours situé dans le même répertoire que le fichier de base de données et porte le même nom que le fichier de base de données, sauf avec les 8 caractères " -journal "en annexe.

Le journal de restauration est généralement créé lors du premier démarrage d'une transaction et est généralement supprimé lorsqu'une transaction est validée ou annulée. Le fichier journal de restauration est essentiel pour implémenter les capacités de validation et de restauration atomiques de SQLite. Sans journal de restauration, SQLite ne serait pas en mesure de restaurer une transaction incomplète, et si un plantage ou une coupure de courant se produisait au milieu d'une transaction, la base de données entière serait probablement corrompue sans journal de restauration.

En général, ces fichiers -journal Ne devraient exister que lorsque il existe une base de données SQLite ouverte - ou plutôt une transaction en cours d'exécution - mais peuvent être contrôlés via PRAGMA journal_mode . Avec les paramètres pragma par défaut, les fichiers -journal Seront supprimés.

Le mode de journalisation DELETE est le comportement normal. En mode SUPPRIMER, le journal de restauration est supprimé à la fin de chaque transaction. En effet, l'opération de suppression est l'action qui provoque la validation de la transaction.

Assurez-vous de uniquement copier les fichiers de base de données réels lorsque la base de données est pas ouvert et tous les journaux ont été supprimés (ou effacés) par SQLite lui-même; cela implique que toutes les transactions ont été effectuées et que la base de données est dans un état cohérent.

23
user2864740