Код
#статьи

База данных: что это такое и зачем она нужна

Рассказываем, как работают базы данных, почему их используют, какие они бывают и чем отличаются от СУБД.

Иллюстрация: Shutterstock / imgix / jms / Arina Bondar / Unsplash / Polina Vari для Skillbox Media

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

Что такое база данных

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

База данных (БД) — это набор данных, который как-то структурирован. Например, можно взять сто картинок с котами и отсортировать их по цвету или по позе.

Отсортировали котов по их позе и цвету: тёмные — левее, светлые — правее
Иллюстрация: Polina Vari для Skillbox Media

Обычно данные в БД записывают в виде таблицы — строк и столбцов. В такой архитектуре каждая строка — это новый элемент, у которого есть некоторые свойства — столбцы. Тех же котов можно отсортировать по множеству параметров — например, цвету, позе и весу.

Каждый кот — это отдельная строка, а каждый его параметр (цвет, поза, вес) — столбец
Иллюстрация: Polina Vari для Skillbox Media

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

Например, вы хотите найти элемент по индексу и решили написать программу, которая умеет это делать. А затем вам вдруг понадобилось отсортировать записи в БД по каким-то параметрам. И вы пишете ещё один скрипт, который уже умеет сортировать таблицы. Так вы продолжаете создавать всё новые и новые мини-программы для разных мини-задач.

Программ много — разработчик один
Иллюстрация: Polina Vari для Skillbox Media

В итоге у вас копится куча полезных скриптов на все случаи жизни и вы понимаете: «А зачем каждый раз писать что-то новое, объединю-ка я эти скрипты в одну программу и назову её системой управления базами данных, или СУБД». Так что СУБД позволяют просто манипулировать данными в БД — например, доставать элементы, добавлять новые и удалять ненужные, не отвлекаясь на код.

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

Для чего нужны базы данных

Давайте на примере рассмотрим, зачем люди используют базы данных.

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

Для этого мы создадим базу данных и добавим в неё наши музыкальные инструменты. В итоге получится большая таблица, каждая строка которой — отдельный инструмент, а каждый столбец — его свойство. Среди свойств мы пока остановимся на трёх: цена, количество товара на складе и тип инструмента.

Так будет выглядеть наша таблица
Иллюстрация: Polina Vari для Skillbox Media

Теперь, когда у нас есть база данных со всеми товарами, мы должны понять, что именно мы будем с этими данными делать. Вот основные операции, которые пригодятся интернет-магазину:

  • Записать новые данные. Чтобы мы могли добавить новый инструмент, когда он приедет на склад.
  • Изменить старые данные. Чтобы изменить цену товара или его количество на складе.
  • Найти данные. Чтобы найти, например, все синтезаторы и показать клиенту.
  • Позволить читать данные только работникам, а всем остальным закрыть доступ. Чтобы клиенты сами не меняли цены товаров и не получали их бесплатно.
  • Поддерживать данные в порядке. Чтобы быть уверенным: в категории «Гитары» будут лежать именно гитары, а не барабаны.
  • Масштабировать базу данных. Чтобы добавлять новые данные и не переживать об ограничениях по объёму.
  • Ничего не потерять. Чтобы, даже если магазин сгорит, мы всегда могли восстановить базу данных.

Эти принципы применимы к любой базе данных, а не только к нашему примеру.

Чем управление базами данных отличается от управления электронными таблицами

Если бегло посмотреть на базу данных и электронную таблицу, можно не увидеть разницы. Но она есть — и сейчас мы о ней расскажем.

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

Вот вы садитесь за работу, открываете эту таблицу и вносите в неё какие-то изменения. Параллельно с этим ваш коллега тоже открыл её и начал вносить изменения — причём в те же колонки или строки, в которых работаете вы. Вы доделали работу, сохранили файл и закрыли его. Данные перезаписались в таблицу. Но ваш коллега не увидит эти изменения, потому что он открыл файл раньше. Поэтому когда он сохранит свой файл, то перезапишет ваши данные своими, а ваши изменения пропадут.

Если работать без базы данных, легко потерять эти данные
Иллюстрация: Polina Vari для Skillbox Media

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

С СУБД всё будет работать в режиме очереди, и никто не потеряет данные
Иллюстрация: Polina Vari для Skillbox Media

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

Типы баз данных

Базы данных разделяют на два основных типа: реляционные и нереляционные. Последние делятся ещё на два: сетевые и иерархические. Получается, существует три главных типа баз данных — реляционные, сетевые и иерархические.

Реляционные

Ещё их называют табличными — из-за того, что все данные они хранят в виде таблиц. Эти таблицы внутри связаны друг с другом, поэтому получается такая связная структура:

Пример реляционной базы данных
Иллюстрация: Polina Vari для Skillbox Media

У нас есть две таблицы — с покупателями и товарами. Когда покупатель что-то покупает, данные добавляются в третью таблицу. Там находится информация о купленных товарах и ссылки на них.

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

Графовые

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

Сетевые базы данных применяют, например, в соцсетях:

Например, так выглядит сетевая структура ваших знакомых
Иллюстрация: Polina Vari для Skillbox Media

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

