Общее описание
Книга объемом около 350 страниц содержит 13 глав. Помимо текста, её контент представлен в виде большого количества кода (как правило, SQL-запросов), а также различных таблиц. Уровень сложности чтения примерно средний. Каждая глава подкреплена небольшим резюме с кратким пересказом.
Краткий обзор
На момент, когда я читал книгу, это была ещё 11 версия. Тем не менее, автор следит за актуализацией — в первой же главе, как правило, разбираются нововведения базы. Далее, после небольшого вступления, сразу идёт глава про транзакции и блокировки — пожалуй, неудивительно, ведь любая операция в PostgreSQL выполняется в составе транзакции. Затронуты как простые транзакции, так и более сложные и длинные с использованием SAVEPOINT. Здесь же рассмотрены FOR SHARE и FOR UPDATE, уровни изоляции транзакций, оптимизация хранилища и другие темы.
Едем дальше. Глава про построение индексов, их типы (B‑tree, GIN, GiST и др.), назначения и применение. Глава очень информативная и подробная. Следом идёт небольшая глава по продвинутым функциям (группировка, сортировка, агрегирование, оконные функции) — тоже весьма всё информативно. После этого идёт глава про логирование. Рассмотрены журналы запросов, настройка логирования и системных запросов.
Дальше идёт большая глава про оптимизацию запросов. Разобраны примеры так называемой внутренней оптимизации (которую производит оптимизатор перед выполнением запроса), а также внешние способы, при которых сам разработчик сможет улучшить запрос. Здесь же разобраны JOIN-ы, секционирование и многое другое.
После этого идёт глава о хранимых процедурах. Я не особо склонен отдавать бизнес-логику (если уж не всю, то даже малую часть) на откуп базе данных, так что по достоинству не могу оценить главу, впрочем, допускаю ситуации, когда хранимые процедуры будут вполне уместны.
Следом идёт глава про безопасность. Включает сетевую безопасность (pg_hba), права доступа, делегацию ролей и удаление пользователей. Показывает, как защитить данные на разных уровнях системы. Вполне интересно и годно.
Далее идут несколько глав про резервное копирование. Первая глава направлена на работу с бэкапами: создание и восстановление. А вторая — про работу с репликацией. Тоже весьма информативно и интересно.
Следующая глава — про расширения PostgreSQL. Описаны способы установки и работы с расширениями (contrib и сторонними). Приводятся наиболее востребованные модули, которые расширяют функциональность PostgreSQL.
Одна из последних глав — про устранение неполадок в PostgreSQL. Практические подходы к анализу активности (pg_stat_activity), выявлению узких мест, средства логирования, работа с индексами, памятью и многое другое. Наконец, последняя глава направлена на то, чтобы помочь мигрировать вашу текущую базу данных (например, MySQL) на PostgreSQL.
Мнение
Книга с практическими примерами по одной из популярных реляционных баз данных — PostgreSQL. Что мне однозначно понравилось в книге, так это её плавность. Все главы весьма последовательны и дополняют друг друга. Хотя местами книга показалась слегка сложной, так как настолько глубоко в PostgreSQL я никогда не вдавался. Тем не менее, она может быть весьма полезной для тех, кто хочет узнать тонкости базы данных и отличать, например, GIN-индексы от GiST-индексов или разобраться в режимах блокировки ACCESS SHARE, ROW SHARE, SHARE UPDATE EXCLUSIVE и других. С другой стороны, в книге есть и немало популярных тем, таких как транзакции, профилирование, репликация и многое другое, что используется повседневно, так что книга в любом случае будет весьма полезна всем backend-разработчикам.