0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>5 ноя 2024</li>
2
<ul><li>5 ноя 2024</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Лайтовые базы данных для лайтовых проектов.</p>
4
</ul><p>Лайтовые базы данных для лайтовых проектов.</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6
<p>Пишет про digital и машинное обучение для корпоративных блогов. Топ-автор в категории "Искусственный интеллект" на Medium. Kaggle-эксперт.</p>
6
<p>Пишет про digital и машинное обучение для корпоративных блогов. Топ-автор в категории "Искусственный интеллект" на Medium. Kaggle-эксперт.</p>
7
<p>SQLite - это лёгкая и быстрая система управления базами данных, которая хранит данные локально и не нагружает систему. В этой статье рассказываем о преимуществах этой СУБД, показываем, как её установить и создать свою первую легковесную базу данных.</p>
7
<p>SQLite - это лёгкая и быстрая система управления базами данных, которая хранит данные локально и не нагружает систему. В этой статье рассказываем о преимуществах этой СУБД, показываем, как её установить и создать свою первую легковесную базу данных.</p>
8
<p><strong>Содержание</strong></p>
8
<p><strong>Содержание</strong></p>
9
<ul><li><a>Что такое SQLite</a></li>
9
<ul><li><a>Что такое SQLite</a></li>
10
<li><a>Для чего её используют</a></li>
10
<li><a>Для чего её используют</a></li>
11
<li><a>Чем различаются SQLite и MySQL</a></li>
11
<li><a>Чем различаются SQLite и MySQL</a></li>
12
<li><a>Преимущества и недостатки SQLite</a></li>
12
<li><a>Преимущества и недостатки SQLite</a></li>
13
<li><a>Как работать с SQLite</a></li>
13
<li><a>Как работать с SQLite</a></li>
14
</ul><p><strong>SQLite</strong> - это компактная встроенная система управления базами данных, для работы которой не нужен отдельный сервер. Все данные она хранит в одном файле и позволяет получать доступ к ним локально. Благодаря этому SQLite часто используют в разработке мобильных приложений и других программ, которым нужен простой способ организации и хранения данных.</p>
14
</ul><p><strong>SQLite</strong> - это компактная встроенная система управления базами данных, для работы которой не нужен отдельный сервер. Все данные она хранит в одном файле и позволяет получать доступ к ним локально. Благодаря этому SQLite часто используют в разработке мобильных приложений и других программ, которым нужен простой способ организации и хранения данных.</p>
15
<p>SQLite работает по реляционной модели, то есть все данные в базе данных связаны в виде таблиц. Так легче увидеть взаимосвязи между разными элементами. А ещё считается, что новичкам проще работать именно с таким видом баз данных.</p>
15
<p>SQLite работает по реляционной модели, то есть все данные в базе данных связаны в виде таблиц. Так легче увидеть взаимосвязи между разными элементами. А ещё считается, что новичкам проще работать именно с таким видом баз данных.</p>
16
<p>Рассмотрим на примере, как работает реляционная модель. Для этого представим базу данных мобильной игры, которая состоит из нескольких таблиц. В них хранится информация об игроках, доступных внутриигровых предметах, уровнях, инвентаре каждого пользователя и прогрессе. Ниже представлена схема зависимостей таблиц в базе данных.</p>
16
<p>Рассмотрим на примере, как работает реляционная модель. Для этого представим базу данных мобильной игры, которая состоит из нескольких таблиц. В них хранится информация об игроках, доступных внутриигровых предметах, уровнях, инвентаре каждого пользователя и прогрессе. Ниже представлена схема зависимостей таблиц в базе данных.</p>
17
<em>Инфографика: Майя Мальгина для Skillbox Media</em><p>Всего в базе данных игры будет пять таблиц с данными:</p>
17
<em>Инфографика: Майя Мальгина для Skillbox Media</em><p>Всего в базе данных игры будет пять таблиц с данными:</p>
18
<ul><li>Players - таблица с информацией об игроках. В ней хранятся ID пользователя, никнейм, адрес электронной почты, уровень, дата регистрации и количество опыта.</li>
18
<ul><li>Players - таблица с информацией об игроках. В ней хранятся ID пользователя, никнейм, адрес электронной почты, уровень, дата регистрации и количество опыта.</li>
19
</ul>player_idusernameemailregistration_datelevelexperience1PlayerOneplayer1@mail.com2024-01-101015002GamerGirlgamergirl@mail.com2024-02-057850<ul><li>Items - в ней находится информация о внутриигровых предметах, которые могут получить игроки.</li>
19
</ul>player_idusernameemailregistration_datelevelexperience1PlayerOneplayer1@mail.com2024-01-101015002GamerGirlgamergirl@mail.com2024-02-057850<ul><li>Items - в ней находится информация о внутриигровых предметах, которые могут получить игроки.</li>
20
</ul>item_idnamedescriptionrarityeffect1001SwordМощный мечRare+10 к атаке1002Healing potionЗелье здоровьяCommonВосстановление 50 HP1003ShieldЩитUncommon+5 к защите<ul><li>Player_Inventory - данные о предметах, которые есть в инвентаре каждого игрока. Эта таблица связана с Players и Items с помощью идентификационных номеров.</li>
20
</ul>item_idnamedescriptionrarityeffect1001SwordМощный мечRare+10 к атаке1002Healing potionЗелье здоровьяCommonВосстановление 50 HP1003ShieldЩитUncommon+5 к защите<ul><li>Player_Inventory - данные о предметах, которые есть в инвентаре каждого игрока. Эта таблица связана с Players и Items с помощью идентификационных номеров.</li>
21
</ul>player_iditem_idquantity110011110023210031<ul><li>Levels - описывает уровни, существующие в игре.</li>
21
</ul>player_iditem_idquantity110011110023210031<ul><li>Levels - описывает уровни, существующие в игре.</li>
22
</ul>level_idnamedescriptiondifficulty1Forest of DoomЛес с монстрамиEasy2Lava CaveПещера с лавой и драконамиHard<ul><li>Player_Progress - отслеживает прогресс игрока на различных уровнях. Эта таблица связана с таблицами пользователей и доступных уровней.</li>
22
</ul>level_idnamedescriptiondifficulty1Forest of DoomЛес с монстрамиEasy2Lava CaveПещера с лавой и драконамиHard<ul><li>Player_Progress - отслеживает прогресс игрока на различных уровнях. Эта таблица связана с таблицами пользователей и доступных уровней.</li>
23
</ul>player_idlevel_idcompletion_timescorecompleted1115:308000TRUE1230:0012000FALSE2120:007000TRUE<p>Данные хранят в разных таблицах для более эффективного использования ресурсов системы, чтобы устройству не приходилось при каждом запросе штудировать одну большую таблицу. Также с маленькими таблицами удобнее работать программистам.</p>
23
</ul>player_idlevel_idcompletion_timescorecompleted1115:308000TRUE1230:0012000FALSE2120:007000TRUE<p>Данные хранят в разных таблицах для более эффективного использования ресурсов системы, чтобы устройству не приходилось при каждом запросе штудировать одну большую таблицу. Также с маленькими таблицами удобнее работать программистам.</p>
24
<p>SQLite обычно используют, когда данных немного и важно, чтобы доступ к ним можно было получить, даже если нельзя подключиться к удалённому серверу. Например, такие базы используют в следующих системах:</p>
24
<p>SQLite обычно используют, когда данных немного и важно, чтобы доступ к ним можно было получить, даже если нельзя подключиться к удалённому серверу. Например, такие базы используют в следующих системах:</p>
25
<ul><li><strong>Мобильные приложения.</strong>Не всем приложениям на смартфоне нужен постоянный доступ к удалённому серверу, но многим надо уметь эффективно хранить данные в памяти устройства. Для этих целей подходит СУБД SQLite. Например, с её помощью работает приложение с заметками в вашем смартфоне.</li>
25
<ul><li><strong>Мобильные приложения.</strong>Не всем приложениям на смартфоне нужен постоянный доступ к удалённому серверу, но многим надо уметь эффективно хранить данные в памяти устройства. Для этих целей подходит СУБД SQLite. Например, с её помощью работает приложение с заметками в вашем смартфоне.</li>
26
<li><strong>IoT-устройства.</strong>Гаджеты умного дома хранят данные локально и время от времени синхронизируются со смартфоном и удалённой базой. Благодаря этому они могут дольше работать без подзарядки, ведь каждое подключение к интернету расходует энергию.</li>
26
<li><strong>IoT-устройства.</strong>Гаджеты умного дома хранят данные локально и время от времени синхронизируются со смартфоном и удалённой базой. Благодаря этому они могут дольше работать без подзарядки, ведь каждое подключение к интернету расходует энергию.</li>
27
<li><strong>Браузеры.</strong>Некоторые данные браузеры сохраняют локально, чтобы быстро получать к ним доступ. Например, cookies, пользовательские настройки и кэш. Также локальной памятью пользуются некоторые веб-приложения.</li>
27
<li><strong>Браузеры.</strong>Некоторые данные браузеры сохраняют локально, чтобы быстро получать к ним доступ. Например, cookies, пользовательские настройки и кэш. Также локальной памятью пользуются некоторые веб-приложения.</li>
28
<li><strong>Десктопные приложения.</strong>Если не надо обмениваться данными с сервером, их можно хранить в памяти компьютера. Текстовые редакторы, офисные приложения и различные утилиты используют SQLite.</li>
28
<li><strong>Десктопные приложения.</strong>Если не надо обмениваться данными с сервером, их можно хранить в памяти компьютера. Текстовые редакторы, офисные приложения и различные утилиты используют SQLite.</li>
29
</ul><p>SQLite и <a>MySQL</a> - это системы управления базами данных, которые используют язык структурированных запросов SQL для работы с данными. Обе системы нужны для хранения и обработки информации, но между ними есть существенные различия.</p>
29
</ul><p>SQLite и <a>MySQL</a> - это системы управления базами данных, которые используют язык структурированных запросов SQL для работы с данными. Обе системы нужны для хранения и обработки информации, но между ними есть существенные различия.</p>
30
<p>Одно из главных различий заключается в том, что SQLite можно запускать локально на устройстве, а для MySQL нужен отдельный сервер, к которому устройство будет обращаться за данными. Поэтому SQLite подходит для небольших приложений, а MySQL используют для высоконагруженных систем со множеством пользователей.</p>
30
<p>Одно из главных различий заключается в том, что SQLite можно запускать локально на устройстве, а для MySQL нужен отдельный сервер, к которому устройство будет обращаться за данными. Поэтому SQLite подходит для небольших приложений, а MySQL используют для высоконагруженных систем со множеством пользователей.</p>
31
<p>Представьте, что вы разрабатываете социальную сеть с сотнями тысяч пользователей, которые каждый день обмениваются сообщениями, публикуют фотографии и созваниваются друг с другом. Для такого проекта важно, чтобы данные доходили без задержек, а база данных выдерживала огромное количество одновременных запросов. В этом случае для реализации задуманного лучше использовать MySQL.</p>
31
<p>Представьте, что вы разрабатываете социальную сеть с сотнями тысяч пользователей, которые каждый день обмениваются сообщениями, публикуют фотографии и созваниваются друг с другом. Для такого проекта важно, чтобы данные доходили без задержек, а база данных выдерживала огромное количество одновременных запросов. В этом случае для реализации задуманного лучше использовать MySQL.</p>
32
<p>Теперь представьте, что вам надо разработать простой менеджер задач, который будет работать локально и только с одним пользователем. Так как базе данных не придётся обслуживать огромный поток запросов, можно в качестве СУБД использовать SQLite.</p>
32
<p>Теперь представьте, что вам надо разработать простой менеджер задач, который будет работать локально и только с одним пользователем. Так как базе данных не придётся обслуживать огромный поток запросов, можно в качестве СУБД использовать SQLite.</p>
33
<p>Вот несколько достоинств этой СУБД, которые сделали её такой популярной:</p>
33
<p>Вот несколько достоинств этой СУБД, которые сделали её такой популярной:</p>
34
<ul><li><strong>Лёгкость.</strong>Для SQLite не нужен отдельный сервер, поэтому с ней проще работать. Разработчикам не надо настраивать сервер, обслуживать его и организовывать сетевую передачу данных.</li>
34
<ul><li><strong>Лёгкость.</strong>Для SQLite не нужен отдельный сервер, поэтому с ней проще работать. Разработчикам не надо настраивать сервер, обслуживать его и организовывать сетевую передачу данных.</li>
35
<li><strong>Высокая скорость работы.</strong>Вся база данных SQLite хранится в одном файле, поэтому для поиска информации и сортировки нужно меньше ресурсов. Благодаря этому такие базы данных можно запускать даже на слабом железе.</li>
35
<li><strong>Высокая скорость работы.</strong>Вся база данных SQLite хранится в одном файле, поэтому для поиска информации и сортировки нужно меньше ресурсов. Благодаря этому такие базы данных можно запускать даже на слабом железе.</li>
36
<li><strong>Кросс-платформенность.</strong>SQLite работает на всех популярных операционных системах и поддерживает множество языков программирования.</li>
36
<li><strong>Кросс-платформенность.</strong>SQLite работает на всех популярных операционных системах и поддерживает множество языков программирования.</li>
37
</ul><p>Но есть и минусы:</p>
37
</ul><p>Но есть и минусы:</p>
38
<ul><li><strong>Не подходит для масштабируемых систем.</strong>Если вы рассчитываете, что в будущем ваше приложение станет масштабным международным проектом, которым ежедневно будут пользоваться миллионы людей, то стоит сразу присмотреться к СУБД, которая рассчитана на такие нагрузки, например MySQL или PostgreSQL.</li>
38
<ul><li><strong>Не подходит для масштабируемых систем.</strong>Если вы рассчитываете, что в будущем ваше приложение станет масштабным международным проектом, которым ежедневно будут пользоваться миллионы людей, то стоит сразу присмотреться к СУБД, которая рассчитана на такие нагрузки, например MySQL или PostgreSQL.</li>
39
<li><strong>Не поддерживает многопользовательскую работу.</strong>В SQLite ограничена опция параллельной записи данных, поэтому система не подходит для одновременной работы с большим количеством пользователей.</li>
39
<li><strong>Не поддерживает многопользовательскую работу.</strong>В SQLite ограничена опция параллельной записи данных, поэтому система не подходит для одновременной работы с большим количеством пользователей.</li>
40
<li><strong>Ограниченный объём данных.</strong>Изначально SQLite создавали как легковесную СУБД, поэтому она не умеет работать с десятками терабайт данных.</li>
40
<li><strong>Ограниченный объём данных.</strong>Изначально SQLite создавали как легковесную СУБД, поэтому она не умеет работать с десятками терабайт данных.</li>
41
<li><strong>Нет разделения нагрузки.</strong>SQLite работает локально, поэтому разработчики не могут распределить нагрузку для экономии ресурсов. В любом случае все операции будут выполняться на железе устройства.</li>
41
<li><strong>Нет разделения нагрузки.</strong>SQLite работает локально, поэтому разработчики не могут распределить нагрузку для экономии ресурсов. В любом случае все операции будут выполняться на железе устройства.</li>
42
</ul><p>Теперь перейдём к практической части и рассмотрим, как установить SQLite и создать первую базу данных.</p>
42
</ul><p>Теперь перейдём к практической части и рассмотрим, как установить SQLite и создать первую базу данных.</p>
43
<p>Установочный файл SQLite можно скачать с <a>официального сайта</a>разработчиков. Также можно воспользоваться пакетными менеджерами. Процесс установки на различных операционных системах выглядит следующим образом:</p>
43
<p>Установочный файл SQLite можно скачать с <a>официального сайта</a>разработчиков. Также можно воспользоваться пакетными менеджерами. Процесс установки на различных операционных системах выглядит следующим образом:</p>
44
<p><strong>Windows</strong></p>
44
<p><strong>Windows</strong></p>
45
<ul><li>Загрузите архив с бинарным файлом с официального сайта.</li>
45
<ul><li>Загрузите архив с бинарным файлом с официального сайта.</li>
46
<li>Распакуйте архив в любую удобную папку.</li>
46
<li>Распакуйте архив в любую удобную папку.</li>
47
<li>Перейдите в папку с распакованным архивом и запустите файл sqlite3.exe.</li>
47
<li>Перейдите в папку с распакованным архивом и запустите файл sqlite3.exe.</li>
48
</ul><p><strong>macOS</strong></p>
48
</ul><p><strong>macOS</strong></p>
49
<ul><li>Откройте "Терминал" и введите команду brew install sqlite (важно до этого установить пакетный менеджер Homebrew по инструкции от разработчика).</li>
49
<ul><li>Откройте "Терминал" и введите команду brew install sqlite (важно до этого установить пакетный менеджер Homebrew по инструкции от разработчика).</li>
50
<li>После установки введите sqlite3 в "Терминале".</li>
50
<li>После установки введите sqlite3 в "Терминале".</li>
51
</ul><p><strong>Linux</strong></p>
51
</ul><p><strong>Linux</strong></p>
52
<ul><li>Откройте "Терминал".</li>
52
<ul><li>Откройте "Терминал".</li>
53
<li>Введите команду sudo apt-get install sqlite3 (актуально для дистрибутивов на основе Debian).</li>
53
<li>Введите команду sudo apt-get install sqlite3 (актуально для дистрибутивов на основе Debian).</li>
54
<li>После установки введите команду sqlite3.</li>
54
<li>После установки введите команду sqlite3.</li>
55
</ul><p>Чтобы создать новую базу данных, надо выполнить команду, которая в общем виде выглядит следующим образом:</p>
55
</ul><p>Чтобы создать новую базу данных, надо выполнить команду, которая в общем виде выглядит следующим образом:</p>
56
sqlite3 name.db<p>В ней:</p>
56
sqlite3 name.db<p>В ней:</p>
57
<ul><li>sqlite3 - обращение к программе-клиенту для работы с базой данных.</li>
57
<ul><li>sqlite3 - обращение к программе-клиенту для работы с базой данных.</li>
58
<li>name.db - название базы данных с расширением .db.</li>
58
<li>name.db - название базы данных с расширением .db.</li>
59
</ul><p>Эта команда создаст файл базы данных name.db и откроет сессию SQLite для работы с ней. Если файл уже существует, SQLite просто подключится к существующей базе данных.</p>
59
</ul><p>Эта команда создаст файл базы данных name.db и откроет сессию SQLite для работы с ней. Если файл уже существует, SQLite просто подключится к существующей базе данных.</p>
60
<p>Важно помнить, что если к базе не было ни одного запроса, то она автоматически удалится при выходе. Поэтому введите пустой запрос и нажмите<strong>Enter</strong>, если хотите сохранить её.</p>
60
<p>Важно помнить, что если к базе не было ни одного запроса, то она автоматически удалится при выходе. Поэтому введите пустой запрос и нажмите<strong>Enter</strong>, если хотите сохранить её.</p>
61
<p>Если вы вносили данные, то сохранить изменения можно с помощью команды .save с указанием имени базы:</p>
61
<p>Если вы вносили данные, то сохранить изменения можно с помощью команды .save с указанием имени базы:</p>
62
sqlite3 .save name.db<p>Чтобы хранить данные, в базе нужно создать таблицы. Например, создадим простую таблицу users, содержащую информацию о пользователях. Пропишем названия полей таблицы и тип данных, который будет храниться в этих полях:</p>
62
sqlite3 .save name.db<p>Чтобы хранить данные, в базе нужно создать таблицы. Например, создадим простую таблицу users, содержащую информацию о пользователях. Пропишем названия полей таблицы и тип данных, который будет храниться в этих полях:</p>
63
CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT UNIQUE NOT NULL );<p>Теперь добавим несколько записей в таблицу:</p>
63
CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT UNIQUE NOT NULL );<p>Теперь добавим несколько записей в таблицу:</p>
64
INSERT INTO users (name, email) VALUES ('Алиса', 'alice@example.com'); INSERT INTO users (name, email) VALUES ('Пётр', 'petr@example.com');<p>Чтобы просмотреть данные, можно выполнить запрос:</p>
64
INSERT INTO users (name, email) VALUES ('Алиса', 'alice@example.com'); INSERT INTO users (name, email) VALUES ('Пётр', 'petr@example.com');<p>Чтобы просмотреть данные, можно выполнить запрос:</p>
65
SELECT * FROM users;<p>Вы увидите список всех пользователей, добавленных в базу данных.</p>
65
SELECT * FROM users;<p>Вы увидите список всех пользователей, добавленных в базу данных.</p>
66
<ul><li>SQLite - это встраиваемая реляционная СУБД, которая основана на языке структурированных запросов SQL. "Встраиваемая" означает, что она работает прямо внутри вашего приложения, а не на отдельном сервере.</li>
66
<ul><li>SQLite - это встраиваемая реляционная СУБД, которая основана на языке структурированных запросов SQL. "Встраиваемая" означает, что она работает прямо внутри вашего приложения, а не на отдельном сервере.</li>
67
<li>SQLite применяют, когда можно обойтись без сложной серверной инфраструктуры. Например, в мобильных приложениях, устройствах умного дома и браузерах.</li>
67
<li>SQLite применяют, когда можно обойтись без сложной серверной инфраструктуры. Например, в мобильных приложениях, устройствах умного дома и браузерах.</li>
68
<li>Базы данных, созданные в SQLite, занимают мало места, не требуют сложной настройки и постоянного обслуживания, но их нельзя масштабировать и использовать в сложных проектах.</li>
68
<li>Базы данных, созданные в SQLite, занимают мало места, не требуют сложной настройки и постоянного обслуживания, но их нельзя масштабировать и использовать в сложных проектах.</li>
69
</ul><p>Python для всех</p>
69
</ul><p>Python для всех</p>
70
<p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
70
<p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
71
<p><a>Пройти бесплатно</a></p>
71
<p><a>Пройти бесплатно</a></p>
72
<a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>
72
<a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>