Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Архитектура СУБД Основы реляционных баз данных

Архитектура PostgreSQL

Зачем нужны базы данных? Данные, с которыми работают программы, не существуют сами по себе: их нужно как-то хранить, уметь добавлять, извлекать, читать, обновлять и удалять. Все эти действия было бы сложно проводить, если бы базы данных не имели бы конкретной продуманной структуры. В этом уроке мы изучим подробнее архитектуру баз данных, чтобы лучше представлять себе то, с чем предстоит работать далее в курсе.

Сложность СУБД

Программы Postgresql, Mysql, Oracle, SQL Server являются СУБД — Системой Управления Базами Данных. СУБД не то же самое, что и база данных (БД). БД — это хранилище данных, у которых определенная внутренняя структура. Но кто-то должен ее обслуживать: создать, обновлять, записывать в нее данные, выбирать их. Именно этим и занимается СУБД — специальная программа, которую необходимо установить на ту машину, где планируется размещать базу данных.

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

  • Как потом найти эти данные?
  • А если разные данные имеют разную структуру и разный размер?
  • А что, если данные понадобятся нескольким пользователям одновременно?
  • А что, если во время обновления произойдет сбой?
  • А если данных станет настолько много, что они не поместятся в один файл?

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

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

Как устроены СУБД

СУБД реализуется как клиент-серверное приложение:

  • Сервером выступает сама СУБД — она управляет файлами баз данных, принимает запросы от клиентов и выполняет их команды
  • Клиентом считается любое приложение, желающее взаимодействовать с базой данных.

Клиентские приложения могут быть разнообразны по форме:

  • Текстовая утилита
  • Графическое приложение
  • Веб-сервер, использующий базу данных для отображения веб-страниц
  • Специализированный инструмент для обслуживания баз данных

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

Иногда сервер и клиент располагаются на одной машине. Это удобно во время разработки:

Клиент Серверная Архитектура СУБД

Утилита psql с точки зрения СУБД является клиентом. Если СУБД не запущена, то консоль не сможет запуститься:

psql
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
    Is the server running locally and accepting connections on that socket?

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

Выводы

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


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

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

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
с нуля
Разработка веб-приложений на Django
2 февраля 10 месяцев
Иконка программы Java-разработчик
Профессия
с нуля
Разработка приложений на языке Java
2 февраля 10 месяцев
Иконка программы PHP-разработчик
Профессия
с нуля
Разработка веб-приложений на Laravel
2 февраля 10 месяцев
Иконка программы Инженер по тестированию
Профессия
с нуля
Ручное тестирование веб-приложений
2 февраля 4 месяца
Иконка программы Node.js-разработчик
Профессия
с нуля
Разработка бэкенд-компонентов для веб-приложений
2 февраля 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
с нуля
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
2 февраля 16 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

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