Мы уже рассказывали подробно о том, что такое базы данных, как они устроены, какие бывают и как работают. Вот короткая версия:
- База данных — это способ хранения разных данных в одном месте.
- Внутри базы могут храниться разные данные: фото, текст, музыка, числа, код, ссылки, цены и что угодно ещё.
- Когда говорят про базы данных, чаще всего имеют в виду табличные базы данных — те, где информация хранится в разных таблицах;
- Пример табличной базы — MySQL. Она многое умеет, к ней написано много документации и правил, поэтому начинают обычно с неё.
- Чтобы управлять данными в базе, например добавлять новые записи, удалять старые или что-то искать, используют специальный язык запросов к базе — SQL.
- Эти запросы обрабатывает СУБД — система управления базами данных. Это как движок для сайтов — он выполняет запросы, работает с базой и отдаёт нам результаты.
Получается, нам на компьютере нужна отдельная система, чтобы управлять данными в базе, и обычно это тоже MySQL. Это значит, что все запросы из приложения или сайта поступают сначала в эту систему, система применяет их к базе, получает ответ и передаёт ответ в это приложение.
Но есть способ проще: использовать SQLite.
Что такое SQLite
SQLite — это встраиваемая СУБД, когда система управления встраивается в саму программу. Это значит, что все запросы и команды идут в базу не через посредника, а напрямую из приложения. Чтобы встроить SQLite в код, достаточно подключить нужную библиотеку.
А ещё SQLite — это проект с открытым исходным кодом. Это значит, что его может использовать кто угодно без опасения, что проект закроют и все базы сразу перестанут работать.
Почему это просто и чем отличается от MySQL
Все данные в SQLite хранятся в одном файле — таблицы, служебные поля, связи и всё остальное. Это упрощает работу с базой и позволяет легко переносить данные из одного места в другое.
MySQL. Допустим, мы запустили и настроили обычную базу данных на одном компьютере, а потом захотели перенести её на другой. Чтобы это сделать, нужно:
- найти все файлы, которые относятся к базе;
- положить их в новое место;
- прописать настройки;
- объяснить СУБД, как подключиться к базе;
- проверить, что подтянулись все поля, записи и связи.
Это несложно, но требует кропотливой ручной работы.
SQLite. У SQLite всё иначе — чтобы перенести базу в новое место достаточно:
- перенести один файл базы данных;
- поменять в коде одну строку с путём к этому файлу.
Благодаря такой простоте настройки, подключения и развёртывания базы SQLite и завоевал такую популярность.
Возможности SQLite
Все SQL-подобные СУБД умеют плюс-минус одно и то же и отличаются в основном деталями: триггерами, работой с кэшем, процедурами и правилами обработки. Чем крупнее СУБД, тем больше она отличается от других, даже если там используется тот же самый язык запросов SQL.
Разработчики SQLite поступили иначе: они взяли все основные возможности СУБД и отказались от узкоспециализированных запросов. Идея была в том, чтобы сделать универсальную базу для всех — простую, понятную и надёжную. Поэтому SQLite умеет всё, что умеют другие базы:
- работать с запросами;
- создавать связи;
- хранить данные различных типов;
- работать с шаблонами;
- понимать выражения и функции;
- работать с присоединёнными базами.
Чтобы SQLite работала быстро на любом устройстве, в неё специально добавили некоторые ограничения: уменьшили длину строки, количество колонок, таблиц и максимальную длину SQL-запроса. Но даже с такими ограничениями база может занимать около 280 терабайт.
Стабильность и надёжность
Особенность разработки SQLite также в том, что тестами покрыто 100% исходного кода. Это значит, что в нём протестированы каждая функция, обработчик и класс, причём на всех уровнях — от юнита до всей системы.
Тестов в разработке SQLite настолько много, что объём кода для тестов давно превысил объём самого SQLite. А всё для того, чтобы база данных работала даже в самых сложных условиях, например:
- при нехватке памяти;
- при неправильно сформированных запросах;
- при внезапном отключении питания;
- при одновременном доступе к базе миллиона пользователей;
- на слабом железе;
- при повреждениях оперативной памяти во время выполнения запроса.
По этой причине SQLite часто используется там, где нужна максимальная надёжность и работа в неопределённых условиях.
Где используется
SQLite поддерживается большинством языков программирования без дополнительных настроек:
Если говорить про мобильные приложения, сервисы и программы, то список тех, кто использует SQLite, будет очень большой, например:
- большинство программ для iOS и Android,
- Google Chrome,
- Adobe Photoshop Lightroom,
- Safari,
- Nextcloud,
- 1С:Предприятие,
- Скайп.
Что дальше
В следующей статье напишем простой код на Python, в котором поработаем с базой: создадим её и наполним разными данными. Подпишитесь, чтобы не пропустить продолжение.