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.