Иерархические

Такая структура похожа на файловую систему в Windows. У каждого элемента есть вышестоящий элемент, а есть и подчинённый элемент — тот, что ниже. Поэтому по этой структуре легко перемещаться снизу вверх и сверху вниз.

Иерархическая структура на компьютере
Изображение: Microsoft Corporation

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

Популярные СУБД

Базы данных особо не отличаются друг от друга. Они просто хранят информацию в файле. А вот то, что отличается, — это СУБД. И обычно, когда говорят про базы данных, имеют в виду СУБД. Давайте посмотрим, какие из них популярны. Если хотите подробнее прочитать о них — смотрите нашу статью о СУБД.

PostgreSQL

СУБД имеет большую функциональность и высокую производительность — например, она без проблем может работать с большими данными под высокой нагрузкой.

Язык запросов — SQL, но его можно поменять через расширения на PL/Python, PL/Java и PL/Perl. И ещё одно преимущество PostgreSQL — в ней нет лимита по размеру баз данных и числу записей в таблицах.

Посмотреть можно на официальном сайте.

Интерфейс PostgreSQL
Скриншот: PostgreSQL

MySQL

Интерфейс программы позволяет работать с таблицами разных форматов. MySQL работает онлайн и вмещает до 50 миллионов элементов. По функциональности она уступает PostgreSQL. При этом её можно интегрировать с другими СУБД.

MySQL использовали для сайтов и интернет-магазинов такие компании, как Twitter, Alibaba, Meta, Wikipedia.

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

Скачать эту СУБД можно на официальном сайте.

Интерфейс MySQL
Изображение: MySQL

Microsoft SQL Server

Эта СУБД добавляет автоматизацию задач — например, можно задать скрипт, который будет управлять памятью. Ещё Microsoft SQL Server позволяет удобно хранить сложные структуры данных и быстро искать их.

СУБД совместима с другими программами Microsoft — например, Excel и Access. С ними можно сделать интеграцию и выгружать данные оттуда, а также изменять их онлайн.

В качестве языка запросов Microsoft SQL Server использует язык SQL.

Посмотреть можно на официальном сайте.

Интерфейс Microsoft SQL Server
Изображение: Microsoft

SQLite

SQLite очень компактная СУБД, которая не использует серверы и другие утилиты. Все данные хранятся на одном устройстве.

На SQLite можно написать простой сайт или приложение, у которого будет ограничен трафик и объём данных. СУБД работает на любых устройствах — смартфонах, компьютерах, ТВ и других, куда можно загрузить библиотеку. Она не нуждается в администрировании, а её язык запросов — C.

Посмотреть можно на официальном сайте.

Интерфейс SQLite
Скриншот: sqliteexpert.com

MongoDB

Главная особенность этой СУБД — данные представлены в виде текстовых документов, которые записаны в формате JSON. MongoDB — NoSQL-СУБД.

Вместо таблиц здесь данные в виде коллекций — групп документов. СУБД оптимизирована для распределённой работы, но также поддерживает локальное хранение данных.

MongoDB используют такие компании, как Meta, Google, Twitter, Forbes, IBM, а также многие интернет-магазины.

Посмотреть можно на официальном сайте.

Интерфейс MongoDB
Скриншот: studio3t.com

Redis

Redis можно использовать в облаке — полностью готовую к работе и оптимально настроенную. Она легко масштабируется и управляется.

В Redis можно перенести данные из другой базы данных с помощью автоматизированного сервиса.

Посмотреть можно на официальном сайте.

Интерфейс Redis
Скриншот: Hector Hernandez / stackoverflow.com

Oracle Database

Oracle DB работает как клиент-сервер. Это значит, что она располагается на сервере вместе с базой данных. Поэтому, чтобы работать с ней, нужен специальный интерфейс приложения-клиента. Пользователь управляет пересылкой и получением данных от сервиса.

Oracle DB обеспечивает высокую безопасность и лёгкий доступ для пользователей. Ещё она позволяет снизить нагрузку на клиентские компьютеры. При этом сервер для СУБД должен быть помощнее.

Посмотреть можно на официальном сайте.

Интерфейс Oracle DB
Скриншот: sqlmanager.net

Что запомнить

  • База данных — это набор элементов, которые сгруппированы по определённым правилам. Они бывают реляционными, графовыми и иерархическими.
  • СУБД — это инструменты, которые помогают управлять базами данных. Например, с их помощью можно удалять, изменять и находить элементы.
  • Популярные СУБД — PostgreSQL, MySQL, Microsoft SQL Server, SQLite, MongoDB, Redis, Oracle Database.
  • Базы данных отличаются от СУБД тем, что сами по себе представляют лишь файл на компьютере. Базы данных не умеют ничего делать с этими данными — только хранить. А вот СУБД уже предоставляют возможности по манипуляции ими.
  • Электронные таблицы очень похожи на базы данных, но имеют большой недостаток: если несколько пользователей будут использовать одну таблицу одновременно, есть риск перезаписать данные друг поверх друга и потерять их. С базами данных такого не случится, потому что они обрабатывают запросы по очереди.

  • * Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности».


Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована