Под катом — конспект открытого занятия Нетологии, посвящённого работе с базами данных. Сразу предупреждаем: это для новичков и для тех, кто хочет посмотреть, как выглядит рабочий стол аналитика данных. На лекции коротко рассказываем, как работать с базами данных, какие для старта нужны инструменты — и что с ними делать.

Зачем нужны базы данных

Основная функция БД — хранение информации по одной теме и свободный мгновенный доступ к ней. Если раньше, очень много лет назад, приходилось ногами идти в архив, потом — строить сложный массив формул в Excel, то теперь всё это можно сделать за пару щелчков мыши.

Алексей Кузьмин

Директор разработки ДомКлик.ру.

База данных может содержать всё, что угодно: приглашения на свадьбу, информация о каждом клиенте, который когда-либо быть в банке, история покупок в магазине, даже количество забитых голов игроками всех юношеских сборных. Единственное ограничение — осмысленность. Какую-то информацию стоит хранить, а к какой-то никто никогда не обратится, поэтому и не надо занимать место в хранилище. В нашем курсе мы сосредоточим внимание на СУБД Posgres с открытым исходным кодом и языком SQL. Это популярная среди аналитиков баз данных система, которая во многом не уступает коммерческим.

Основные понятия для аналитиков БД

База данных — структурная совокупность взаимосвязанных данных определённой предметной области: реальных объектов, процессов, явлений и так далее.

Структура любой БД делится на две области: сущности и их связи с реальностью и между собой.

  • Клиентская база банка. Клиенты — это сущности. А то, какие продукты у них подключены, — связи.

  • Складская база аптеки. Медикаменты — сущности, а и их наличие или отсутствие — связь.

База данных хранит информацию в виде ER-модели. Название происходит от английского Entity-Relationship, «сущность-связь». 

СУБД — программа, или программный пакет, с помощью которого осуществляют хранение, обработку и поиск информации в БД.

Сама БД — это просто хранилище. Если сравнивать с архивом, то БД — комната со стеллажами, где документы тщательно рассортированы. Искать в этом массиве нужный документ, текст или строку можно, но это на этой уйдет много времени. Чтобы быстро находить нужные сведения, группировать или выгружать данные, нужна специальная программа — СУБД.

Функции СУБД:

  • ввод данных,

  • хранение,

  • манипулирование,

  • обработка запросов к БД,

  • поиск,

  • выборка,

  • сортировка,

  • обновление,

  • защита от несанкционированного доступа или потери.

Инструментарий курса

Что нам потребуется, чтобы изучить основы SQL:

  1. Docker — лёгкая виртуальная машина, мини-компьютер, развёрнутый на вашем ПК. Позволяет взаимодействовать с базой данных и СУБД, не модифицируя операционную систему.

  2. Kitematic — графический интерфейс для Docker, который позволит работать с тестовой базой данных.

  3. Postgresql — сама СУБД, которая пользуется языком SQL.

  4. DBeaver — программа для подключения к СУБД. Нужна, чтобы писать запросы на языке SQL и получать ответ от СУБД.

Практика. Пробуем инструменты на вкус

Docker

Чтобы скачать, проходим по ссылке, создаём аккаунт и скачиваем ПО. После этого можно работать с виртуальными машинками, которые в терминологии Docker называются контейнерами. Так что нам не потребуется системный администратор.

Kitematic

Ссылка для скачивания выглядит тут. Мы получим среду для управления Docker при помощи графического интерфейса, или GUI. Нам нужна последняя версия.

Убеждаемся, что Docker запущен. На MAC вверху справа должен отображаться соответствующий значок в виде кита. В Windows значок Docker is running отображается справа на панели задач. При проблемах с установкой может понадобиться руководство. Если программа остановлена, нужно дважды щёлкнуть по иконке с китом.

Запускаем приложение Kitematic. Вводим логин и пароль. Это данные того самого аккаунта, который мы создавали, чтобы скачать Docker.

Перед нами откроется окно. Область в центре — самые популярные из доступных контейнеров. Область справа — запущенные контейнеры, сейчас здесь пусто. Строка сверху — поиск по контейнерам.

В строке поиска вводим Postgres-dvdrental и выбираем контейнер от команды arcadeanalytics. Это БД магазина, который даёт в аренду DVD-диски.

Контейнер отобразится в левой области окна Kitematic. Образ СУБД загрузится на ваш ПК. Чтобы убедиться, что контейнер запущен, наводим на него курсор и смотрим на верхнюю часть окна. Здесь должна быть кнопка STOP и зелёная надпись Running. Если их нет, а серая кнопка — Start, нажимаем её.

Если ничего-ничего не помогает, и СУБД не отвечает, щёлкаем по ней и нажимаем «крестик» — удалить. Ничего особо важного мы в неё писать на курсе не будем, так что не жалко. Удалили. Теперь снова находим её в Kitematic и скачиваем чистую, нетронутую копию контейнера.

В правой части окна есть вкладка с настройками. В ней отобразятся основные свойства БД. Нас интересует строка Acccess URL: localhost:[некие цифры]. Эти цифры — номер порта, и его нам нужно запомнить. Когда будем подключаться к СУБД через DBeaver, будем вводить именно эти цифры.

DBeaver

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

Запускаем DBeaver. В открывшемся окне вверху слева нажимаем на значок вилки — «Подключиться», выбираем тип подключения PostgreSQL из списка предложенных.

Открывается мастер по установке соединений. Указываем, где находится наша БД:

  • В строке Хост вводим localhost.

  • Порт — цифры, которые мы запоминали в Kitematic.

  • База данных — dvdrental.

  • Пользователь — оставляем то, что стоит по умолчанию.

  • Пароль — оставляем пустым.

