SQLite: база данных в одном файле
Коротко: SQLite — небольшая встраиваемая база данных SQL, которой совсем не нужен сервер и которая хранит все данные в одном файле.
Подробнее: Большинство баз данных (PostgreSQL, MySQL) работают как отдельный сервер, к которому подключаются программы. SQLite же — библиотека, находящаяся прямо внутри программы и читающая и пишущая файл. Это самая распространённая в мире база данных: в каждом смартфоне, браузере и во многих приложениях.
Подробности
Свойства
- Без установки, без настройки, без сервера.
- Один файл базы данных (
.db,.sqlite), легко копировать и резервировать. - Поддерживает в основном обычный SQL, транзакции (ACID), индексы, триггеры, представления, функции JSON.
- Очень быстро для чтения и малых и средних объёмов данных (до многих гигабайт).
- Общественное достояние, очень хорошо протестирована.
Пример
sqlite3 test.db
sqlite> CREATE TABLE animal (id INTEGER PRIMARY KEY, name TEXT, age INT);
sqlite> INSERT INTO animal (name, age) VALUES ('Mia', 4);
sqlite> SELECT * FROM animal;
В Python sqlite3 входит в стандартную библиотеку:
import sqlite3
con = sqlite3.connect('test.db')
print(con.execute('SELECT name FROM animal').fetchall())Пределы
SQLite допускает много читателей, но только одного писателя одновременно (в режиме WAL читатели тем временем продолжают). Для множества одновременных записей с нескольких серверов лучше настоящий сервер баз данных. Собственного управления пользователями нет; защита — в файловой системе. Типы гибкие («type affinity»), не строгие, кроме таблиц STRICT. Сетевые файловые системы рискованны для файла.
Применение
Мобильные приложения, настольные программы, браузеры (закладки, история), хранилище конфигурации и кэша, небольшие и средние сайты, тесты, анализ данных с файлами и прототипы. Современные варианты и расширения, такие как libSQL/Turso и Litestream (репликация), приносят SQLite и в серверные среды. Когда приложение растёт, SQL часто можно перенести на PostgreSQL.
См. также: SQL, PostgreSQL, Транзакции и ACID, MySQL