Рассмотрю индивидуальные предложения о работе, удалёнка. Индивидуальные значит не от hr с "у меня вакансия mongodb для вас"

PostgreSQL DBA старой школы. Не сработаемся, если считаете что production база в докере/кубере/etc или на сетевых дисках - хорошая мысль. Сработаемся, если при мыслях о autofailover'ах учитываете, что автоматика добавит своих аварий и не обязательно улучшит жизнь.
Имею честь быть в списке контрибьюторов проекта https://www.postgresql.org/community/contributors/ Изменение primary_conninfo и restore_command без перезапуска реплики - моих рук дело. Такие вещи как reindex concurrently, parallel vacuum, pg_stat_statements.track_planning, generated columns тоже не без моего участия дошли до релизов. Если пользовались pg_repack или pgcompacttable в последние несколько лет - то тоже передаю привет.
Контакты
Местоположение
Россия, Санкт-Петербург и область, Санкт-Петербург

Достижения

Все достижения (111)

Наибольший вклад в теги

Все теги (339)

Лучшие ответы пользователя

Все ответы (1882)
  • Какие книги есть по правильному написанию кода, по правильной структуре кода?

    Melkij
    @Melkij
    PostgreSQL DBA, рассмотрю предложения о работе
    Классика:
    Совершенный код Макконнела
    Рефакторинг Фаулера
    Ответ написан
    2 комментария
  • Как сделать чтобы большая БД держала нагрузку?

    Melkij
    @Melkij
    PostgreSQL DBA, рассмотрю предложения о работе
    Ооо.... Вы это сейчас вообще серьёзно?

    Если вы запускаете DBaaS платформу и не знаете что делать собственно с базами - то у вас не
    Запускаю свою облачную платформу, код и архитектура создана с нуля.

    У вас нет вообще абсолютно ещё ничего и уж архитектуры - в особенности. Кроме "идеи", над которой бьётся давно и много кто, при том имея ресурсы на собственные команды DBA.

    Например: юзер пишет какой-то запрос и ему не нужно указывать на какой сервер что отправлять или откуда читать, для него это один сервер.

    Значит этому юзеру достаточно ходить только на мастер.
    Для сферического в вакууме приложения нет средств автоматически распределять запросы по репликам. И такое сделать вовсе невозможно без накладывания ограничений на использование. Например,
    select somefunc();
    Что делает эта функция? Она только читает данные и потому можно отправить на реплику или она пишет и потому должна быть на мастере? Хотите правильный ответ от контрибьютора postgresql? Это достоверно не знает даже сама база до тех пор пока не выполнит функцию.

    Другой пример:
    begin isolation level repeatable read;
    select ...
    update ...
    commit;

    Как максимум на запросе select вы должны уже знать можете ли вы эту транзакцию отправить на читающую реплику. Откуда бы вам это узнать заранее?
    И прочие принципиально-нерешаемые вопросы.

    DBaaS это не про большие базы. Как бы не хотелось маркетингу убедить в обратном. Это про небольшие или стартующие проекты, где проще переплатить сервису за относительно вменяемую настройку и сопровождение типовой конфигурации.
    Ответ написан
    Комментировать
  • Какие книги прочитать по лучшим практикам проектирования БД?

    Melkij
    @Melkij
    PostgreSQL DBA, рассмотрю предложения о работе
    Bill Karwin SQL Antipatterns
    В общем-то, в духе рефакторинга как раз: как делают часто неправильно, почему это плохо (но когда и адекватно для задачи) и как сделать лучше.
    Ответ написан
    1 комментарий
  • Как добавить поле в высоконагруженную базу в таблицу на продакшене где 100 миллионов записей?

    Melkij
    @Melkij
    PostgreSQL DBA, рассмотрю предложения о работе
    Могу ответить про postgresql.

    без ее блокировки

    Именно в такой постановке вопроса - никак.

    С короткой блокировкой (доли секунд) - другое дело. Принципиально зависит от конкретного alter table и версии базы
    Простой alter table foo add column col; - ставите statement_timeout to '100ms' и вносите как есть.
    alter table foo add column col default const - после pg11 см. выше, до - интересное приключение
    Если default не константа - сначала внесите как default null, затем обновляете частями. как в процессе до pg11.
    Ответ написан
    Комментировать
  • Что за формат хранения данных сессии в PHP?

    Melkij
    @Melkij
    PostgreSQL DBA, рассмотрю предложения о работе
    Поройтесь в сторону suhosin.session.* (особенно suhosin.session.encrypt, больно уж название намекающее)
    Ответ написан
    3 комментария

Лучшие вопросы пользователя

Все вопросы (3)