Это статья об основах программирования на Go. На канале я рассказываю об опыте перехода в IT с нуля, структурирую информацию и делюсь мнением.
Хой, джедаи и амазонки!
Продолжаю тему изучения СУБД. Backend-разработчик, это стек навыков, но есть два главных навыка - это сам язык программирования и системы управления базами данных.
В прошлых публикациях разбирался с SQLite, сейчас перехожу к более сложной СУБД - PostgreSQL. Информации много, расскажу как разбираюсь с этим делом.
1. Практика
Я пока не прочитал полностью ни одну книгу по программированию, как-то они не заходят. Чувствую, что это до определённого этапа только может быть полезно, а затем уже полезно браться за профессиональную литературу.
С PostreSQL я разбирался с помощью нейросети и чтения документации к внешней библиотеке Migrate. Также мне помог коллега, с которым познакомился через этот блог - объяснил, как поднять СУБД через Docker.
В результате научился создавать схемы базы данных через миграции, делать SQL-запросы к базам данных, обрабатывать возвращаемые от БД ошибки и выполнять транзакции.
Код стал более-менее приличным, можете посмотреть учебный проект на GitHub. Далее вкратце об этом проекте:
1.1. Конфигурирование БД
Ниже представлен файл конфигурации, где 12 переменных настраивают БД.
А ниже представлен фрагмент структуры данных в приложении, предназначенной для чтения конфигурации:
Далее я создавал БД через структуру и миграции.
1.2. Создание БД
БД создавал через экземпляр структуры; а ранее создавал БД более примитивными способами. По-моему, этому меня тоже нейросеть научила через ряд удачных и неудачных опытов:
Я подобный код долго практиковал с СУБД SQLite, а затем перенёс знания на PostgreSQL. В этой части разницы не было, но сильно помогло разобраться что такое миграции схем баз данных, начиная от того, как следует называть файл миграций, и заканчивая тем, как их поднять кодом.
Часть информации я взял из блога Николая Тузова, и хотя у него есть видео конкретно про СУБД, но подходы я брал из других видео, в частности по разработке телеграм-бота. Например, выводил в отдельную функцию создание строки для подключения к БД с параметрами конфигурации:
Также брал информацию из курса Яндекс Практикум, например выполнить пинг при подключении к БД для проверки, что соединение установлено:
При создании БД использовал ряд констант для создания сообщений об ошибках:
Не факт, что этот способ прям хорош при отладке, но по крайней мере удобен.
1.3. Создание запросов
При создании запросов начал работать через транзакции:
И кроме того подготавливал SQL-выражения с дополнительными проверками перед их выполнением. Хотя читал пост на Хабре от разработчика Avito, они писали, что транзакции должны быть максимально короткими, и не использовали подготовку SQL-выражений.
Но для меня было на определённом этапом открытием, что можно перед отправкой в БД sql-выражения, сперва выполнить проверку на корректность синтаксиса. А то отправишь sql-выражение в БД с некорректным синтаксисом, и придёт ошибка. А что за ошибка - поди разберись, или элемента такого не было, или где-то сеть накрылась, или ещё что - а так мы один вариант точно исключаем - вариант с неверным синтаксисом.
А синтаксис - это не тоже навык нужно нарабатывать:
Вот такими путями осваивал работу с PostgreSQL. Но это всё имеет местечковый характер, нет цельного понимания картины. Чтобы исправить эту ситуацию, начал системнее подходить к БД.
2. Книжка-малышка PostgreSQL
Так ласково, книжкой-малышкой называют свою книгу сотрудники российской компании Postgres Professional, вот скрин из ТГ-чата:
Книга бесплатная, можно её скачать >>> здесь <<<
Начал её читать. Первая глава - история PostgreSQL, далее глава о новинках в новой версии СУБД.
Компания Postgres Professional кстати нанимает go-разработчиков, и даже периодически у них бывают стажировки по нашему профилю. Года полтора назад попытался попасть на их стажировку, но задание на тот момент было для меня слишком сложным.
Книжку-малышку они обновляют каждый год:
Так выглядит содержание текущей версии за 2024 г.:
Книга на 193 страницы. К слову, если распечатать на бумаге А4 всю официальную документацию по PostgreSQL, то получится 3024 страницы.
Посмотрим, за сколько удастся прочитать эту книгу.
3. Упражнения с SQL
Достаточно онлайн-ресурсов для тренировок с SQL-запросов. Например для того, чтобы на собеседовании продемонстрировать своё умение. Хотя коллега говорил, что не встречал ещё нейросеть, которая может делать сложные SQL-запросы.
Можно заниматься в SQL-тренажёрах. Пост с подборкой тренажёров на Хабре, в т.ч. с курсами или просто сделать запрос в интернет:
Можно конечно приобрести платный курс, но я сейчас не рассматриваю такой вариант. Также возможны бесплатные курсы с YouTube, но не изучал эту тему подробно, а то что посмотрел наискосок, мне не подходит.
4. Топ вопросов с собеседований
Начал я читать статьи типа "50 вопросов по PostgreSQL с собеседований". Есть и русскоязычные, но большинство англоязычных. И честно говоря, первые вопросы в стиле: "Чем PostgreSQL лучше других СУБД" и ответы восхваляющие PostgreSQL, будто PostreSQL выиграл соперничество с другими СУБД, будто это рекламная кампания, а не реалии. Вопрос, корректны ли последующие ответы в таких подборках.
Позже вернусь к изучению этих публикаций, но пока изучу структурированную теорию по книжке-малышке.
Также коллега поделился своими вопросами с собеседования по PostgreSQL, вот они:
Немного про устройство СУБД;
Индексы;
Влияют ли индексы на джойны;
В чём конкретно разница в уровнях изоляции на примерах;
Как в бд выглядит индекс (что это);
Запросы всякие с вложенностями, джойнами, cte;
Что знаю про представления (вьюшки), триггеры и зачем они нужны;
Как скипнуть блокировку;
Как анализировать план запроса (пример привести что может быть плохого в плане);
Как many to many сделать отношение между таблицами ещё было.
Послушал я эти вопросы, и понял, что о PostreSQL ничего не знаю. Ну, знаю как индексы создать и всё, а что это - хз. Поэтому и понял, чтобы пройти собеседование, нужно не только язык знать (хотя там тоже пробелов немало - почему-то я больше всего переживаю по работе с каналами, горутинами, понимание как работает сборщик мусора и планировщик).
5. Официальная документация
Разбираться с официальной документацией пока не хочу, но полезно знать - что она есть. А ещё есть список красных флагов - чего не делать при работе с СУБД: >>> клик <<<
5.1. Текстовый тип данных
Пример - работа с текстовым типом данных:
Здесь рассказано, что полезнее использовать тип данных text, а не char(n).
Не используйте тип char(n). Вам, вероятно, нужен text.
Тип char(n) может понадобиться, когда вы работаете с очень старым ПО.
5.2. Наименования таблиц
Вот что сказано про способ наименования таблиц и столбцов
Ключевое - вместо CamaleCase, использовать snake_case:
Используйте для имён только буквы от a до z, цифры от 0 до 9 и подчёркивания, и вам никогда не придётся беспокоиться о кавычках.
Таких лучших практик на странице всего 19 - не так много. Можно за день со всеми ознакомиться, или даже за вечер.
6. Мои ресурсы
В первом параграфе я рассказал о своём изучении PostgreSQL на практике. Большую часть этой информации я описал в своих публикациях: конфигурирование приложений, миграции и т.д. Вот перечень этих публикаций, он может помочь вам освоить СУБД:
- А здесь моя песочница на GitHub по закреплению навыка создавать БД кодом, можете повторять этот код для закрепления основных команд: >>> клик <<<
7. Выводы
Итак, эта публикация - взгляд на изучение PostgreSQL при наличии опыта работы с языком программирования. Рассчитываю в первую очередь прочитать книгу и с помощью книги и нейросети разобраться с вопросами, указанными в главе 4. Ну и практика, конечно.
Благодарю, что дочитали публикацию до конца. Успехов вам. Спасибо, и будем на связи.
Бро, ты уже здесь? 👉 Подпишись на канал для начинающих IT-специалистов «Войти в IT» в Telegram, будем изучать IT вместе 👨💻👩💻👨💻