Що таке файл SQLite?
Файл із розширенням .sqlite – це легкий файл бази даних SQL, створений за допомогою програмного забезпечення SQLite. Це сама база даних у файлі, яка реалізує самодостатній, повнофункціональний, високонадійний SQL механізм бази даних. Файли бази даних SQLite можна використовувати для обміну багатим вмістом між системами шляхом простого обміну цими файлами через мережу. Майже всі мобільні телефони та комп’ютери використовують SQLite для зберігання та обміну даними, а також є вибором формату файлу для кросплатформних програм. Завдяки компактному використанню та простоті використання він поставляється в комплекті з іншими програмами. Прив’язки SQLite існують для таких мов програмування, як C, C#, C++, Java, PHP, та багато інших.
Формат файлу SQLite
Насправді SQLite — це бібліотека мови C, яка реалізує RDBMS SQLite за допомогою формату файлу SQLite. З еволюцією нових пристроїв щодня, його формат файлу зберігається зворотно сумісним для розміщення старіших пристроїв. Формат файлу SQLite розглядається як довготривалий архівний формат для даних.
Файл бази даних
База даних SQLite повністю підтримується за допомогою двох файлів.
- Основний файл бази даних - містить повний стан бази даних SQLite
- Журнал відкату - зберігає додаткову інформацію у другому файлі та використовується під час виконання транзакцій. Якщо SQLite перебуває в режимі WAL, зберігається файл журналу головки запису.
Файл журналу
Цей файл призначений для зберігання всієї інформації, яка зберігається на випадок, якщо останню транзакцію не вдалося завершити в таких випадках, як збій комп’ютера. Цей файл використовується для відновлення файлу бази даних до узгодженого стану.
Сторінки
Основний файл бази даних SQLite складається з однієї або кількох сторінок. У будь-який момент часу кожна сторінка в основній базі даних має одноразове використання, яке є одним із таких:
- Сторінка блокування байтів
- Сторінка безкоштовного списку
- Основна сторінка безкоштовного списку
- Сторінка вільного списку
- Сторінка b-дерева
- Внутрішня сторінка таблиці b-tree
- Таблиця b-дерева листової сторінки
- Внутрішня сторінка b-дерева індексу
- Індексна сторінка b-дерева
- Сторінка переповнення корисного навантаження
- Сторінка покажчика карти
Розмір файлів бази даних SQLite може коливатися від кількох кілобайт до кількох гігабайт.
Заголовок SQLite
Заголовок бази даних SQLite розташований у перших 100 байтах файлу бази даних. Кожен дійсний файл бази даних SQLite починається з 16 байтів (у шістнадцятковому форматі): 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00. Подробиці полів заголовка наведено в наступній таблиці.
Зсув | Розмір | Опис |
---|---|---|
0 | 16 | Рядок заголовка: “SQLite format 3\000” |
16 | 2 | Розмір сторінки бази даних у байтах. Має бути степенем двійки від 512 до 32768 включно або значення 1, що відповідає розміру сторінки 65536. |
18 | 1 | Версія запису формату файлу. 1 для спадщини; 2 для WAL. |
19 | 1 | Прочитана версія формату файлу. 1 для спадщини; 2 для WAL. |
20 | 1 | Байт невикористаного «зарезервованого» простору в кінці кожної сторінки. Зазвичай 0. |
21 | 1 | Максимальна частка вбудованого корисного навантаження. Має бути 64. |
22 | 1 | Мінімальна частка вбудованого корисного навантаження. Має бути 32. |
23 | 1 | Частка корисного навантаження листа. Має бути 32. |
24 | 4 | Лічильник змін файлів. |
28 | 4 | Розмір файлу бази даних у сторінках. «Розмір бази даних у заголовку». |
32 | 4 | Номер сторінки першої магістральної сторінки безкоштовного списку. |
36 | 4 | Загальна кількість сторінок вільного списку. |
40 | 4 | Схема cookie. |
44 | 4 | Номер формату схеми. Підтримувані формати схем: 1, 2, 3 і 4. |
48 | 4 | Розмір кешу сторінки за умовчанням. |
52 | 4 | Номер сторінки найбільшої кореневої сторінки b-дерева в режимах автоматичного вакуумування або інкрементального вакуумування або нуль в інших випадках. |
56 | 4 | Кодування тексту бази даних. Значення 1 означає UTF-8. Значення 2 означає UTF-16le. Значення 3 означає UTF-16be. |
60 | 4 | «Версія користувача», прочитана та встановлена прагмою user_version. |
64 | 4 | Істина (не нуль) для режиму інкрементного вакууму. Неправда (нуль) інакше. |
68 | 4 | «Ідентифікатор програми», встановлений PRAGMA application_id. |
72 | 20 | Зарезервовано для розширення. Має бути нуль. |
92 | 4 | Версія-дійсна-для номера. |
96 | 4 | НОМЕР_ВЕРСІЇ_SQLITE |