Зачем нужны базы данных? Данные, с которыми работают программы, не существуют сами по себе: их нужно как-то хранить, уметь добавлять, извлекать, читать, обновлять и удалять. Все эти действия было бы сложно проводить, если базы данных не имели бы конкретной продуманной структуры. В этом уроке мы изучим подробнее архитектуру баз данных, чтобы лучше представлять себе то, с чем предстоит работать далее в курсе.
Сложность СУБД
Программы 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. Это поведение можно изменить, если задать соответствующие параметры. Но пока этот вопрос мы не будем рассматривать подробно.
Выводы
В этом уроке мы изучили архитектуру баз данных. Теперь мы лучше представляем, с чем нам предстоит работать далее в курсе. Также мы узнали, что БД и СУБД — это разные вещи. В первом случае речь идет о хранилище данных, у которых определенная внутренняя структура. Но чтобы обслуживать ее, применяют систему управления базами данных, которой и является СУБД. Она реализуется как клиент-серверное приложение.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар «Как самостоятельно учиться»