Как я отслеживаю свою музыкальную коллекцию с помощью простой базы данных SQLite

Резюме

  • SQLite идеально подходит для локального управления физической музыкальной коллекцией.
  • SQLite имеет простой процесс установки, подходящий для людей без опыта работы с базами данных. Графические интерфейсы, такие как DB Browser, также упрощают управление базами данных для начинающих пользователей.
  • Такие возможности SQLite, как динамическая типизация, позволяют эффективно управлять базами данных и настраивать их, обеспечивая оптимальную организацию.

Если вы меломан, у вас наверняка есть полки с пластинками или компакт-дисками. Как вы за ними следите? Вы можете использовать базу данных, но разве они не сложны в настройке? SQLite — это мощный инструмент, позволяющий вам настраивать базы данных SQL без сервера. На удивление легко настроить. Вот как я это сделал, несмотря на смутные знания SQL.

Почему SQLite?

Даже в эпоху потокового вещания в физической музыкальной коллекции все еще есть что-то особенное. Именно поэтому, по данным RIAA, продажи виниловых пластинок за последние несколько лет выросли. Самый популярный новый музыкальный формат — это не Spotify, MP3 или FLAC, а старый добрый LP.

Будучи миллениалом, мои привычки в прослушивании музыки сформировались в самом конце «Эры альбомов». Это означало коллекционирование альбомов. Поскольку это были 90-е, когда я начал серьезно интересоваться музыкой, доминирующим форматом был CD, за исключением нескольких старых чудаков, которые предпочитали винил. (Кому нужны эти старые пластинки?)

Как я отслеживаю свою музыкальную коллекцию с помощью простой базы данных SQLite

Когда у вас есть существенная физическая коллекция любого типа, не только музыка, одному человеку становится сложно за ней следить. Вот тут-то и появляются базы данных. Реляционная база данных с ее строками и столбцами проста в понимании, но SQL имеет репутацию сложного для изучения языка. Я познакомился с ним на занятиях по компьютерным информационным системам в колледже, но мне хотелось освоиться с базами данных и SQL.

Я думал об установке сервера базы данных на моей машине, например MySQL или PostgreSQL, но это большие, сложные системы, которые требуют много работы для обслуживания. Я просто парень с клавиатурой и ящиком альбомов.

Я также мог бы настроить базу данных в Discogs. У меня там есть учетная запись пользователя, но я хотел базу данных, которая работала бы локально под моим контролем. Я мог бы даже настроить ее как базу данных с плоским файлом, используя текстовые инструменты Linux, но это не масштабировалось бы до более крупной коллекции.

SQLite казался идеальным. Это была реляционная база данных, которая использовала SQL в качестве языка запросов. Она легкая и будет работать без сервера. Многие реальные приложения использовали SQLite, включая iTunes. Если SQLite может управлять цифровой музыкальной библиотекой, я подумал, что она легко справится и с физической. Возможно, именно поэтому коллекции записей являются популярными примерами для настройки реляционных баз данных. Они как «Hello, world!» среди баз данных.

Установка SQLite

Поскольку SQLite бесплатен и доступен во многих дистрибутивах Linux, мне нужно было всего лишь использовать apt в Ubuntu (он был в WSL, но в любой версии Debian или Ubuntu он будет одинаковым):

sudo apt установить sqlite

Вот и все. У меня был установлен SQLite в одном из них. Это показывает, насколько легко установить SQLite.

Я мог бы скачать родную версию Windows, но я просто предпочитаю Linux для программных вещей. Unix-подобные системы лучше всего подходят для программных проектов больших и малых, и именно для этого существует WSL.

Создание базы данных

После установки SQLite пришло время начать создавать мою базу данных. Я подумал о том, что мне понадобится. База данных для моей коллекции компакт-дисков и пластинок должна иметь поля для исполнителя, названия, года оригинального выпуска и формата.

Я запустил клиент командной строки, указав имя файла базы данных, который я хотел создать:

sqlite3 музыка.db

Я ввел код SQL для создания таблицы:

СОЗДАТЬ ТАБЛИЦУ альбомов (исполнитель,название,год,формат)

