Что такое SQLite
Знакомимся с SQLite — самой распространённой базой данных в мире.
SQLite — это встраиваемая реляционная база данных, которая хранит все данные в одном обычном файле и работает прямо внутри вашей программы, без отдельного сервера.
База без сервера
Когда говорят «база данных», обычно представляют отдельную программу-сервер: её устанавливают, запускают, она слушает порт, к ней подключаются клиенты по сети. Так устроены PostgreSQL, MySQL, Oracle. SQLite устроен иначе.
SQLite — это не сервер, а библиотека. Она подключается прямо к вашему приложению и работает с базой как с обычным файлом на диске. Нет процесса, который надо запускать; нет порта, логина и пароля; нет администратора. Вся база — это один файл, например app.db. Скопировали файл — скопировали базу. Удалили файл — удалили базу.
Из-за этого SQLite называют встраиваемой (embedded) базой: она встраивается внутрь программы, а не живёт рядом с ней отдельным сервисом.
Самая распространённая СУБД на Земле
Звучит неожиданно, но SQLite установлен на миллиардах устройств. Он есть практически в каждом смартфоне (Android и iOS хранят в нём настройки и данные приложений), в каждом браузере, во многих настольных программах. Его используют, потому что он крошечный (вся библиотека — несколько сотен килобайт), не требует настройки и при этом надёжен: транзакции в SQLite соответствуют принципам ACID, то есть данные не теряются и не «ломаются» при сбое.
Где применяют SQLite
| Область | Зачем тут SQLite |
| Мобильные приложения | локальное хранилище данных на устройстве пользователя |
| Браузеры и десктоп-программы | история, настройки, кэш — в одном файле рядом с программой |
| Прототипы и обучение | не нужно поднимать сервер: создал файл — и пишешь SQL |
| Тесты | быстрая одноразовая база, часто прямо в оперативной памяти |
| Хранение и обмен данными | один файл удобно передавать, как документ |
Когда SQLite НЕ подходит
SQLite прекрасен, но не универсален. Он рассчитан на одно приложение, работающее с базой. Если к данным одновременно пишут десятки клиентов по сети, нужна высокая параллельная нагрузка на запись или доступ по сети между серверами — это задача для PostgreSQL или MySQL. SQLite — про локальность и простоту, а не про большой многопользовательский сервер.
Первый живой пример
Хорошая новость: песочница на этой странице — это и есть SQLite. Любой блок ниже с пометкой SQL вы можете запустить кнопкой и тут же поменять. Вот таблица друзей: создаём её, добавляем строки и выбираем по возрасту.
CREATE TABLE friends (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
city TEXT,
age INTEGER
);
INSERT INTO friends (name, city, age) VALUES
('Аня', 'Москва', 24),
('Борис', 'Санкт-Петербург', 31),
('Вера', 'Казань', 27);
SELECT name, city, age FROM friends ORDER BY age;
Вывод:
Аня|Москва|24 Вера|Казань|27 Борис|Санкт-Петербург|31
Колонки в выводе разделены вертикальной чертой |. Поменяйте сортировку на ORDER BY name и запустите снова — увидите, как меняется порядок.
Итог
- SQLite — встраиваемая база: библиотека внутри программы, вся база — один файл, сервера нет.
- Это самая распространённая СУБД: телефоны, браузеры, десктоп-приложения, тесты, прототипы.
- Транзакции ACID делают её надёжной, но для тяжёлой сетевой многопользовательской записи берут серверные СУБД.