Что такое файл SQLite?
Файл с расширением .sqlite представляет собой облегченный файл базы данных SQL, созданный с помощью программного обеспечения SQLite. Это база данных в самом файле, реализующая автономный, полнофункциональный, высоконадежный механизм базы данных SQL. Файлы базы данных SQLite можно использовать для обмена богатым содержимым между системами путем простого обмена этими файлами по сети. Почти все мобильные телефоны и компьютеры используют SQLite для хранения и обмена данными, и это выбор формата файла для кросс-платформенных приложений. Благодаря компактному использованию и простоте использования, он входит в состав других приложений. Привязки SQLite существуют для таких языков программирования, как C, C#, C++, Java, PHP, и многие другие.
Формат файла SQLite
SQLite на самом деле является библиотекой C-Language, которая реализует СУБД SQLite с использованием формата файлов SQLite. С появлением новых устройств каждый божий день его формат файла был сохранен с обратной совместимостью для более старых устройств. Формат файла SQLite рассматривается как формат долгосрочного архивирования данных.
Файл базы данных
База данных SQLite полностью поддерживается с помощью двух файлов.
- Файл основной базы данных — содержит полное состояние базы данных SQLite.
- Журнал отката — хранит дополнительную информацию во втором файле и используется при выполнении транзакций. Если SQLite находится в режиме WAL, сохраняется файл журнала записи.
Файл журнала
Этот файл предназначен для хранения всей информации на случай, если последняя транзакция не может быть завершена в таких случаях, как сбой компьютера. Этот файл используется для восстановления файла базы данных до согласованного состояния.
страниц
Основной файл базы данных SQLite состоит из одной или нескольких страниц. В любой момент времени каждая страница в основной базе данных имеет единственное использование, которое может быть одним из следующих:
- Страница блокировки байта
- Страница бесплатного списка
- Основная страница бесплатного списка
- Листовая страница фрилиста
- Страница B-дерева
- Внутренняя страница таблицы b-tree
- Листовая страница таблицы b-tree
- Внутренняя страница 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 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 | Номер страницы самой большой корневой страницы сбалансированного дерева в режимах автоочистки или инкрементной очистки, или ноль в противном случае. |
56 | 4 | Кодировка текста базы данных. Значение 1 означает UTF-8. Значение 2 означает UTF-16le. Значение 3 означает UTF-16be. |
60 | 4 | “Версия пользователя”, прочитанная и установленная прагмой user_version. |
64 | 4 | Истина (не ноль) для режима инкрементной очистки. False (ноль) в противном случае. |
68 | 4 | Идентификатор приложения, установленный PRAGMA application_id. |
72 | 20 | Зарезервировано для расширения. Должен быть равен нулю. |
92 | 4 | Действительный для версии номер. |
96 | 4 | SQLITE_VERSION_NUMBER |