Завершайте каждый оператор SQL символом точки с запятой (;).

Преимущество SQLite по сравнению с другими системами баз данных в том, что мне не нужно было заранее жестко кодировать типы данных. SQLite использует динамическую типизацию, при которой он угадывает, какие данные содержит поле, по тому, что вы в него вводите. Если вы вводите строку символов, он решает, что это поле является строкой. Это сэкономило мне время и усилия при определении таблицы.

Хотя операторы SQL традиционно пишутся в верхнем регистре, это не обязательно. Это соглашение, но вы можете вводить команды в нижнем регистре, поскольку SQLite принимает и то, и другое. Разработчики SQLite используют нижний регистр в своей документации.

После создания таблицы мне теперь нужно было внести в нее записи, и я имею в виду записи базы данных, а не виниловые пластинки. Вот тут-то и пригодится команда INSERT INTO.

ВСТАВИТЬ В АЛЬБОМАХ ЦЕННОСТИ («Pink Floyd», «Темная сторона Луны», 1973,»LP»,)

Я мог бы сделать это для всей моей коллекции, но есть более простой способ. Ввод всех операторов SQL может быть утомительным, поэтому доступно несколько вспомогательных интерфейсов. Хороший из них — DB Browser. Он похож на PHPMyAdmin для баз данных MySQL. Это графический интерфейс, который позволяет вам легко создавать и управлять базами данных SQLite.

Как я отслеживаю свою музыкальную коллекцию с помощью простой базы данных SQLite

Мне пришлось всего лишь установить его в Ubuntu, хотя он также доступен и для Windows.

Чтобы установить его в Ubuntu, используйте эту команду:

sudo apt install sqlitebrowser

Для работы с базой данных SQLite я просто открываю файл music.db, который я создал, перейдя в Файл > Открыть базу данных > и перейдя к файлу базы данных. После создания базы данных я могу добавлять поля с помощью вкладки «Обзор данных», а затем нажать кнопку «Вставить запись». Она показывает таблицу, похожую на электронную таблицу. Я могу заполнить поля для имеющихся у меня альбомов. За кулисами она использует транзакции, упомянутые ниже, для защиты от нежелательных изменений.

Несмотря на то, что это личная база данных, я хочу выработать несколько хороших привычек. При работе с данными лучше всего иметь резервную копию. Клиент командной строки SQLite позволяет мне сохранять резервную копию моей базы данных с помощью команды .backup:

.резервная копия музыки.db.bak

Я мог бы назвать файл как угодно, но я обычно использую расширение .bak для резервных копий файлов.

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

Что еще важнее, если вы допустили ошибку, вы можете вернуться к предыдущим состояниям с помощью команды ROLLBACK. Это похоже на операцию отмены в текстовом процессоре.

Том Скотт на собственном горьком опыте узнал, насколько опасно пренебрегать транзакциями и резервным копированием при работе с базой данных:

Чтобы начать транзакцию, используйте эту команду:

НАЧАТЬ ТРАНЗАКЦИЮ;

Все ваши действия с базой данных будут отображаться, например, добавление, удаление или изменение записей, но они не будут сохранены до завершения транзакции с помощью команды COMMIT:

СОВЕРШИТЬ;

Вот пример добавления нескольких альбомов в базу данных.

НАЧАТЬ ТРАНЗАКЦИЮ;
ВСТАВИТЬ В АЛЬБОМАХ ЦЕННОСТИ («Pearl Jam»,»Десятка»,1991,»CD»);
ВСТАВИТЬ В АЛЬБОМАХ ЦЕННОСТИ («Nirvana», «Nevermind»,1991,»CD»);
ВСТАВИТЬ В альбомы ЦЕННОСТИ («Pink Floyd», «Wish You Were Here», 1975, «Pink Floyd Records»);
СОВЕРШИТЬ;

Перед внесением изменений в базу данных сделайте резервную копию и включите транзакции.

Изучение моей базы данных

Поскольку моя база данных медленно заполняется, я могу попробовать сделать запрос. По умолчанию SQLite выводит записи, разделенные символом «|». Чтобы увидеть их в столбцах, я устанавливаю режим:

