Что такое 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 делают её надёжной, но для тяжёлой сетевой многопользовательской записи берут серверные СУБД.
Проверьте себя
1. Чем SQLite принципиально отличается от PostgreSQL или MySQL?
AОн не реляционный, а документный
BОн встраивается в приложение и хранит базу в одном файле без сервера
CОн работает только в браузере
DОн не поддерживает SQL
2. Что физически представляет собой база данных SQLite?
AКаталог с множеством файлов
BЗапись в системном реестре
CОдин обычный файл на диске
DСетевое соединение с сервером
3. В каком случае SQLite — НЕ лучший выбор?
AЛокальное хранилище мобильного приложения
BБаза для прототипа или обучения
CСервер с десятками клиентов, пишущих одновременно по сети
DОдноразовая база для тестов
Поддержать проект