intermediate
Embedded database use cases
Выбирайте SQLite для local files, mobile/desktop apps, edge runtimes, fixtures и simple durable state.
SQLite — библиотека в процессе приложения, без отдельного сервера БД. Один файл (или in-memory) с полным SQL и ACID в компактном виде.
Хорошие сценарии:
- Мобильные и desktop-приложения с локальным durable state
- Edge functions и небольшие сервисы с умеренной конкуренцией
- Интеграционные тесты и fixtures (быстрый изолированный файл на тест)
- CLI, браузер (WASM), встроенные устройства
- Прототипирование до перехода на server database
-- Типичный паттерн при открытии приложения
PRAGMA foreign_keys = ON;
PRAGMA journal_mode = WAL; -- лучше для concurrent readers
CREATE TABLE IF NOT EXISTS settings (
key TEXT PRIMARY KEY,
value TEXT NOT NULL
);
Выбирайте SQLite, когда единица деплоя — один инстанс приложения, объём данных умеренный, а простота эксплуатации важнее горизонтального масштаба.
На интервью: embedded vs client/server; WAL mode; когда SQLite — осознанный выбор продукта, а не «игрушечная БД».
Типовые ошибки: SQLite на NFS/сетевых дисках; ожидание семантики multi-writer сервера; без pragma foreign_keys; нет миграций для установленных баз.
Компромисс — встроенное хранение без ops против ограниченной конкуренции записи и enterprise DBA tooling.
Чеклист:
- SQLite под single-file co-located workloads.
- WAL и foreign_keys по умолчанию в приложении.
- Миграции схемы для установленной базы.
- Критерии перехода на PostgreSQL/MySQL.