.столбец режима

Команды, являющиеся частью SQLite 3, подобные этой, не используют точку с запятой в конце.

Чтобы увидеть всю свою коллекцию, я могу использовать команду SELECT *:

ВЫБРАТЬ * ИЗ альбомов;

Как я отслеживаю свою музыкальную коллекцию с помощью простой базы данных SQLite

* — это подстановочный знак, похожий на подстановочные знаки в оболочке Linux, который позволяет мне выбрать каждую запись. Конечно, я хотел бы увидеть только несколько записей за один раз. Я могу сделать это с помощью команды LIMIT:

ВЫБРАТЬ * ИЗ АЛЬБОМА ОГРАНИЧЕНИЕ 5;

Чтобы найти поля, соответствующие критериям, например, исполнители, я могу использовать предложение WHERE:

ВЫБЕРИТЕ * ИЗ альбомов, ГДЕ исполнитель, НАПРИМЕР, ‘%pink floyd%’;

Операторы SQLite LIKE частично соответствуют полю и нечувствительны к регистру в SQLite.

Ой, мне нужно больше полей!

Даже так тщательно, как вы проектируете поля в базе данных, кажется, вам нужно настроить таблицы, когда вы понимаете, что вам нужно еще одно поле. Я понял, что было бы хорошо иметь поле для звукозаписывающей компании. К счастью, было легко изменить мою таблицу в SQLite.

Чтобы посмотреть, как структурированы данные, я использую команду .schema.

Как я отслеживаю свою музыкальную коллекцию с помощью простой базы данных SQLite

Я открыл клиент командной строки и набрал:

ИЗМЕНИТЬ ТАБЛИЦУ альбомов ДОБАВИТЬ метку;

Я также мог бы легко сделать это через DB Browser. Я просто нажимаю на таблицу альбомов на вкладке «Структура базы данных» и нажимаю функцию «Изменить таблицу». Я могу добавлять или удалять строки, а также выбирать типы в качестве ограничения. Когда я вводил год выпуска в DB Browser, я заметил, что он не сортирует год выпуска правильно для записей, которые я добавлял. Я явно указал SQLite, что год выпуска — это число через меню, выбрав опцию «INTEGER», и это, похоже, решило проблему.

Как я отслеживаю свою музыкальную коллекцию с помощью простой базы данных SQLite

Можно добавить метку к уже добавленным альбомам с помощью команды UPDATE, например:

ОБНОВЛЕНИЕ альбомов УСТАНОВИТЬ метку = «Factory», ГДЕ исполнитель = «Joy Division»;

Для простых обновлений использование DB Browser может быть лучше, поскольку вы можете редактировать записи напрямую, и он автоматически использует транзакции для безопасности. Это также была возможность создать представление. Представление похоже на сохраненный поиск. Это позволяет вам сохранять сложные запросы, которые вы часто делаете.

Я создал один для своих виниловых альбомов:

СОЗДАТЬ ПРОСМОТР винила КАК ВЫБРАТЬ * ИЗ альбомов ГДЕ формат = «LP»;

Как я отслеживаю свою музыкальную коллекцию с помощью простой базы данных SQLite

Чтобы вернуться к моему представлению, я просто запускаю этот запрос, как будто представление — это другая таблица:

ВЫБЕРИТЕ * ИЗ винила;

Теперь я могу продолжать пополнять и просматривать свою музыкальную коллекцию, и SQLite сделал это возможным.

Как я отслеживаю свою музыкальную коллекцию с помощью простой базы данных SQLite

Валентин Павлов/ автор статьи
Страсть Влентина к играм началась с Resident Evil, и с тех пор он не переставал играть в хоррор-игры. Пишет экспертные руководства для самых сложных игр и обзоры для самых громких релизов. Является магистром журналистики и имеет степень бакалавра лингвистики. Любимые игры: GTA 5, Silent Hill 2, Call of Duty: Modern Warfare 2, Heavy Rain, Metro 2033 и другие.
Понравилась статья? Поделиться с друзьями:
Добавить комментарий