В последние года популярность PostgreSQL в России стремительно растёт. Google Russia DB Trends Благодаря её широким возможностям, её используют как универсальную рабочую лошадку в небольших компаниях. А энтерпрайзы и бигтехи ценят её за большое локальное комьюнити, в котором сохранились эксперты и даже контрибьюторы проекта.

Mechanical sympathy

Я опущу тему поиска материалов «для самых маленьких» – этого добра в интернете хватает. Сконцентрируемся на более интересном.

Термин «mechanical sympathy» пришёл к нам из гоночного спорта и говорит о том, что даже пользователю «черного ящика» полезно заглядывать внутрь, чтобы выжимать из технологии максимум. Отчасти это перекликается с движением Devops: разработчикам и тут приходиться погружаться в темы, которые раньше считались не их зоной ответственности. Ох уж эта конкуренция! 😄

Так сложилось, что PostgreSQL в некоторых моментах существенно отличается от MySQL. И речь даже не об отличиях в функционале, доступном через SQL. Суть в том, что успешные рецепты по работе с одной могут быть смертельным для другой. Чего только стоят детали устройства MVCC и разных пуллеров соединений, без понимания которых хайлоад на PostgreSQL не выдержать. А уж насколько реальное устройство отличается от наивных предположений как БД могла быть устроена…

Современные книги и сайты

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

Самый топчик – это книга Егора Рогова из Postgres Professional «PostgreSQL изнутри» aka «Postgres Internals». На сайте можно найти версии этой книги от 14 до 17 версии PostgreSQL. Лично я читал английскую версию для 14 версии.

Это достаточно объёмная и хардкорная книженция про внутренне устройство бд. В ней рассказывается про in-memory структуры данных и устройство файлов бд. Фичей книги является частое прибегание к интроспекции кишок бд с помощью пары расширений и обычных sql запросов. В конце есть разбор всех типов индексов с примерами задач, для которых их разрабатывались. Ознакомившись с книгой, вам станет понятно:

  • Почему даже читающий трафик может вызывать обновления данных.
  • Почему даже при наличии реплик важно читать с мастера.
  • Почему нужно следить за размерами индексов и баз.
  • Почему не стоит смешивать OLAP и OLTP нагрузку.
  • Почему для PostgreSQL рекомендуется использовать пуллер соединений. Внутри Ozon Tech даже написали свой.

Лично мне не хватило только информации о механизме репликации. Но эту тему покрыл сайт Hironobu Suzuki «The Internals of PostgreSQL». Он лайтовее книги, местами чуть более наглядный. Я был удивлен тому, насколько неочевидно работает репликация в PostgreSQL. Насколько сильно она связывает мастер и реплики, вызывая не только проблемы с производительностью, но и с ошибками при выполнении запросов.

Несомненно, книга и сайт не покрывают все нюансы эксплуатации. За ними придётся обращаться к официальной документации и опыту комьюнити:

Конференции

Книги книгами, но когда хочется перенять hands-on опыт в решении известных проблем при использовании PostgreSQL, то без просмотра докладов не обойтись. Первым в голову приходит идея поискать их на конференции Highload. На ней можно встретить выступления экспертов как из PostgresPro, так и из компаний, которые своими руками строят на этой БД большие системы.

Отдельно хочу обратить внимание на доклад Олега Бартунова о JSON в PostgreSQL. В нём он рассказывает, почему работа с JSON непредсказуема по скорости и что сообщество пытается с этим сделать.

Но всего этого всё-равно как-то маловато для полноценного погружения в такой важный компонент современных ИТ систем.

PGConf

Если же продолжить искать материалы уже на Youtube, то можно найти канал конференции PGConf.Russia, но там записи заканчиваются 2020 годом. Если же зайти на сам сайт конференции, то можно найти записи докладов вплоть до 2023 года. И вот уже среди этих материалов можно найти добра на любой вкус: кейсы импортозамещения, рецепты тюнинга и нюансы эксплуатации для DBA, подводные грабли на пути эффективной работы с базой для разработчиков, обзоры надстроек/форков постгреса на все случаи жизни.

Podlodka Crew

Если градус хардкора хочется всё-таки понизить и просто расширить кругозор, получить больше универсальных практических знаний, то могу порекомендовать записи интенсивов Podlodka Crew: «Всё про базы данных» и «Java Crew #3» (тут джавы совсем чуть-чуть). Возможно, это было моё лучшее вложение 6к в самообразование 😄

Приятного просмотра!