Рецензия на книгу “MySQL. Сборник рецептов. 4-е издание”

ed95e5f5ba5185f253917c5137748b13.jpg

Этот пост про толстенную 900-страничную книгу с множеством примеров решения практических задач при работе с СУБД MySQL. Довольно редко, когда американское издательство публикует книги от русскоязычного автора. Однако Света Смирнова — признанный эксперт по MySQL, и ее книги выходят в издательстве O«REILLY с 2012 года. Если вы совершенствуетесь в применении СУБД MySQL — новая книга будет очень хорошим подспорьем, а мы в SSP SOFT поможем с промокодом на покупку. 

***

Как всегда, начнем пост со ссылки на страницу книги «MySQL. Сборник рецептов. 4-е издание» на сайте БХВ Петербург. Увы, электронной версии пока нет, она как нам сказали в издательстве, выйдет позже бумажной, месяца через 4 или более. Напомним, на все книги по компьютерным технологиям от издательств «БХВ Петербург», «Alist» и «Фолиант» доступен промокод SSPSOFT на скидку 25% как подарок читателям Хабра от нашего блога.  

А предварим статью ссылкой на рейтинг наиболее популярных СУБД в мировом ИТ с сайта Statista по состоянию на июнь 2024. Разработчикам ведь всегда интересно знать перспективы инструментария, с которым они работают.

Что касается СУБД MySQL, то ее рейтинг в мире по-прежнему очень высок, уступая лишь Oracle. Третью строчку занимает Microsoft SQL server.  

Популярная в России PostgreSQL, которую маркетологи компании Postgres Professional часто сравнивают с MySQL на своих вебинарах и публикациях, где расхваливают свой продукт, в мировом рейтинге занимает лишь четвертое место. 

Источник: https://www.statista.com/statistics/809750/worldwide-popularity-ranking-database-management-systems/

Смирнова хотя и американский автор, но читает и комментирует статьи на Хабре 

Скрин из твиттера автора

Скрин из твиттера автора

Немного про авторов книги MySQL Cookbook, 4th Edition, она написана двумя авторами:

