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