JavaRush/Курсы/Модуль 4. Работа с БД/Знакомство с базами данных

Знакомство с базами данных

Открыта

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

Давным-давно в одной американской стране, в крупной 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 .

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

Комментарии (36)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Alexander Dayneka
Уровень 19
20 марта 2024, 15:10
Всем привет, тем кто ищет задач по данной теме вот вам сайт https://sql-academy.org/ru Это сборник задач по SQL идет +- вровень с лекциями с нашего любимого джава раш. Если это оказалось вам полезно накидайте лайков для ачивок)))
9 мая 2025, 15:37
23 октября 2023, 11:25
На данный момент, я начинающий, и не знаю там всех тонкостей работы с БД. Но если что, сходу, отвечая на часто задаваемый вопрос: С БД можно работать и без ultimate idea, в обычной community, более того и вовсе не нужно скачивать какой нибудь дополнительный плагин, типа DB Navigator(аналог встроенного в ultimate), или еще чего то.. подобные фишки это просто UI для удобства...
Madina Baizhanova
Уровень 29
22 августа 2023, 06:24
Станислав Future
Уровень 39
20 апреля 2023, 13:04
Сейчас никого не удивишь базой данных из кластера в пару тысяч серверов
а я вот удивился
LuneFoxJava Developer в BIFITExpert
15 июня 2024, 14:15
Срочно надо переписывать статью! "Сейчас только одного человека удивишь базой данных из кластера в пару тысяч серверов"
Роман
Уровень 88
29 декабря 2024, 15:46
блин, ну я тоже удивился, так что исправьте на "двух" пожалуйста
BlackGrizzli Team
Уровень 46
18 февраля 2023, 20:16
А вы знали, чтобы работать с DATABASE в idea нужна платная версия), ну или триал полной версии и успеть за месяц все освоить)
Войтов Роман
Уровень 41
3 марта 2023, 13:41
Поговаривают что если зайти на один интересный сайт, который начинается на "ru" заканчивается на "racker.org", то там в поиске можно набить IntellijIDEA и скачать не совсем актуальную но вполне рабочую и даже бесплатную Ultimate Edition
BlackGrizzli Team
Уровень 46
3 марта 2023, 15:18
Это же хорошо)
Alexander Katsuragi
Уровень 9
Expert
13 марта 2023, 12:39
Как бесплатный и честный вариант - Jetbrains EAP, можно получить ультимейт версию идеи бесплатно.
EM1LJAN
Уровень 26
14 июня 2023, 17:10
есть плагины которые позволяют работать с базой данных без ultimate, но работоспособность data jpa не проверял еще
20 июля 2023, 11:30
Попробуйте поставить отдельный UI для работы с БД. Они как правило бесплатные. Например для работы с Postgres SQL очень хорошо справляется DBeaver.
1 октября 2023, 08:07
можно каждый месяц на новую почту подписку делать) и пользоваться на здоровье) то же самое и спринга нету и tomcat и многого другого в бесплатной версиии
NodeOne
Уровень 41
Expert
10 октября 2023, 09:26
JPA Baddy если хочется в IDE с базой работать.
Иван
Уровень 16
11 ноября 2023, 09:55
Это не соответствует действительности.
TemaCode
Уровень 51
30 декабря 2022, 17:21
ехх, жалко без задачек, в любом случае Спасибо разработчикам и с Наступающим Новым Годом!
30 декабря 2022, 20:08
иди на сайт sql-ex, там можно люто прокачаться
TemaCode
Уровень 51
1 января 2023, 09:07
ну спасибо Кэп, а то я не знал-))
Gans Electro
Уровень 4
6 января 2023, 11:19
звучит как рофл, или как сарказм
DregidBackend Developer в Сбер
29 декабря 2022, 02:16
Главное чтобы не было также как и с JSP)
Kostiantyn BuhaiovJava Developer в NgSoft
31 декабря 2022, 13:41
а что там с JSP а то я еще не дошел)
DregidBackend Developer в Сбер
31 декабря 2022, 19:14
Задачек нету)
Vladimir
Уровень 40
Master
22 января 2023, 09:40
Задачи по SQL тут найдешь.
DregidBackend Developer в Сбер
23 января 2023, 02:57
Зачем мне еще SQL?) Я уже давно все что мне нужно получил на sql-academy и на sql-ex. Лишнюю практику (хотя она таковой не бывает) можно на тех же сайтах получить. Здесь же была разведка.
Fl1s Backend Developer
13 августа 2023, 05:41
Стоит проходить sql-academy?
DregidBackend Developer в Сбер
15 августа 2023, 13:04
Да, стоит. Там сейчас обновили бесплатный курс и его теперь намного приятней проходить чем раньше
Arima-
Уровень 25
28 декабря 2022, 12:22
Жду задачи
Konstantin Ionov
Уровень 19
25 декабря 2022, 07:50
Надеюсь задачки будут к этому модулю.Респект)
Serg_am
Уровень 1
24 декабря 2022, 13:26
Не верю своим глазам!))) Разработчикам жму руку, молодцы!) Еще бы задачки к этому курсы, вас можно было бы расцеловать!😄