Света Смирнова работает старшим инженером поддержки MySQL в компании Percona. У нее более 10 лет опыта в решении сложных технических задач, связанных с MySQL. Света также является автором ряда книг, из последних — MySQL Troubleshooting и JSON UDF Functions for MySQL. Она регулярно выступает на конференциях, таких как Fosdem, Percona Live и Oracle Open World. Света делится опытом через вебинары и статьи, а также поддерживает GitHub-репозиторий, посвященный практическим примерам из книги MySQL Cookbook (https://github.com/svetasmirnova/mysqlcookbook). 

На Хабре можно найти упоминания, что Света выступала на конференции Postgres Professional от имени своей компании Percona, где обсуждала тему сравнения PostgreSQL и MySQL при различных рабочих нагрузках.

Алкин Тезуйсал, турок по происхождению, нашей аудитории скорее не знаком, он исполнительный вице-президент по глобальным сервисам в ChistaDATA, Inc. С опытом более 25 лет, он специализируется на открытых реляционных базах данных и возглавлял крупные операционные команды MySQL. Алкин активно участвует в международных мероприятиях по базам данных, делясь своим опытом в open-source решениях.

Что удивило, в Твиттере Алкин Тезуйсал активно выражает свою протурецкую позицию и дарит читателям экземпляры этой книги по MySQL в связи с турецкими национальными праздниками.  

Что полезного на 900 страницах: пройдемся по главам

Оригинальное английское оглавление есть на сайте O«REILLY, а русское оглавление в PDF на сайте БХВ. Описание глав в русском издании вы найдет ниже и там же в аннотации на каждую главу есть резюме о пользе материала из данной главы. 

А теперь предлагаю пробежаться взглядом по аннотациям к каждой главе и перед вами будет картина всей книги, как будто вы заглянули в нее и составили конспект.  

Фото авторских экземпляров книги, опубликованное Светой Смирновой

Фото авторских экземпляров книги, опубликованное Светой Смирновой

Глава 1. Работа с клиентской программой mysql

Глава охватывает основы использования командной строки MySQL. Включает настройку пользователей, создание баз данных и таблиц, выполнение SQL-запросов в интерактивном и автоматическом режимах. Рассматриваются фильтрация, обработка вывода и кастомизация клиентского интерфейса.
Резюме: Это стартовая точка для новичков, дающая полное понимание работы с mysql в различных сценариях, включая использование пользовательских переменных и внешних программ.

Глава 2. Работа с MySQL Shell

Описывает возможности MySQL Shell, включая работу с режимами SQL, JavaScript и Python. Глава помогает настраивать соединения, управлять форматами вывода, создавать отчеты и автоматизировать задачи через Admin API.

Резюме: Материал главы важен для разработчиков, желающих интегрировать MySQL с другими языками программирования, а также для специалистов, автоматизирующих административные процессы.

Глава 3. Репликация MySQL

Глава посвящена настройке различных типов репликации, таких как позиционная, GTID, многопоточная, кольцевая и групповая. Рассматриваются вопросы безопасности репликации, включая использование TLS, а также методы устранения неисправностей.

Резюме: Поможет создать отказоустойчивую и масштабируемую архитектуру, а также оперативно устранять проблемы, связанные с репликацией.

Глава 4. Создание программ для MySQL

Эта глава объясняет, как из приложений подключаться к MySQL, выполнять запросы и обрабатывать результаты. Включает советы по обработке ошибок, работе с NULL и специальными символами. 

Резюме: Полезна разработчикам, создающим программное обеспечение, тесно интегрированное с базами данных MySQL.

Глава 5. Выбор записей

Глава охватывает основные приемы выборки данных из таблиц. Объясняется, как указывать нужные строки и столбцы, настраивать имена выводимых полей и удалять дубликаты. Рассматриваются операции с NULL, объединение результатов нескольких запросов и работа с представлениями для упрощения доступа к данным. Особое внимание уделено подзапросам и выборке данных из нескольких таблиц.

Резюме: Помогает эффективно извлекать данные в различных форматах, используя сложные фильтры и условия, что особенно важно для анализа и отчетности.

Глава 6. Управление таблицами

Эта глава объясняет основные операции с таблицами: клонирование, создание временных таблиц, настройка их механизма хранения и копирование данных. Описаны утилиты, такие как mysqldump, и методы работы с переносимыми табличными пространствами. Рассматривается создание уникальных имен таблиц и перенос данных между разными механизмами хранения.

Резюме: Материал полезен по теме практических инструментов для управления структурами данных, что важно для оптимизации хранения и масштабирования базы данных.

Глава 7. Работа со строками

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

Резюме: Дает практические инструменты для сложной обработки текстовой информации, что необходимо в приложениях, работающих с документами или текстовыми данными.

Глава 8. Работа с датами и временем

Глава посвящена работе с временными данными: выбор подходящего типа данных, обработка часовых поясов и форматов, вычисление интервалов между датами и конвертация временных данных. Также обсуждаются методы автоматического отслеживания изменений записей с использованием временных меток и сложные расчеты, такие как определение возраста или длительности периода.

Резюме: Сведения будут полезны при создании приложений, где требуется точная временная синхронизация, анализ временных данных или их использование в отчетах.

Глава 9. Сортировка результатов запроса

Здесь описываются приемы сортировки, включая управление регистром строк, сортировку по подстрокам и даже IP-адресам. Особое внимание уделено пользовательским алгоритмам сортировки, которые позволяют задавать уникальный порядок для данных. Также приведены методы для обеспечения корректной сортировки сложных данных, таких как ENUM или временные значения.

Резюме: Вы узнаете, как улучшить читаемость и удобство представления данных в отчетах и пользовательских интерфейсах.

Глава 10. Формирование итогов

Глава детально описывает работу с агрегатными функциями, такими как COUNT (), SUM (), MIN () и MAX (), а также создание итоговых таблиц. Рассматриваются группировка данных, работа с подгруппами и фильтрация итогов. Уделяется внимание работе с NULL и построению комбинированных итогов.

Резюме: Подскажет разработчикам, как создавать сложные аналитические отчеты и сводки, оптимизируя обработку данных на стороне сервера.

Глава 11. Использование хранимых подпрограмм, триггеров и запланированных событий

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

Резюме: Помогает создавать сложную бизнес-логику непосредственно на уровне базы данных, автоматизируя рутинные процессы.

Глава 12. Работа с метаданными

Описаны способы извлечения информации о структуре базы данных: списков таблиц, столбцов, триггеров, хранимых процедур и даже метаданных о сервере. Глава также рассматривает адаптацию приложений к различным версиям MySQL.

Резюме: О том, как обеспечить гибкость и универсальность при работе с разными конфигурациями баз данных.

Глава 13. Импорт и экспорт данных

Эта глава объясняет, как импортировать данные в MySQL из форматов CSV, JSON, XML и наоборот, как экспортировать данные. Особое внимание уделено обработке ошибок при импорте, а также диагностике и настройке процессов обмена данными.

Резюме: Это квинтэссенция знаний по интеграции баз данных с внешними системами и работы с большими объемами данных.

Глава 14. Проверка и изменение формата данных

Глава подробно объясняет способы проверки корректности вводимых данных, использования ограничений CHECK и триггеров для отклонения неверных записей. Описаны методы обработки сложных данных через циклы и библиотеки, проверка строк по шаблонам, валидация дат, чисел, адресов электронной почты и URL. Рассматривается стандартизация не-ISO форматов и преобразование дат.

Резюме: Помогает разработчикам и администраторам обеспечить надежность данных на этапе ввода, исключив ошибки, которые могут привести к сбоям в приложениях или нарушению целостности базы данных.

Глава 15. Формирование и использование последовательностей

Эта глава посвящена созданию и управлению последовательностями, включая автоинкрементные столбцы и пользовательские генераторы. Рассматриваются вопросы изменения диапазона значений, перенумерации записей, добавления последовательностей в существующие таблицы и управления несколькими последовательностями одновременно. Включены примеры использования оконных функций и рекурсивных выражений для создания кастомных последовательностей.

Резюме: Важна для понимания и выполнения задач, связанных с уникальной нумерацией записей, генерацией идентификаторов и упрощением управления данными в сложных системах.

Глава 16. Использование соединений и подзапросов

Глава охватывает использование соединений таблиц (INNER, OUTER, CROSS JOIN) для нахождения соответствий или исключений. Описаны подзапросы для сложной выборки данных, анализ отношений «один-ко-многим» и «многие-ко-многим», а также заполнение пропусков в данных. Примеры показывают оптимальные стратегии для объединения результатов нескольких запросов.

Резюме: Сведения из главы помогут эффективно организовывать работу с данными из нескольких таблиц, минимизируя сложность запросов и повышая производительность.

Глава 17. Статистические методы

В этой главе представлены методы анализа данных, включая вычисление основных статистических показателей (среднее, медиана, стандартное отклонение), создание распределений частот, ранжирование данных и подсчет пропусков. Рассматриваются алгоритмы генерации случайных чисел, вычисление корреляции, линейная регрессия и подсчет кумулятивных сумм.

Резюме: Будет полезна для аналитиков, разрабатывающих сложные системы анализа данных, предоставляя широкий набор инструментов для математической обработки.

Глава 18. Обработка повторяющихся записей

Глава охватывает задачи, связанные с дублирующимися записями: предотвращение их появления, выявление существующих дублей, подсчет и удаление лишних строк. Описаны методы использования уникальных ключей и специальные сценарии для обработки дубликатов на этапе импорта данных.

Резюме: Глава помогает поддерживать целостность базы данных, что критично для управления большими объемами данных и повышения их качества.

Глава 19. Работа с JSON

Глава рассматривает использование JSON в MySQL, включая вставку, обновление, удаление элементов и поиск внутри документов. Приведены методы преобразования JSON в реляционные структуры и обратно, а также способы работы с данными в качестве документного хранилища. Подробно описана валидация формата JSON и эффективное использование встроенных функций MySQL.

Резюме: Глава необходима для разработчиков, работающих с современными API, и систем, использующих гибкие форматы хранения данных.

Глава 20. Выполнение транзакций

Здесь рассматриваются транзакции в MySQL: как их выполнять через SQL и языки программирования (Python, PHP, Java, Go). Объясняется выбор механизмов хранения, управление блокировками и обеспечение согласованности данных. Уделено внимание обработке ошибок в транзакциях и управлению контекстом.

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

Глава 21. Производительность запросов

Глава охватывает оптимизацию запросов: создание индексов, выбор их типов, использование функциональных и полнотекстовых индексов. Рассматривается анализ производительности с помощью гистограмм и индексов для геоданных. Особое внимание уделено написанию эффективных запросов, минимизирующих нагрузку на сервер.

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

Глава 22. Администрирование сервера

Описаны задачи конфигурации MySQL-сервера, настройка хранения данных, управление логированием, ротация файлов и работа с подключаемыми модулями. Глава включает примеры оптимизации конфигураций для разных сценариев использования.

Резюме: Помогает администраторам эффективно управлять сервером, поддерживать его стабильность и безопасность.

Глава 23. Мониторинг сервера MySQL

Глава детализирует методы мониторинга MySQL, включая диагностику ошибок, проверку использования ресурсов (CPU, IO, памяти) и анализ логов. Рассматриваются инструменты для мониторинга соединений, буферных пулов и отслеживания медленных запросов.

Резюме: Материал главы помогает оперативно выявлять проблемы в работе сервера, предотвращая сбои и улучшая производительность.

Глава 24. Безопасность

Глава охватывает управление учетными записями пользователей, реализацию политики паролей, использование TLS (SSL) для защиты соединений и создание ролей для контроля доступа. Рассматриваются методы ограничения прав и использование представлений для защиты данных.

Резюме: Помогает обеспечить высокий уровень безопасности базы данных, защитив данные от несанкционированного доступа или утечек.

Заключение

Книга «MySQL. Сборник рецептов. 4-е издание» авторства Светы Смирновой — это обновленное издание классического справочника для разработчиков и администраторов, работающих с MySQL. Она содержит подробные примеры для решения практических задач, связанных с настройкой, управлением, оптимизацией и использованием MySQL в различных сценариях. Четвертое издание отражает изменения в MySQL, включая новшества в версии 8.0+.

Издание охватывает как базовые темы (установка, конфигурация, базовые SQL-запросы), так и продвинутые (оптимизация производительности, репликация, работа с большими данными, использование JSON, улучшение безопасности и др.). В книге представлены примеры кода, советы по устранению неполадок и оптимизации, а также рекомендации по использованию новых возможностей MySQL. 

Добавим каплю рекламы от нашего блога: мы будем рады видеть в рядах компании специалистов, готовых работать оффлайн в Москве и Томске, а также удаленно. Ознакомиться с текущими вакансиями можно на нашей странице на hh.ru. Если вашей специальности нет в списке вакансий, не стесняйтесь прислать нам резюме — в SSP SOFT новые позиции открываются регулярно, и мы всегда рады новым талантам. Резюме можно направить в Telegram или на почту job@ssp-soft.com.

Успехов в применении знаний по MySQL из книги в ваших приложениях!

© Habrahabr.ru