SQLite — serverless реляционная СУБД с открытым исходным кодом. Вся база данных хранится в одном файле на диске (.db или .sqlite). Не требует сервера, настройки прав, сетевых портов. Приложение подключается напрямую к файлу через библиотеку (C, Python, Java, PHP и другие). Проект находится в публичном домене — нет лицензионных ограничений.
Технические характеристики
- Поддерживает SQL-92 почти полностью (нет RIGHT JOIN, FULL OUTER JOIN в старых версиях, добавлены в 3.39.0).
- Максимальный размер БД: 281 ТБ (теоретически), на практике до нескольких ГБ.
- Конкурентные операции: многие читатели или один писатель (WAL-режим снижает блокировки).
- Транзакции с ACID-свойствами.
- Встроена в стандартную библиотеку Python (модуль
sqlite3).
Когда использовать
SQLite — правильный выбор для: локального кеша приложения, конфигурационных файлов вместо XML/JSON, embedded-устройств, прототипов, тестовой среды. Не подходит для: высококонкурентных веб-приложений с множеством одновременных записей, распределённых систем, данных объёмом >100 ГБ.
История
SQLite создан Ричардом Хиппом в 2000 году для проекта ВМС США — нужна была БД без администрирования. Первый публичный релиз — август 2000 года. Версия 3.0 (2004) ввела ACID-транзакции. По данным sqlite.org (2024), в мире активно используется более 1 триллиона SQLite-файлов. Встроена в Firefox (хранение истории), Android, iOS, macOS, Chrome.
Связь с хостингом
На виртуальном хостинге SQLite — распространённый выбор для небольших сайтов на Python/PHP, когда сервер MySQL или PostgreSQL недоступен или избыточен. Django, Flask, Ruby on Rails поддерживают SQLite из коробки для development и небольших production-сайтов с низкой нагрузкой. На нагруженных сайтах SQLite заменяют на MySQL или PostgreSQL.
SQLite в серверных применениях
SQLite — встраиваемая СУБД без сервера (serverless), хранящая базу в одном файле. Используется в Ghost CMS (development-режим), Django (тестирование), Electron-приложениях. Ограничения для хостинга: один файл не масштабируется на несколько серверов, параллельная запись блокируется (WAL-режим смягчает проблему), нет пользователей и прав доступа. SQLite поддерживает ACID-транзакции и большую часть SQL-стандарта. Производительность: 100 000+ операций чтения в секунду, запись ограничена блокировкой файла. Размер базы -- до нескольких терабайт, хотя рекомендуется до 10--100 ГБ.
SQLite vs MySQL vs PostgreSQL
MySQL и PostgreSQL -- клиент-серверные СУБД с сетевым доступом, аутентификацией и параллельными транзакциями. SQLite -- embedded СУБД для одного процесса. Для production веб-приложений SQLite применяют только в специфичных случаях: read-heavy с минимальной записью, Litestream (репликация SQLite через S3). Expensify и Notion используют SQLite в production с custom репликацией. CouchDB использует JSON-документы -- альтернатива SQLite для неструктурированных данных. Экспорт БД SQLite через sqlite3 database.db .dump > backup.sql.
История SQLite
SQLite создал Ричард Хипп (D. Richard Hipp) в 2000 году для проекта ВМФ США. Первый релиз -- август 2000. SQLite 3.0 (2004) -- major redesign с улучшенным SQL. SQLite 3.35 (2021) добавил RETURNING и ALTER TABLE DROP COLUMN. По данным SQLite.org, это самая широко используемая СУБД в мире -- установлена на каждом Android, iOS устройстве, в Firefox, Chrome, iTunes. Публичное достояние (Public Domain) -- нет лицензионных ограничений.
SQLite также применяется как встроенная база для мобильных приложений, браузеров (Firefox использует SQLite для истории и закладок) и инструментов разработки. В контексте виртуального хостинга SQLite избавляет от необходимости выделять ресурсы сервера баз данных для простых приложений.