Лайтовые базы данных для лайтовых проектов.
SQLite — это лёгкая и быстрая система управления базами данных, которая хранит данные локально и не нагружает систему. В этой статье рассказываем о преимуществах этой СУБД, показываем, как её установить и создать свою первую легковесную базу данных.
Что такое SQLite
SQLite работает по реляционной модели, то есть все данные в базе данных связаны в виде таблиц. Так легче увидеть взаимосвязи между разными элементами. А ещё считается, что новичкам проще работать именно с таким видом баз данных.
Рассмотрим на примере, как работает реляционная модель. Для этого представим базу данных мобильной игры, которая состоит из нескольких таблиц. В них хранится информация об игроках, доступных внутриигровых предметах, уровнях, инвентаре каждого пользователя и прогрессе. Ниже представлена схема зависимостей таблиц в базе данных.
Инфографика: Майя Мальгина для Skillbox Media
Всего в базе данных игры будет пять таблиц с данными:
- Players — таблица с информацией об игроках. В ней хранятся ID пользователя, никнейм, адрес электронной почты, уровень, дата регистрации и количество опыта.
player_id | username | registration_date | level | experience | |
---|---|---|---|---|---|
1 | PlayerOne | player1@ mail.com |
2024-01-10 | 10 | 1500 |
2 | GamerGirl | gamergirl@ mail.com |
2024-02-05 | 7 | 850 |
- Items — в ней находится информация о внутриигровых предметах, которые могут получить игроки.
item_id | name | description | rarity | effect |
---|---|---|---|---|
1001 | Sword | Мощный меч | Rare | +10 к атаке |
1002 | Healing potion | Зелье здоровья | Common | Восстановление 50 HP |
1003 | Shield | Щит | Uncommon | +5 к защите |
- Player_Inventory — данные о предметах, которые есть в инвентаре каждого игрока. Эта таблица связана с Players и Items с помощью идентификационных номеров.
player_id | item_id | quantity |
---|---|---|
1 | 1001 | 1 |
1 | 1002 | 3 |
2 | 1003 | 1 |
- Levels — описывает уровни, существующие в игре.
level_id | name | description | difficulty |
---|---|---|---|
1 | Forest of Doom | Лес с монстрами | Easy |
2 | Lava Cave | Пещера с лавой и драконами | Hard |
- Player_Progress — отслеживает прогресс игрока на различных уровнях. Эта таблица связана с таблицами пользователей и доступных уровней.
player_id | level_id | completion_time | score | completed |
---|---|---|---|---|
1 | 1 | 15:30 | 8000 | TRUE |
1 | 2 | 30:00 | 12000 | FALSE |
2 | 1 | 20:00 | 7000 | TRUE |
Данные хранят в разных таблицах для более эффективного использования ресурсов системы, чтобы устройству не приходилось при каждом запросе штудировать одну большую таблицу. Также с маленькими таблицами удобнее работать программистам.
Для чего используют SQLite
SQLite обычно используют, когда данных немного и важно, чтобы доступ к ним можно было получить, даже если нельзя подключиться к удалённому серверу. Например, такие базы используют в следующих системах:
- Мобильные приложения. Не всем приложениям на смартфоне нужен постоянный доступ к удалённому серверу, но многим надо уметь эффективно хранить данные в памяти устройства. Для этих целей подходит СУБД SQLite. Например, с её помощью работает приложение с заметками в вашем смартфоне.
- IoT-устройства. Гаджеты умного дома хранят данные локально и время от времени синхронизируются со смартфоном и удалённой базой. Благодаря этому они могут дольше работать без подзарядки, ведь каждое подключение к интернету расходует энергию.
- Браузеры. Некоторые данные браузеры сохраняют локально, чтобы быстро получать к ним доступ. Например, cookies, пользовательские настройки и кэш. Также локальной памятью пользуются некоторые веб-приложения.
- Десктопные приложения. Если не надо обмениваться данными с сервером, их можно хранить в памяти компьютера. Текстовые редакторы, офисные приложения и различные утилиты используют SQLite.
Чем различаются SQLite и MySQL
SQLite и MySQL — это системы управления базами данных, которые используют язык структурированных запросов SQL для работы с данными. Обе системы нужны для хранения и обработки информации, но между ними есть существенные различия.
Одно из главных различий заключается в том, что SQLite можно запускать локально на устройстве, а для MySQL нужен отдельный сервер, к которому устройство будет обращаться за данными. Поэтому SQLite подходит для небольших приложений, а MySQL используют для высоконагруженных систем со множеством пользователей.
Представьте, что вы разрабатываете социальную сеть с сотнями тысяч пользователей, которые каждый день обмениваются сообщениями, публикуют фотографии и созваниваются друг с другом. Для такого проекта важно, чтобы данные доходили без задержек, а база данных выдерживала огромное количество одновременных запросов. В этом случае для реализации задуманного лучше использовать MySQL.
Теперь представьте, что вам надо разработать простой менеджер задач, который будет работать локально и только с одним пользователем. Так как базе данных не придётся обслуживать огромный поток запросов, можно в качестве СУБД использовать SQLite.
Преимущества и недостатки SQLite
Вот несколько достоинств этой СУБД, которые сделали её такой популярной:
- Лёгкость. Для SQLite не нужен отдельный сервер, поэтому с ней проще работать. Разработчикам не надо настраивать сервер, обслуживать его и организовывать сетевую передачу данных.
- Высокая скорость работы. Вся база данных SQLite хранится в одном файле, поэтому для поиска информации и сортировки нужно меньше ресурсов. Благодаря этому такие базы данных можно запускать даже на слабом железе.
- Кросс-платформенность. SQLite работает на всех популярных операционных системах и поддерживает множество языков программирования.
Но есть и минусы:
- Не подходит для масштабируемых систем. Если вы рассчитываете, что в будущем ваше приложение станет масштабным международным проектом, которым ежедневно будут пользоваться миллионы людей, то стоит сразу присмотреться к СУБД, которая рассчитана на такие нагрузки, например MySQL или PostgreSQL.
- Не поддерживает многопользовательскую работу. В SQLite ограничена опция параллельной записи данных, поэтому система не подходит для одновременной работы с большим количеством пользователей.
- Ограниченный объём данных. Изначально SQLite создавали как легковесную СУБД, поэтому она не умеет работать с десятками терабайт данных.
- Нет разделения нагрузки. SQLite работает локально, поэтому разработчики не могут распределить нагрузку для экономии ресурсов. В любом случае все операции будут выполняться на железе устройства.
Как работать с SQLite
Теперь перейдём к практической части и рассмотрим, как установить SQLite и создать первую базу данных.
Как установить SQLite
Установочный файл SQLite можно скачать с официального сайта разработчиков. Также можно воспользоваться пакетными менеджерами. Процесс установки на различных операционных системах выглядит следующим образом:
- Загрузите архив с бинарным файлом с официального сайта.
- Распакуйте архив в любую удобную папку.
- Перейдите в папку с распакованным архивом и запустите файл sqlite3.exe.
- Откройте «Терминал» и введите команду brew install sqlite (важно до этого установить пакетный менеджер Homebrew по инструкции от разработчика).
- После установки введите sqlite3 в «Терминале».
- Откройте «Терминал».
- Введите команду sudo apt-get install sqlite3 (актуально для дистрибутивов на основе Debian).
- После установки введите команду sqlite3.
Как создать базу данных
Чтобы создать новую базу данных, надо выполнить команду, которая в общем виде выглядит следующим образом:
sqlite3 name.db
В ней:
- sqlite3 — обращение к программе-клиенту для работы с базой данных.
- name.db — название базы данных с расширением .db.
Эта команда создаст файл базы данных name.db и откроет сессию SQLite для работы с ней. Если файл уже существует, SQLite просто подключится к существующей базе данных.
Важно помнить, что если к базе не было ни одного запроса, то она автоматически удалится при выходе. Поэтому введите пустой запрос и нажмите Enter, если хотите сохранить её.
Если вы вносили данные, то сохранить изменения можно с помощью команды .save с указанием имени базы:
sqlite3 .save name.db
Как работать с таблицами
Чтобы хранить данные, в базе нужно создать таблицы. Например, создадим простую таблицу users, содержащую информацию о пользователях. Пропишем названия полей таблицы и тип данных, который будет храниться в этих полях:
CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT UNIQUE NOT NULL );
Теперь добавим несколько записей в таблицу:
INSERT INTO users (name, email) VALUES (‘Алиса’, ‘alice@example.com’); INSERT INTO users (name, email) VALUES (‘Пётр’, ‘petr@example.com’);
Чтобы просмотреть данные, можно выполнить запрос:
SELECT * FROM users;
Вы увидите список всех пользователей, добавленных в базу данных.
Что в итоге
- SQLite — это встраиваемая реляционная СУБД, которая основана на языке структурированных запросов SQL. «Встраиваемая» означает, что она работает прямо внутри вашего приложения, а не на отдельном сервере.
- SQLite применяют, когда можно обойтись без сложной серверной инфраструктуры. Например, в мобильных приложениях, устройствах умного дома и браузерах.
- Базы данных, созданные в SQLite, занимают мало места, не требуют сложной настройки и постоянного обслуживания, но их нельзя масштабировать и использовать в сложных проектах.
Встроенные СУБД — системы управления базами данных, которые встроены в приложение и работают в нём без использования отдельного сервера.