История появления баз данных: БД и СУБД

Давным-давно в одной американской стране, в крупной IТ-компании однажды возникла задача хранения ну очень больших объемов данных. Что же в этом сложного, спросишь ты? Ведь у крупных компаний есть деньги, а значит, можно купить жестких дисков побольше — и все дела.

Отличное решение, но, как говорится, дьявол кроется в деталях. Большие объемы данных нужно было не только хранить, а еще менять, и делать из них различные выборки. Причем выбирать нужно разные данные из разных мест, а также делать это быстро и красиво.

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

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

Но заказчиков такая презентация не устроила, и дальше посыпались придирки:

  • Где деньги, Лебовски?
  • Чем же База Данных лучше, чем старое доброе хранение данных в виде набора файлов?
  • Нам нужно действительно хорошее решение, а не вот это вот все!
  • И на это ушел весь бюджет?

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

  • Создавать, менять и удалять Базы Данных
  • Вносить изменения в базы данных, а именно: добавлять новые записи, удалять старые и менять их
  • А также супер быстро выполнять различные выборки любых данных

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

Программисты просто еще не успели закончить проектировать этот язык, поэтому в презентации нет ни слова об SQL и СУБД.

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

Менеджеры и Технический директор начали поздравлять друг друга с успешной сдачей проекта, и сразу же поехали отмечать это дело, так до конца и не поняв, что младший программист во всей этой истории наиглавнейший человек…

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

На сегодняшний момент (лето 2022 года) существуют сотни популярных СУБД, поэтому вам будет полезно узнать о некоторых из них. С чего бы начать…

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

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

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

Oracle Database

Компания Oracle выпустила свою первую базу данных еще в 1979 году (43 года назад). Она сразу носила название Oracle 2.0, чтобы убедить клиентов, что продукт не новый, а проверенный временем.

Текущая версия базы — Oracle 21c, где буква c — от слова cloud, что как бы намекает, что компания Oracle идет в ногу со временем и ее решения отлично совместимы со всеми облачными технологиями.

Microsoft SQL Server

Компания Microsoft зарабатывает кучу денег, продавая не Windows, а серверные решения для среднего и крупного бизнеса. Microsoft Office, Microsoft SharePoint, Microsoft Server и т. д. И, конечно же, для всего этого нужна хорошая база данных. Поэтому куча компаний, используя продукты и решения Microsoft, вынуждены использовать ее базу данных.

СУБД от Microsoft называется просто SQL Server, так что если услышишь на собеседовании вопрос “работали ли вы с SQL Server?”, то знай, что имеется в виду не абстрактная СУБД, а именно Microsoft SQL Server.

PostgreSQL

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

MySQL

MySQL — это очень популярная бесплатная СУБД с открытым исходным кодом. Она хорошо документирована, быстро работает, поддерживает большой набор функций. На сегодняшний день доступна 8-я версия этой СУБД.

В 2008 ее купила компания Sun, которую в 2009 купила компания Oracle. И это пошло ей только на пользу — продукт постоянно развивается и улучшается.

Мы будем учиться работать с базами данных именно на примере MySQL Community Server 8.0.

Таблицы в базе данных: колонки и столбцы

Разные СУБД могут хранить данные в разных форматах, поэтому мы возьмем самый простой и классический вариант – СУБД MySQL.

И сразу вопрос: как хранить, например, какие-нибудь бухгалтерские документы? Самый простой вариант – это хранить каждый документ в виде Excel-файла. Тогда все связанные друг с другом документы можно хранить в одной папке. Примерно так работает и MySQL.

Еще одна аналогия: в языке Java у тебя в проекте есть классы и пакеты, но в то же время классы и пакеты на диске представлены в виде файлов и папок. Что-то похожее есть и в MySQL.

Данные MySQL хранят в виде таблиц, которые объединены в базы данных, но в то же время таблицы и база представлены на диске в виде файлов и папки. База данных — это папка, а файлы в ней — таблицы.

Каждая таблица состоит из колонок и строк. Пример:

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

Можно провести аналогию между таблицей в MySQL и классом в Java. Таблица — это класс, у таблицы, как и у класса, есть уникальное имя. Колонки таблицы — это поля класса, у колонок, как и у полей, есть уникальное имя и тип. Строки таблицы — это экземпляры класса в Java.

Класс может существовать без объектов, а таблица — без строк. В Java можно создать новый объект, а в MySQL в таблицу можно добавить новую строку. У объекта можно поменять значения полей, а в MySQL можно поменять значения в строке.

Правильнее даже сказать, что таблица — это не класс, а коллекция объектов определенного класса. Если в MySQL у нас есть таблица Employee с данными по сотрудникам, то в Java мы бы пользовались коллекцией ArrayList.

И, конечно, сразу возникает вопрос: а как получить определенные данные из этой коллекции?