В рабочих условиях эти данные предоставляет системный администратор. Теперь нажимаем «Тест соединения». И если выскочит окно «Соединено», нажимаем «Готово» и продолжаем практику.

В левой части окна отобразится наша база dvdrental. Щёлкнув по ней, посмотрим, какие в ней есть разделы: схемы, роли, администрирование, системные объекты. Визуально оценим, какие сущности хранятся в нашей БД. Раскрываем структуру Схемы → public → Таблицы. У нас есть данные об актёрах (actors), адресах, фильмах, языке.

Теперь посмотрим связи между сущностями, то есть ER-диаграмму.

Щёлкаем правой кнопкой мыши по схеме public. В контекстном меню выбираем View diagram. В правой части окна отобразится диаграмма вроде майнд-карты.

  • Все таблицы из схемы public в кратком изложении — какие данные содержатся в таблице и сколько строк с ними.

  • Стрелочки-связи.

  • Первичные ключи, которые показывают, к какой теме относится конкретная таблица.

Чтобы создать запрос, нажимаем на значок «Новый запрос». В правой части окна появится поле для ввода. Теперь узнаем, сколько актёров у нас содержатся в базе данных. Для этого в поле ввода набираем: select * from actor; Мы сейчас создаём файл на языке sql, а не просто задаём команду, как в командной строке MS DOS. Нажимаем Ctrl+Enter либо значок Play. Файл обращается к базе данных, и в нижней части окна отображается результат.

В одном файле можно создавать несколько запросов. Чтобы они не склеивались и не путались между собой, оставляем между запросами пустую строку. Результат второго запроса перекрывает результат первого. Чтобы снова увидеть результат запроса select * from actor;, ставим на него курсор и нажимаем Play.

Файл с запросом можно сохранить. Выбираем Файл → Сохранить и указываем имя файла и путь, где будет располагаться наш запрос. У файла будет расширение sql.

Если по какой-то причине в процессе работы контейнер в Kitematic отключился, то Dbeaver выдаст сообщение об ошибке 08001 — «Подсоединение по адресу localhost:[номер порта] отклонено». Нужно будет вернуться в Kitematic и либо запустить, либо переустановить контейнер dvdrental.

После нового запуска в адресе хост-порт изменится номер порта. Чтобы продолжить работу, возвращаемся в DBeaver. Правой кнопкой мыши щёлкаем по названию нашего контейнера и в контекстном меню выбираем строку «Редактировать объект Соединение». Снова откроется мастер подключения, и здесь меняем номер порта. Например, 32771 на 32772 .

Вместо резюме:

  1. Настройка инструментов вовсе не страшная.

  2. Даже если вы не запомнили номер порта, его всегда можно посмотреть заново в Kitematic.

  3. Язык запросов на sql похож на обычные английские слова: select, from.

  4. Если вышла ошибка «Соединение отклонено», проверьте, запущен ли контейнер и не изменился ли номер порта.

Что сделать для закрепления навыка

Загрузить и запустить образ другой базы данных – ghusta/postgres-world-db. Повторить материал занятия. В DBeaver ввести данные для подключения:

  1. database – world-db,

  2. user – world,

  3. password – world123.

Посмотреть на ER-диаграмму этой базы и выполнить запрос select * from country;.

Полезные материалы

  • Документация Postgres.

  • Документация DBeaver. Написана на английском. Технический английский очень простой, там не любят длинных сложных предложений. А сняв психологический барьер, вы заметно улучшите навык программирования и администрирования. Потому что вся передовая литература выходит на английском, только потом переводится на русский.

  • Другие уроки из недели пробных занятий по аналитике и Data Science. Аналитика и  Data Science — большая сфера, и для многих профессий нужна база. Чтобы понять, какая подходит вам, посмотрите бесплатные занятия из разных курсов. Возможно, что-то понравится.

Комментарии (7)


  1. alexxz
    30.03.2022 20:43
    +14

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


    1. skymal4ik
      30.03.2022 21:05
      +2

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

      А новичкам для простейших запросов хватит и базы в локальной SQLite с простейшим клиентом (вроде DB Browser for SQLite) без всяких серверов, виртуализаций, бриджей для прокидывания подключения и прочего лишнего…


    1. gleb_l
      30.03.2022 22:31
      +5

      Помните роман Эрленда Лу, который назывался "У"?. Там герой-бебибумер из загнивающей Северной Европы (конкретно - Норвегия) искренне считал, что для того чтобы стать ученым, ему нужен ноутбук и микроскоп. Подобными статьями мы выращиваем таких У.


  1. MentalBlood
    30.03.2022 22:58
    +1

    Можно чуть проще: sqlime, статья на хабре


  1. Akina
    31.03.2022 09:16
    +2

    Сама БД — это просто хранилище.

    Да щаз! вот из подобных "утверждений" потом и выплывают советы типа "реализуй всю логику на клиенте, а БД используй как тупой накопитель данных".

    Как написать первый запрос в SQL

    1. Откройте в браузере любой online SQL fiddle.

    2. Выберите тип сервера БД из списка, если доступно.

    3. Наберите SELECT 'Hello World' AS output; , а если Вы выбрали сервер Oracle - то SELECT 'Hello World' AS output FROM DUAL;

    4. Нажмите кнопку "Выполнить".

    А если подойти строго и не требовать не только написания, но ещё и выполнения - так можно и вовсе блокнотом обойтись.


  1. Vest
    31.03.2022 11:12
    +2

    В своё время я учил SQL по этому сайту: www.sql-ex.ru
    И если сейчас посмотреть какой комбайн надо собрать, чтобы написать первый запрос, я бы просто с таким советом послал бы, ээээ, подальше.
    Извините, но это перебор.


  1. SiteCenter
    31.03.2022 16:08

    Краткий пересказ всей статьи:

    select * from actor;