SQLite — самая простая база данных, которая работает везде

Мы уже рассказывали подробно о том, что такое базы данных, как они устроены, какие бывают и как работают. Вот короткая версия:

  • База данных — это способ хранения разных данных в одном месте.
  • Внутри базы могут храниться разные данные: фото, текст, музыка, числа, код, ссылки, цены и что угодно ещё.
  • Когда говорят про базы данных, чаще всего имеют в виду табличные базы данных — те, где информация хранится в разных таблицах;
  • Пример табличной базы — 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 поддерживается большинством языков программирования без дополнительных настроек:

  • Python,
  • Swift, 
  • C++, 
  • Java, 
  • C#, 
  • Perl, 
  • PHP.

Если говорить про мобильные приложения, сервисы и программы, то список тех, кто использует SQLite, будет очень большой, например:

  • большинство программ для iOS и Android,
  • Google Chrome,
  • Adobe Photoshop Lightroom,
  • Safari,
  • Nextcloud,
  • 1С:Предприятие,
  • Скайп.

Что дальше

В следующей статье напишем простой код на Python, в котором поработаем с базой: создадим её и наполним разными данными. Подпишитесь, чтобы не пропустить продолжение.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Виталий Вебер

Как работает модуль sqlite3 в Python 3