Главная » Архив меток: PostgreSQL

Архив меток: PostgreSQL

Об одной уязвимости, которой нет

3 по версию 11. В конце марта 2019 года американская компания Trustwave, занимающаяся кибербезопасностью и сервисами по защите от угроз, опубликовала сообщение об уязвимости в СУБД PostgreSQL, которая присутствует во всех версиях, начиная с версии PostgreSQL 9. Эта уязвимость была зарегистрирована в базе данных уязвимостей информационной безопасности CVE (Common Vulnerabilities and Exposures ) под номером CVE-2019-9193. 2. 0 по 10-балльной ...

Читать далее »

.NET Core на Linux, DevOps на коне

Мы развивали DevOps как могли. Нас было 8 человек, и Вася был самым крутым по Windows. Внезапно Вася ушел, а у меня появилась задача вывести новый проект, который поставляет Windows-разработка. Когда я высыпал на стол весь стек Windows-разработки, то понял, что ситуация — боль… Когда из компании ушел ведущий специалист по Windows, Александр задался вопросом, что теперь делать. Так начинается история Александра Синчинова на DevOpsConf. Александр расскажет, как ему удалось создать прецедент ...

Читать далее »

MVCC-4. Снимки данных

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

Читать далее »

Понимание джойнов сломано. Это точно не пересечение кругов, честно

Один из обязательных вопросов, который я задаю — это чем отличается INNER JOIN от LEFT JOIN. Так получилось, что я провожу довольно много собеседований на должность веб-программиста. остается только то, что есть в обеих таблицах, а left join — это когда левая таблица остается без изменений, а от правой добавляется пересечение множеств. Чаще всего ответ примерно такой: "inner join — ...

Читать далее »

MVCC-3. Версии строк

Итак, мы рассмотрели вопросы, связанные с изоляцией, и сделали отступление об организации данных на низком уровне. И наконец добрались до самого интересного — до версий строк. Как мы уже говорили, каждая строка может одновременно присутствовать в базе данных в нескольких версиях. Одну версию от другой надо как-то отличать С этой целью каждая версия имеет две отметки, определяющие «время» действия данной ...

Читать далее »

MVCC-2. Слои, файлы, страницы

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

Читать далее »

Насколько легко доставить заказ, зная адрес клиента (не очень)

Меня зовут Денис Гирько, я системный архитектор e-commerce платформы в Lamoda. Всем привет! В прошлом году я выступал на конференции DevConf с докладом, которым хочу поделиться с вами. Это обзорный доклад о том, с какими сложностями в процессе доставки заказа встречается крупный интернет-магазин и какие технические решения могут помочь их преодолеть (на примере решений, которые мы опробовали в Lamoda). Расскажу: ...

Читать далее »

[Перевод] Как мы использовали отложенную репликацию для аварийного восстановления с PostgreSQL

Или нет? Репликация — не бэкап. Вот как мы использовали отложенную репликацию для восстановления, случайно удалив ярлыки. Здесь 3 миллиона пользователей и почти 7 миллионов проектов, и это один из самых крупных опенсорс-сайтов SaaS с выделенной архитектурой. Специалисты по инфраструктуре на GitLab отвечают за работу GitLab.com — самого большого экземпляра GitLab в природе. Вряд ли такая катастрофа случится, но мы ...

Читать далее »

[Из песочницы] Синтез как один из методов улучшения производительности PostgreSQL

Философское вступление Как известно, существует всего два метода для решения задач: Метод анализа или метод дедукции, или от общего к частному. Метод синтеза или метод индукции, или от частного к общему. Для решения проблемы “улучшить производительность базы данных” это может выглядеть следующим образом.Анализ — разбираем проблему на отдельные части и решая их пытаемся в результате улучшить производительности базы данных в ...

Читать далее »

MVCC-1. Изоляция

Привет, Хабр! Этой статьей я начинаю серию циклов (или цикл серий? в общем, задумка грандиозная) о внутреннем устройстве PostgreSQL. Смотреть видео не все любят (я точно не люблю), а читать слайды, пусть даже с комментариями, — совсем «не то». Материал будет основан на учебных курсах по администрированию, которые делаем мы с Павлом pluzanov. Я буду говорить только о том, как ...

Читать далее »