Курс «Hacking PostgreSQL» подготовлен и читается разработчиком из нашей компании - Анастасией Лубенниковой. Курс состоит из 18 занятий, на которых будут исследованы особенности архитектуры и внутреннего устройства PostgreSQL . Анастасия будет показывать, как вносятся изменения на уровне исходного кода. Курс читается в феврале - марте 2016 г на площадке, любезно предоставленной Яндексом. Видеозаписи и материалы лекций  выкладываются по мере обработки.

          Курс собран из личного опыта разработчиков нашей компании, материалов с конференций, статей и вдумчивого чтения документации и исходников. В первую очередь он адресован начинающим разработчикам ядра PostgreSQL. Но он будет интересен и DBA, которым иногда приходится влезать в код, и просто всем неравнодушным к архитектуре большой системы, желающим узнать “А как это работает на самом деле?”.

 

Программа курса

(поскольку он читается первый раз, возможны изменения):

 

 

1. Обзор архитектуры

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

 
курс «Hacking PostgreSQL» тема «Обзор архитектуры»
видеозапись лекции
 

 

 

2. Сообщество PostgreSQL и инструменты разработчика

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

 
курс «Hacking PostgreSQL» тема «Сообщество PostgreSQL и инструменты разработчика»
видеозапись лекции
 

 

 

3. Расширяемость

          В третьей лекции пошагово разобрано создание своего расширения (contrib). Это самый простой и естественный способ приобщиться к разработке и добавить в PostgreSQL новую функциональность. Кроме этого, будет рассмотрена внутренняя расширяемость постгреса на примере добавления нового типа данных.

 
курс «Hacking PostgreSQL» тема «Расширяемость»
видеозапись лекции
 

 

 

4. Обзор исходного кода

          В этой лекции мы проследим путь выполнения различных запросов от получения текста запроса до выдачи результата.

 
курс «Hacking PostgreSQL» тема «Обзор исходного кода»
видеозапись лекции
 

 

 

5. Физическое представление данных

          После этой лекции вы будете знать, как уложены атрибуты в строке, строки на странице, страницы в таблице, а таблицы в базе. А также то, как Postgres справляется с выравниванием данных и хранением больших атрибутов. Это поможет увидеть некоторые ограничения архитектуры и понять (а может и придумать новые) приемы проектирования оптимальной схемы БД.

 
курс «Hacking PostgreSQL» тема «Физическое представление данных»
видеозапись лекции
 

 

 

6. Разделяемая память и блокировки

          Из этой лекции вы узнаете, как устроен менеджер памяти в PostgreSQL, сколько разных видов блокировок используется, чтобы параллельные транзакции работали правильно, и что на самом деле меняют настройки памяти в postgresql.conf.

 
курс «Hacking PostgreSQL» тема «Разделяемая память и блокировки»
видеозапись лекции
 

 

 

7. Локальная память процессов

          На этой лекции было рассказано об устройстве памяти в PostgreSQL. Локальная память процессов используется для кэширования данных каталога и планов запросов, для выполнения сортировок, для работы некоторых служебных процессов, а также для размещения временных таблиц.

 
курс «Hacking PostgreSQL» тема «Локальная память процессов»
видеозапись лекции
 

 

 

8. Базовое устройство планировщика и экзекьютора запросов

          этот семинар провели Юрий Журавлев и Дмитрий Иванов. Лекция была посвящена планировщику и экзекьютору СУБД PostgreSQL. Докладчики сопровождали объяснение примерами кода и поясняющими картинками

 
курс «Hacking PostgreSQL» тема «Базовое устройство планировщика и экзекьютора запросов»
видеозапись лекции
 

 

 

          Подробнее о курсе «Hacking PostgreSQL» читатйте в нашем блоге на Habrahabr.ru - http://habrahabr.ru/company/postgrespro/blog/273623/

 

Видеозапись прошедших занятий: