domingo, 29 de diciembre de 2013

Deep Sqlite I (El análisis)

Cada día se ve mas Sqlite como base de datos  gracias a los "smartphone" y no solo a ellos a firefox, skype, dropbox y muchos mas utiliza esta tecnología para almacenar su información.

Esta vez nos vamos a centrar en la cabecera de cualquier archivo sqlite (que no este cifrado), en los 100 primeros bytes encontramos informacion imporante de sqlite (The SQLite Database File Format).

Figura 1. Cabecera de un archivo Sqlite
Ahora que tenemos la estructura de la cabecera vamos a ver un ejemplo abriendo con un editor hexadecimal para analizar los primeros 100 bytes, en este ejemplo vamos a ver una base de datos de Skype (main.db)

Figura 2. Cabecera Sqlite

53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00 : Cadena escrita que termina con "00"
10 00 : Tamaño de la página 4096 bytes
01: No dispone de modo WAL para escritura
01: No dispone de modo WAL para lectura
0000134C: El fichero ha sido cambiado 4.940 veces
0000011D: El fichero contiene 285 páginas
00000119: Número de la primera página libre troncal
00000001: Codificación de texto UTF-8
00000000: Al estar todo a 0, no hay auto-vacuum
002DE225 : Equivale a la version de la Base de datos

Write Ahead Logging es un método de rollback desde la versión 3.x , el cual invierte el proceso tradicional de rollback. En teoría los cambios de una base de datos son escritos en el mismo archivo original llevando un control en un registro de modificaciones en otro fichero del cual podrá ser recuperado si algo no fue escrito de forma correcta por algún problema.

La tecnología WAL crea un nuevo fichero con el mismo nombre agregando el (-wal) al final, donde se harán los cambios y se sobrescribirá el original cuando de se ejecute la orden de sobrescritura.

En el siguiente post, vamos hablar de las "hojas", arboles y demás ;)





Related Posts Plugin for WordPress, Blogger...