Ответ
SQLite — это встраиваемая, автономная, безсерверная, транзакционная реляционная система управления базами данных (СУБД), реализованная в виде библиотеки на языке C.
Ключевые характеристики:
- Без сервера (Serverless): SQLite не использует клиент-серверную модель. Библиотека напрямую работает с файлом БД на диске. Нет отдельного серверного процесса.
- Встраиваемая (Embedded): Библиотека линкуется с приложением, становясь его частью. Это делает развертывание простым.
- Один файл: Вся база данных (таблицы, индексы, данные) хранится в одном кроссплатформенном файле на диске.
- Поддержка SQL: Поддерживает большую часть стандарта SQL-92, включая транзакции, представления, триггеры, внешние ключи.
- Типизация: Использует динамическую типизацию (manifest typing). Тип значения привязан к самому значению, а не к столбцу. Столбцы могут хранить значения любого типа.
Типичные сценарии использования:
- Локальное хранилище для desktop/mobile приложений (браузеры, медиаплееры, мобильные ОС).
- Встроенная БД для IoT и устройств с ограниченными ресурсами.
- Формат файла для приложений (замена собственным бинарным форматам).
- База данных для тестирования и прототипирования благодаря простоте настройки.
- Кэш или промежуточное хранилище для веб-приложений.
Пример подключения в Java (через JDBC-драйвер org.xerial:sqlite-jdbc):
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
// URL указывает на файл БД. Если файла нет, он будет создан.
String url = "jdbc:sqlite:/path/to/database.db";
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");
stmt.execute("INSERT INTO users (name) VALUES ('Alice')");
conn.close();
Ограничения и когда НЕ использовать SQLite:
- Высоконагруженные веб-сайты с большим количеством параллельных записей.
- Системы, требующие сетевого доступа к БД (нет встроенного сетевого протокола).
- Очень большие наборы данных (хотя поддерживает терабайты, архитектура оптимизирована для меньших объемов).
- Ситуации, требующие сложных прав доступа пользователей (нет встроенной системы пользователей).