Qu'est-ce que le format de fichier DB-WAL ?
Les fichiers .db-wal sont utilisés par le moteur de base de données SQLite (depuis la version 3.7.0, publiée en juillet 2010) en mode de journalisation WAL (Write-Ahead Logging).
Contenu des fichiers DB-WAL
Les fichiers avec l'extension .db-wal contiennent des données de journalisation pour une base de données SQLite associée. Ces fichiers sont créés et utilisés lorsqu'une base de données est ouverte et activement modifiée. Un fichier .db-wal stocke les modifications validées de la base de données - des pages complètes de la base - qui n'ont pas encore été réécrites (« checkpointed ») dans le fichier .db principal. Cette approche de réécriture est plus rapide que la modification directe des pages de la base de données sur place et garantit la durabilité : en cas de coupure de courant soudaine ou de plantage du système, SQLite peut rejouer le WAL pour récupérer toutes les transactions validées.
Chaque fichier .db-wal commence par un en-tête de 32 octets contenant un nombre magique de 4 octets (0x377f0682 pour les sommes de contrôle en petit-boutiste/little-endian, 0x377f0683 pour le gros-boutiste/big-endian), des valeurs de sel (« salt ») et une somme de contrôle cumulative. Le corps est constitué de trames : un en-tête de trame de 24 octets plus une page complète de base de données par trame. Les valeurs de sel dans l'en-tête invalident les trames obsolètes après un point de contrôle, empêchant les relectures accidentelles.
Utilisation des fichiers DB-WAL
La gestion du journal .db-wal est entièrement automatisée par le moteur SQLite. Un fichier compagnon .db-shm (index de mémoire partagée) est toujours présent aux côtés du WAL tant que la base de données est ouverte. Le fichier .db-wal disparaît automatiquement une fois que toutes les modifications ont été intégrées - le seuil par défaut de wal_autocheckpoint est de 1000 pages. Le mécanisme WAL sous-jacent est largement utilisé sur les appareils mobiles ; les bases de données des applications Android et iOS fonctionnent fréquemment en mode WAL pour améliorer la concurrence et les performances d'écriture.
Sécurité et sûreté
RISQUE : LOWUn fichier .db-wal contient des données inertes, pas du code exécutable, il ne peut donc pas s'exécuter seul. Les risques réels sont opérationnels et non liés à des logiciels malveillants : (1) supprimer ou perdre le -wal alors que la base est ouverte, ou après un plantage, rejette les transactions validées les plus récentes - sauvegardez le -db, le -wal et le -shm ensemble ; (2) le WAL d'une base de données d'application peut contenir des données sensibles non encore intégrées (messages, jetons, historique), traitez-le donc comme confidentiel. Si la base de données parente est chiffrée (SQLCipher/SEE), le -wal l'est aussi.
Détails du format
en brefProgrammes qui ouvrent les fichiers DB-WAL
Détails techniques
spécifications approfondies| Octets magiques | 0x377f0682 à l'offset 0 (sommes de contrôle little-endian) ou 0x377f0683 (big-endian) |
| Taille de l'en-tête | 32 octets contenant le nombre magique, la version du format, la taille de page, la séquence de point de contrôle, la paire de sel et la somme de contrôle |
| Structure de trame | En-tête de trame de 24 octets + une page de base de données complète par trame |
| Taille de page | Correspond à la taille de page de la base de données SQLite parente (généralement 4096 octets) |
| Somme de contrôle | Somme de contrôle cumulative de 8 octets (deux mots de 32 bits) dans chaque en-tête de trame et dans l'en-tête WAL |
| Invalidation par sel | Deux valeurs de sel de 32 bits sont randomisées après chaque point de contrôle, invalidant toutes les trames obsolètes |
| Fichier compagnon | Toujours jumelé à un fichier .db-shm (index de mémoire partagée) tant que la base de données est ouverte |
| Convention de nommage | Nom de fichier de la base de données avec -wal ajouté (ex: mydata.db-wal) |
| Activation | Créé uniquement lorsque la base de données est configurée en mode WAL (PRAGMA journal_mode=WAL) |
| Point de contrôle automatique | Le wal_autocheckpoint par défaut à 1000 pages limite la croissance maximale du WAL avant l'intégration |
| Champ de version du format | L'en-tête WAL encode la version de la bibliothèque SQLite sous la forme 3007000 (SQLite 3.7.0, juillet 2010) |
| Chiffrement | Aucun par défaut ; chiffré lorsque la base de données utilise l'extension SEE ou SQLCipher |
| Publié | SQLite 3.7.0, July 2010 (WAL journaling mode) |
| Dernière version | WAL file format magic 0x377f0682 (little-endian) / 0x377f0683 (big-endian) |
| Standard ouvert | Oui · libre de droits |
| Spécification | www.sqlite.org |
Conversions DB-WAL
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers DB-WAL.