Продолжаем про базы данных! Теперь поговорим про работу с СУБД из внешнего мира. Под внешним миром я понимаю любые программы или графические оболочки, отличные от СУБД.
Как я и писал ранее, системы управления базами данных являются фоновыми программами. То есть, у них нет графического интерфейса. Такие программы замечательно работают внутри операционной системы, и общаются с внешним миром через язык SQL. То есть, для подключения к СУБД нам нужна какая-то специальная внешняя программа, у которой есть графический интерфейс.
Первое что стоит здесь отметить. Чтобы в принципе сделать что-либо с базой данных, нам сначала надо "подключиться" к СУБД. Доступ к таким системам осуществляется через протокол TCP-IP. То есть, нам нужно знать IP-адрес некоторой СУБД, а так же логин и пароль. Имея эти данные, мы можем подключиться к чьей-то базе, и начать работать с ней через специальные команды на языке SQL. Не суть важно, находится ли база данных на твоём компьютере, или работает где-то очень далеко в облаке. Принцип взаимодействия будет одинаковым, в обоих случаях.
Минимальным комплектом для экспериментов с СУБД на начальном этапе является сама СУБД, а так же программа - GUI, чтобы работать с базой данных через СУБД. Все это может звучать некоторым образом запутано, но на самом деле к этому быстро привыкаешь. И погружаясь глубже в программирование, со временем принимаешь эти концепции, и понимаешь почему это работает именно так.
СУБД - транзакционный подход 🔗
Возможно в данный момент у тебя возникнет вопрос - зачем было всё так сильно усложнять? Почему нельзя было сделать один-единственный файл, например xlsx или txt? Ответ на этот вопрос лежит в красивом слове "транзакционность".
СУБД это не привычный блокнот, в который можно зайти и написать какой-то текст, а потом сохранить его кнопкой в меню. В отличие от "блокнота", СУБД является транзакционной системой - и поддерживает конкурентное подключение к одной и той же базе для сразу множества пользователей. И это - краткий ответ на вопрос о том, почему СУБД работает так необычно, в сравнении с привычными программами.
Представь себе простой текстовый файл у себя на рабочем столе. Ты что-то пишешь в него, а потом сохраняешь. В этот самый момент, файл физически записывается на жёсткий диск. Все здорово и прекрасно! Пока ты работаешь с компьютером в одиночку, никаких проблем не возникает. Проблемы начинают возникать, если с одним и тем же файлом начинает одновременно работать много людей - например 5 человек, или 500 человек. В этом случае возникает нездоровая конкуренция за одни и те же ресурсы, а так же проблема организации очередности.
Вот ещё пример. База данных типового интернет-сайта как правило представляет из себя большое количество таблиц (50-100). Каждая из этих таблиц хранит в себе данные какой-то части сайта. Допустим, у нас есть таблица "статьи на сайте". У каждой статьи есть счётчик прочитавших, и соответственно в таблице "статьи" (articles или posts или любое другое название) внутри базы данных есть столбец "количество прочитавших". Представь такую ситуацию - каждый раз когда на страничку со статьей заходит человек, нужно увеличить счетчик просмотров на +1. И предположим, что на статью зашло сразу 500 человек. То есть, одновременно 500 раз произошёл запрос на увеличение столбца "количество прочитавших". В этом случае нужно принимать какие-то более сложные решения, так как происходит путаница и большая конкуренция за одну-единственную ячейку с данными.
Третий пример - на том же самом сайте, 3 человека одновременно редактируют одну и ту же статью. Как правильно поступить, когда все трое одновременно нажмут на кнопку "сохранить"?
СУБД - прослойка между физическими данными и пользователями 👨💻
Именно для разрешения проблем совместного доступа к одним и там же данным придумали СУБД. То есть, СУБД является прослойкой между физическим файлом с данными, и внешними клиентами. Именно СУБД отвечает за то, чтобы правильным образом принимать тысячи одновременных запросов, и организовывать их таким образом, чтобы ничего не ломалось.
Каждый входящий запрос в СУБД упорядочивается по определенным правилам, и ставится в очередь на выполнение. Данные внутри физического файла меняются последовательно, от одного запросу к другому. Каждое такое изменение данных внутри файла (внутри физической базы данных) называется "транзакция". Все транзакции так же сохраняются в специальный лог-журнал. Это позволяет точно знать - кто, когда и что именно поменял внутри базы данных.
Вот именно для решения этой проблемы и сделана СУБД. Когда с одним и тем же файлом (таблицей) одновременно начинает работать несколько десятков тысяч человек, возникает полный хаос. Смысл применения и такой сложной организации СУБД в том, чтобы организовать десятки тысяч хаотичных запросов в последовательную цепочку изменений конкретного файла с данными.
GUI - интерфейс для работы с СУБД 🔌
Один из самых простых способов работы с какой-либо СУБД - это программы GUI - Graphical User Interface. То есть, это упрощенный графический интерфейс, внутри которого наподобие Excel можно добавлять и удалять таблицы, заполнять их данными и потом сохранять все это. Каждое такое изменение таблицы будет автоматически сконвертировано в SQL-запрос, который потом превратится в транзакцию.
В конечном итоге, GUI-программы выглядят очень похоже на обычный Excel. Отличие в том, что Excel сохраняет данные напрямую на диск. А GUI-программа упаковывает текущее состояние таблиц в SQL-команды, и отправляет их на сервер. После чего, сервер производит запрошенные действия над данными. С моей точки зрения, для старта в IT и изучения СУБД, желательно начинать именно с GUI-программ (а не с консоли как это советуют в некоторых курсах).
Вот так выглядит типовой GUI на примере MySQL - программа MySQL Workbench. Сначала Workbench предлагает авторизоваться (ввести адрес SQL-сервера, логин и пароль). А на втором этапе отображается сам интерфейс для управления базой данных.
Несколько GUI для различных СУБД 📋
Для разных СУБД существует множество разных GUI-программ. Вот короткий список некоторых из них:
🐬 MySQL - MySQL Workbench / выбор редакции
🐬 MySQL - phpMyAdmin (только для сайтов)
🐬 MySQL - DBForge Studio
🐘 PostgreSQL - pgAdmin / выбор редакции
🐘 PostgreSQL - DBeaver
🕊 SQLite - DBBrowser
🕊 SQLite - Beekeeper Studio
Нельзя сказать, что надо использовать какие-то определенные GUI, а другие не надо использовать. Так же нельзя сказать что какие-то GUI работают принципиально лучше или хуже других. В целом по рынку, программы для клиентского подключения к базам данным плюс-минус похожи друг на друга. Поэтому, ты можешь попробовать несколько различных программ, и выбрать ту которая наиболее удобна именно тебе.
🔥 Понравилось? Подпишись! Победим восстание роботов вместе! 🔥
🚀 P.S. Ты можешь круто поддержать меня и проект "Войти в IT" на boosty! Я публикую там более эксклюзивный и профессиональный, иногда немного личный контент. Хочешь посмотреть как я выгляжу в реальной жизни? Тогда жми: Ссылка 🚀
P.S.2 У меня ещё есть Telegram-канал. Там посты чуть попроще, и чуть повеселей. Ссылка