SQLite
Тема дорожной карты · Backend разработчик
SQLite — автономный, безсерверный, не требующий конфигурации движок реляционных баз данных, хранящий всю базу данных — таблицы, индексы и данные — в единственном кроссплатформенном файле, что делает его наиболее широко развёртываемой SQL-базой данных в мире (присутствует в каждом устройстве на Android и iOS, браузере и настольном приложении). SQLite реализует бо́льшую часть SQL-92, поддерживает ACID-транзакции через Write-Ahead Logging (WAL-режим, включаемый через PRAGMA journal_mode=WAL) и запрашивается привычным SQL: CREATE TABLE, INSERT INTO, SELECT ... JOIN, UPDATE и DELETE. В бэкенд-разработке SQLite превосходит как локальная база данных для разработки (устраняя необходимость запускать Docker-контейнер с PostgreSQL или MySQL в процессе разработки), как тестовый стенд (каждый тест получает in-memory :memory:-базу данных, создаваемую за микросекунды) и как основная продакшен-база данных для нагрузок от низких до средних — именно такую архитектуру использует devroadmap.ru через better-sqlite3 в Node.js. Модель конкурентного доступа SQLite (блокировки записи на уровне базы данных) ограничивает пропускную способность записи по сравнению с PostgreSQL или MySQL, но WAL-режим позволяет параллельное чтение одновременно с единственным записывающим и поддерживает тысячи запросов чтения в секунду на современных SSD. Миграции для SQLite управляются теми же инструментами, что и для других SQL-баз данных — Flyway, Alembic или Drizzle ORM (drizzle-kit push), — а библиотека better-sqlite3 в Node.js предоставляет синхронный, высокопроизводительный API, избегающий сложности с callback-ами при сохранении полной выразительности SQL.
Как это работает
SQLite используют ACID-транзакции, декларативный SQL, реляционную схему. PostgreSQL — современный дефолт для новых проектов (богатая типизация, JSON-поддержка, расширения, MVCC); MySQL/MariaDB всё ещё распространён (legacy + WordPress); SQLite — для маленьких single-host (удивительно мощный); CockroachDB / YugabyteDB — для распределённого SQL. Стратегия индексов, план запроса (EXPLAIN), connection pooling — операционные основы. Миграции через Alembic, Flyway, Liquibase или фреймворк-специфичные тулы.
Когда применять
Postgres по умолчанию для любого нового проекта — широкий feature set, зрелая эксплуатация, JSON и full-text встроены. MySQL — только если команда или хостинг уже на нём. SQLite — для embedded или первых 10к юзеров (буквально — масштабируется дальше, чем думают). Distributed SQL (Cockroach, Yugabyte, TiDB) — только когда переросли primary-replica Postgres; эта точка гораздо дальше, чем продают вендоры.
Типичные ошибки
Ловушки SQLite: пропущенные индексы на колонках в WHERE / JOIN (один медленный запрос валит БД); N+1 паттерны от ORM (eager-load явно); долгие транзакции держат локи (делите на меньшие записи); не анализируете план запросов перед деплоем (EXPLAIN ANALYZE); pool соединений мал или велик (начните с max_connections / replica_count, тюньте по наблюдениям).