Этот пост про толстенную 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 на своих вебинарах и публикациях, где расхваливают свой продукт, в мировом рейтинге занимает лишь четвертое место.
Смирнова хотя и американский автор, но читает и комментирует статьи на Хабре
Немного про авторов книги 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 из книги в ваших приложениях!
cry_san
Купил бы, если книгу выложат на WB или Озон. Так проще проверить и получить.
mrobespierre
Скорее всего выложат, у BHV прям свой магазин есть с приятными ценами.