Перейти к основному содержимому

3.05. Основы баз данных

Разработчику Аналитику Тестировщику
Архитектору Инженеру

Общее по работе с БД

Мы рассмотрели, что такое данные, информация, изучили, как работают сайты, и что такое программы. Мы упоминали БД, СУБД, но не погружались в суть. Как стало ясно, данные являются структурированными каким-то образом, и не лежат «кучей».

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

Представим, что у нас есть множество коллег. Их номера телефонов и имена мы где-то записываем – в блокноте. Такой блокнот и выступает в роли базы данных. И в IT таким же образом хранятся данные пользователей, товары каталога, посты в соцсетях, фильмы, игры, книги, музыку и прочее. Базы данных позволяют быстро находить, изменять, добавлять данные, избегать их потери, а также дают возможность многим программам работать с одними и теми же данными. Программа словно говорит БД «дай мне список пользователей!», БД ищет данные, и возвращает их программе, которая показывает результат пользователю. Всё это происходит за считанные доли секунды, даже если данных миллионы.


Схема базы данных – описание содержания, структуры, ограничений целостности, словом, это определение таблиц, полей, ключей, словарей и прочей информации, касающейся структурирования и порядка. Схема бывает следующих уровней:

  • Концептуальная схема – отображает концепции и их связи;
  • Логическая схема – карта сущностей и их атрибутов и связей;
  • Физическая схема – частичная реализация логической схемы.

Таким образом, существуют некие «сущности» - наборы данных. Эти наборы данных как-то связаны друг с другом – это связи. Сущности обладают какими-то особенностями и свойствами – атрибутами.

Моделирование данных определяет правила и принципы создания модели данных.

Модель данных – это абстрактное, самодостаточное и логическое определение объектов, операторов, которые в совокупности составляют машину доступа к данным, с которыми взаимодействует пользователь или программа. Это, если проще, карта сущностей.

Сущности могут быть определены наличием связей (реляции, от английского relationship – отношения). И как раз реляционные базы данных – это SQL, а нереляционные – NoSQL.

image.png

В примере выше, мы видим две сущности - «Пользователь» и «Группа». Они связаны между собой следующим образом - у каждого пользователя есть поле «Группа». Оно содержит ID сущности «Группа», таким образом ссылаясь на запись с таким ID.

Такие диаграммы называют ER (Entity Relationship), и они строятся именно при проектировании. На самом деле это просто таблицы, которые содержат набор данных.


  1. Реляционные (SQL) БД. Данные хранятся в таблицах, как в Excel, где имеется чёткая структура в строгом формате, а для работы с данными используется язык SQL.

Пример:

IDИмяE-mailВозраст
1Аннаanna@mail.com25
2Иванivan@mail.com30

База данных имеет структуру в виде таблиц, и в таблице «Пользователи» определены столбцы «ID», «Имя», «E-mail», «Возраст». Каждый столбец (колонка) обладает своими требованиями к типу данных и количеству символов.

Примеры SQL-БД: MySQL, PostgreSQL, Microsoft SQL Server.

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


  1. Нереляционные (NoSQL) базы – это гибкие хранилища без жёстких таблиц. Данные могут быть в любом формате, что позволяет быстро работать с огромными объёмами данных, легко масштабировать, и менять структуру когда угодно:
{
"id": 1,
"name": "Анна",
"email": "anna@mail.com",
"hobbies": ["рисование", "путешествия"]
}

В данном случае у каждой записи есть ключи («id», «name», «email», «hobbies») и значения («1», «Анна», «anna@mail.com», «рисование» и «путешествия»).

Примеры NoSQL-БД: MongoDB, Redis, Cassandra.

Если вы уже работали с БД, то вы обратили внимание, что приведено в примерах SQL и NoSQL баз данных (MySQL, MongoDB) – это на самом деле не БД, а СУБД. БД – сама структура данных, а СУБД – система управлениями базами данных.

SQL и NoSQL – когда применять? На самом деле всё просто. Если вам нужна структура, порядок, будто библиотека, где всё расставлено по полкам, авторам, номерам – выбираем SQL. Если нам важна скорость, гибкость для хаотичных или огромных данных, где всё лежит в «куче», то выбираем NoSQL.

Важно отметить, что наука о данных крайне широкая, и мы рассмотрим её во втором томе, погрузившись как в NoSQL, так и в SQL.


Типы моделей данных

Модели данных, конечно, бывают не только реляционными и нереляционными. Если погрузиться, всё намного сложнее. Давайте рассмотрим их с более глубоким делением:

ТипОписаниеСУБД
РеляционнаяДанные хранятся в таблицах, связи между ними строго определеныMySQL, PostgreSQL
ДокументнаяДанные хранятся в формате JSON/BSON, каждая запись может быть уникальнойMongoDB
Ключ-значениеОчень простая модель, данные хранятся как пары ключ-значениеRedis
ГрафоваяДанные представлены в виде вершин и связей между нимиNeo4j, Amazon Neptune
Иерархическая / сетеваяУстаревшие модели, использовались в ранних БДIBM IMS