В самом начале
Я работаю с Postgres
в продакшине с 2008-го года, но несмотря на это никогда не считал себя крупным специалистом в
нём. Тогда уже вышла версия 8.3
1, и я помню эту эмоцию радости: “ну, хоть не с двухлетней 8.2
”.
Погружение оказалось довольно болезненным, потому что актуальной литературы на русском языке не было, документация казалась сложной и страшной, и приходилось консультироваться со старшими коллегами.
Сейчас ситуация сильно изменилась. Postgres
, благодаря своим широким возможностям очень популярен, а источников
информации достаточно.
Но давайте немного вернёмся во времени…
Первая попытка создать блог по углублённому изучению Postgres
была сделана где-то в 2015-ом году. В то время я активно
изучал сишные исходники и отправил пару патчей, которые попали в релиз 9.6
2. Мой пропозл по кастомным
компрессорам был переведен Александром Коротковым и отправлен с указанием авторства в список
рассылки pgsql-hackers
3, а патч был готов где-то наполовину.
Работа над патчем позволила мне потрогать системный каталог “изнутри” и добавить новую команду — в оригинале она выглядела примерно так:
create compressor custom_compressor with (
compress=lz4_compress,
decompress=lz4_decompress
);
А использовать его предполагалось примерно так:
create table t (
col1 text compressor custom_compressor,
col2 text compressor another_custom_compressor,
...
);
Чтобы это работало, пришлось расширить таблицу pg_depend
, добавив в неё информацию об используемом методе сжатия для
каждой колонки.
Вдохновившись этим, я решил создать блог и начал его примерно со следующего поста:
- берем сырцы из официального гита, а не зеркала на гитхабе;
- компилируем с
--enable-debug
;gdb
работает вот так;- прицепиться к бэкэнду для отладки вот так.
В таком формате блог просуществовал очень недолго. Основная работа полностью вытеснила возможность погружаться глубже и писать об этом процессе.
Как я вижу этот блог сейчас?
Работая над проектом Managed PostgreSQL
, я делился накопленными знаниями не только с коллегами, но и со слушателями
курса по разработке на Go
. Занятие, которое я проводил, было рассчитано примерно на два часа. Но оно растянулось почти
на четыре, а я старался дать ребятам как можно больше той полезной информации, которая действительно поможет им в
работе.
Читая после занятия обратную связь и много положительных отзывов, я винил себя за то, что не смог рассказать всё, что хотел бы рассказать. Но на самом деле, делать этого не следовало.
Спустя время, я хотел бы дать новичкам надёжный компас, с которым можно ориентироваться в мире Postgres
. Тогда, в
самом начале он не помешал бы и мне самому, а подготовка материалов поможет поддержать знания в актуальном состоянии.
Какой будет формат постов?
Посты будут сухими, сжатыми, без вводных слов, нацеленными на практику. Это, возможно, единственный пост, где я позволил себе, если можно так выразиться, “графоманство”.
Какая предварительная подготовка нужна?
Мы точно не будем начинать с азов и учиться писать простейшие запросы. Поэтому хоть какой-то опыт с РСУБД всё же потребуется.
Будет ли какой-то план?
Да. Мы точно начнём с подготовки песочницы.
В процессе я постараюсь не прыгать с одной темы на другую и двигаться последовательно.
Что мне понадобится?
Компьютер, который может потянуть несколько виртуальных машин.
Мы будем использовать и Docker
, но в случае с базами данных,
такая практика может быть полезной только в простых примерах.
Нужно ли уметь работать с Linux?
Досконально — нет. Не бояться эмулятора терминала — да.
Отказоустойчивую конфигурацию мы будем разворачивать руками, само собой, с применением средств автоматизации.
Что-то ещё?
Думаю, пока всё. Желаю нам всем удачи, терпения и постоянства!