Найти в Дзене
Войти в IT

Что такое база данных, СУБД и язык SQL? Основы хранения данных для начинающих программистов.

Оглавление

В славном мире программирования существуют прикладные программы (понятный человеку интерфейс для решения прикладных задач), и базы данных (информация, которая как-то связана с этими задачами).

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

Прикладные программы обычно не хранят данные самостоятельно. Они используют другие специальные программы - для создания и работы с базами данных. Такие специальные программы называются СУБД - или "Система Управления Базами Данных".

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

СУБД - специальные программы для хранения данных 📦

Точно так же как и любая прикладная программа, СУБД запускается и работает на некотором физическом компьютере. Это не какая-то чудесная магия, а просто специальное приложения для решения специальных задач.

Точно так же СУБД обитает в некоторой физической папке с кучей разных файлов. И если например "Телеграм" предназначен для того, чтобы его открыл живой человек и написал туда сообщение - то СУБД в фоновом режиме "открывают" другие программы, и взаимодействуют с ней специальным образом.

В отличие от различных прикладных программ, СУБД это достаточно сложная штука. В университете, да и в принципе в любой системе доп.образования, они обычно проходятся отдельным курсом. Я бы даже сказал, что СУБД и базы данных - это целая отдельная наука, идущая если не "вровень", то очень близко к прикладному программированию.

Всё дело в том, что правильное хранение и быстрая обработка большого количества данных - это достаточно замысловатая задача. Мы живём в эпоху "тонких клиентов", где зачастую мобильное приложение является прослойкой между пользователем и сервером компании. И соответственно, практически любые крупные компании - будь то VK, Yandex, Telegram - решают задачи внешней коммуникации с живыми людьми. В это же самое время, решением внутренних задач, а именно решением задачи хранения огромных массивов генерируемых данных, занимаются разработчики СУБД.

Поэтому, как правило размер типового "клиентского" приложения не превышает 50-100 Мб. Задача таких "тонких" приложений в том, чтобы собирать данные со стороны мобильного устройства, и передавать их для дальнейшей обработки на сервер. В этом суть как мессенджеров, так и соцсетей. Ну а вот серверные задачи - это уже совсем другая история.

Простейшее представление "тонких клиентов". Конечные устройства используются для взаимодействия с пользователем. Физический сервер отвечает за "прием" и "передачу" информации. А СУБД занимаются хранением и предоставлением данных по запросу.
Простейшее представление "тонких клиентов". Конечные устройства используются для взаимодействия с пользователем. Физический сервер отвечает за "прием" и "передачу" информации. А СУБД занимаются хранением и предоставлением данных по запросу.

Представь себе базу данных Telegram - это порядка 700 миллионов пользователей и 600 тысяч каналов. Ежесекундно на сервер прилетают десятки тысяч сообщений, которые надо принять, обработать и сохранить. И в случае с известными мессенджерами, СУБД работают на сотнях серверов, синхронизированных и связанных между собой.

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

SQL - язык программирования для общения с базами данных 🔤

Для общения с базой данных используется язык SQL. Его можно отнести к языку программирования, хотя для более простого понимания - это скорее язык для управления данными. Основные команды такого языка: "добавить", "выбрать", "удалить", "изменить" - INSERT, SELECT, UPDATE, DELETE. Конечно есть ещё множество других команд и особенностей, но если сильно упрощать, то базовых команд всего четыре.

Язык SQL является стандартом, которым управляет ISO. Номер стандарта - ISO/IEC 9075-1:2016. (в современном варианте кажется его уже обновили до версии актуальной на 2023). Стандарт стараются поддерживать и актуализировать каждые несколько лет. Первая версия SQL появилась аж в 1974 году. Для желающих, более подробную информацию про историю SQL можно почитать в вики. А вот и один из авторов SQL, Дональд Чэмбэрлин, который создал этот язык в ходе работы в компании IBM:

Дональд Чэмбэрлин - один из авторов языка SQL
Дональд Чэмбэрлин - один из авторов языка SQL

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

Допустим, у нас есть таблица данных "users" - пользователи. И пусть у этой таблицы будет 2 столбца, "user_name" и "user_age" - то есть, имя и возраст пользователя. В этом случае, команды на вставку нового пользователя, и потом команда на поиск пользователя с возрастом 30 лет, будут выглядеть следующим образом:

INSERT INTO users (user_name, user_age) VALUES ('Александр', 33);
SELECT * FROM users WHERE user_age=33;

Работа с СУБД напрямую 👨‍💻

Пользователь так же может работать с СУБД напрямую. Для этого есть отдельный третий вид программ - которые очень похожи на окно чата, только на языке SQL. Так же с базой можно работать через текстовую консоль, или напрямую в специфическом коде из любого высокоуровневого языка. Выглядят такие пользовательские приложения весьма похожим друг на друга образом, как-то так:

Типичное приложение-IDE для работы с реляционной базой данных. В данном случае - приложение для работы с СУБД MySQL - среда MySQL Workbench,
Типичное приложение-IDE для работы с реляционной базой данных. В данном случае - приложение для работы с СУБД MySQL - среда MySQL Workbench,

Практически все современные приложения используют СУБД. Если приложение облачное (например Телеграм) - то вероятно СУБД работает на каком-то далёком сервере. Если приложение локальное - то оно самостоятельно разворачивает и запускает базу на твоём компьютере.

Много мобильных приложений так же используют локальные мини-СУБД внутри телефона. В общем и целом подводя итог статьи, базы данных это важная часть современного IT-мира. И если у тебя есть желание работать с данными - то посмотри в сторону СУБД. Это очень востребованное направление.

Абстрактное представления СУБД с точки зрения ИИ. Волшебный циллиндр, хранящий данные. Где-то там внутри фотографии бутербродов, котов и прочих весёлых историй.
Абстрактное представления СУБД с точки зрения ИИ. Волшебный циллиндр, хранящий данные. Где-то там внутри фотографии бутербродов, котов и прочих весёлых историй.

🔥 Понравилось? Подпишись! Победим восстание роботов вместе! 🔥

-6

🚀 P.S. Ты можешь круто поддержать меня и проект "Войти в IT" на boosty! Я публикую там более эксклюзивный и профессиональный, иногда немного личный контент. Хочешь посмотреть как я выгляжу в реальной жизни? Тогда жми: Ссылка 🚀

P.S.2 У меня ещё есть Telegram-канал. Там посты чуть попроще, и чуть повеселей. Ссылка