Обновить
150.15

PostgreSQL *

Свободная объектно-реляционная СУБД

Сначала показывать
Порог рейтинга
Уровень сложности

Миграция с Firebird на PostgreSQL. Что может пойти не так? Часть 2

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели2.1K

В первой части обсуждалось как отличие реализации MVCC в Firebird и PostgreSQL может привести к сложностям при миграции информационной системы. Напоминаю девиз этой серии статей – "Ваши ожидания – это Ваши проблемы". Рассмотрим еще некоторые моменты, которые позволят Вам не находится в состоянии "обманутых ожиданий" при миграции с Firebird на PostgreSQL.

Читать далее

Миграция с Firebird на PostgreSQL. Что может пойти не так? Часть 1

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели4.9K

Не секрет, что в последние годы различные компании достаточно часто принимают решение о миграции работающей информационной системы с Firebird на PostgreSQL.

Типичная ситуация выглядит так:

Проект работает несколько лет. Заказчик «верит», что проблема не в проекте, а в СУБД. Firebird — «плохая» СУБД.

Читать далее

Руководство по pgcrypto — шифрование внутри PostgreSQL. Часть 1

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели5.4K

Привет, Хабр! На связи Антон Дятлов, инженер по защите информации в Selectel. Хранение конфиденциальных данных в PostgreSQL в открытом виде — мина замедленного действия. Неприятности в будущем становятся неизбежными. Достаточно одной успешной SQL‑инъекции, утечки резервной копии или компрометации доступа к серверу, чтобы вся чувствительная информация — от персональных данных пользователей до API-ключей — оказалась в руках злоумышленников.

Даже если все обошлось, то принимать меры защиты все равно придется. Исправлять БД постфактум — задача неблагодарная и крайне рискованная. Шифрование уже существующих данных потребует сложной миграции. Это долго, дорого и не всегда проходит гладко.

К счастью, большинства этих проблем можно избежать, если подойти к безопасности данных осознанно с самого начала. PostgreSQL предлагает для этого мощный встроенный инструмент — расширение pgcrypto. Эта статья — небольшое руководство по его правильному и безопасному использованию

Читать далее

Как работает fillfactor и как его настраивать вручную в PostgreSQL

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели2K

Привет, Хабр!

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

Читать далее

Миграция Левиафана: как удалось перевести базу в 40 ТБ данных на Postgres Pro

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.5K

Переезд крупных, высоконагруженных систем с одной СУБД на другую — всегда вызов, сравнимый с хирургической операцией на работающем сердце. Компания ОТР поделилась уникальным опытом миграции одной из таких систем с Oracle на отечественную Postgres Pro. Ирина Токарева и Сергей Кузнецов из ОТР рассказали о тернистом пути, противостоянии росту энтропии больших объёмов поступающих и изменяемых данных, достигнутых результатах.

Узнать тайны переезда 👉

Авторизация OAuth 2.0 в PostgreSQL на примере Keycloak

Уровень сложностиПростой
Время на прочтение27 мин
Охват и читатели4.1K

Привет, Хабр! Мы продолжаем цикл статей о нововведениях СУБД Tantor Postgres 17.5.0, и сегодня поговорим о поддержке авторизации через OAuth 2.0 Device Authorization Flow — это современный и безопасный способ предоставления доступа, который позволяет приложениям запрашивать доступ к PostgreSQL от имени пользователя через внешнего провайдера идентификации и управления доступом, например Keycloak, что особенно удобно для облачных сред и микросервисных архитектур (функция будет также доступна в PostgreSQL 18). В статье пошагово разберём настройку OAuth-авторизации в PostgreSQL с использованием Keycloak: настроим Keycloak, подготовим PostgreSQL, напишем валидатор токенов OAuth в PostgreSQL и проверим успешную авторизацию через psql с использованием Device Flow.

Читать далее

Как не облажаться с типами данных в PostgreSQL

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели12K

Недавно вышла отличная книга PostgreSQL Mistakes and How to Avoid Them от Jimmy Angelakos — системного архитектора, практика и давнего участника сообщества PostgreSQL. Книга подробно разбирает распространённые ошибки, с которыми сталкиваются разработчики и администраторы при работе с PostgreSQL, и предлагает практичные решения: от тонкостей конфигурации и миграции до антипаттернов в SQL и выбора типов данных.

Я перевёл одну из ключевых глав этой книги — про неправильное использование типов данных. В ней подробно объясняется, почему, например:

timestamp without time zone может ломать логику расчёта интервалов;

money — это не то, чем кажется (и почему он опасен);

char(n) и varchar(n) не дают ожидаемой экономии и даже вредны;

serial — это прошлый век, а identity — настоящее.

Глава будет полезна всем, кто работает с PostgreSQL в проде — особенно backend-разработчикам, независимо от языка и фреймворка. Если вы проектируете схемы БД, пишете SQL-запросы или просто хотите избежать неприятных грабель — стоит прочитать.

Читать далее

Postgresso 3-4 за 2025 (76-77)

Время на прочтение21 мин
Охват и читатели2.2K

Да что ж это делается? Хрустящие данные обратились снежинками, новый кирпичик данных стал неоновым, временная шкала обратилась в тигра и Xata переродилась

Два события заставили нас начать этот выпуск не с новостей о релизе. Snowflake купила Crunchy Data, а Data Bricks приобрела Neon. Что важнее, что сенсационней? Crunchy Data - компания-ветеран, Neon - стартап. Рыночная стоимость, однако, оказалась у стартапа в 4 раза больше. А тут и ещё 2 события (не столь сенсационных конечно). Но начнём с ветеранов.

Crunchy Data Joins Snowflake

Читать далее

Раздувание таблиц в PostgreSQL: работа с vacuum и pg_repack

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели6.5K

Когда вы в последний раз очищали БД от старых записей? А ведь раздувание таблиц и индексов в PostgreSQL из-за неактуальных данных — один из часто недооцениваемых источников «тихих» деградаций. Запросы потихоньку становятся медленнее, бэкапы — тяжелее, а место на диске расходуется неэффективно. В итоге любое лишнее уведомление от алерта или доля секунды задержки могут обернуться сбоем системы.

Привет, Хабр! На связи Александр Гришин. Я руководитель по развитию продуктов хранения данных Selectel: облачных баз данных и S3-хранилища. В этой статье предлагаю разобраться с одной из тех проблем, которые редко попадают в мониторинг, но легко становятся причиной инцидентов в проде. Посмотрим, чем pg_repack отличается от VACUUM FULL, какие особенности есть у каждого подхода и как использовать repack без дополнительных телодвижений. Статья будет полезна инженерам, поддерживающим PostgreSQL в продакшене, разработчикам облачных приложений и SaaS-сервисов и просто любопытным, кто стремится лучше понять, что происходит под капотом PostgreSQL в разных ситуациях. Погнали!
Читать дальше →

«IT-Планета 2025»: задачи второго этапа по PostgreSQL

Уровень сложностиПростой
Время на прочтение29 мин
Охват и читатели2.4K

Мы продолжаем свое участие в международной олимпиаде «IT-Планета».  Как и в прошлые годы, проводился конкурс по SQL, состоящий из трех этапов: теоретический и практический туры, проходящие онлайн, и финальный очный тур.

В первом туре участвовало свыше 4 500 человек, из которых 245 были отобраны во второй. В этом году я занимался разработкой задач и проведением первых двух туров. Предлагаю перейти к рассмотрению задач практического этапа.

Читать далее

Плохие JOIN’ы: приемы, которые (нечаянно) кладут прод

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели20K

Привет, Хабр!

В этой статье разбираем один из самых коварных способов убить базу — плохие JOIN'ы. Казалось бы, простое дело: связать пару таблиц — и вперёд. Но если в ON засунуть LOWER(email), забыть про индексы или перепутать LEFT JOIN с INNER — сервер мигом начнет дышать на ладан.

Читать далее

Векторный поиск внутри PostgreSQL: что умеет и где может пригодиться pgvector

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели7.3K

Итак, ваш проект вырос и вам потребовалась новая функциональность, будь то рекомендательный движок, база знаний или автоматизированная первая линия техподдержки. Для всего этого можно использовать векторный и/или семантический поиск, а также интегрировать в проект LLM. Поздравляю — теперь вам нужно еще и хранить embedding-векторы, а также искать по ним ближайшие объекты. Решений два: внешняя векторная БД или интеграция всего этого богатства в существующий стек. Второй путь проще на старте, немного быстрее и обычно дешевле — разумеется, если вы уже используете PostgreSQL.

Привет, Хабр! Меня зовут Александр Гришин, я руководитель по развитию продуктов хранения данных в Selectel и отвечаю за развитие: облачных баз данных и S3-хранилища. В этой статье я расскажу о pgvector — расширении для PostgreSQL, которое позволяет добавить векторный поиск без внешних сервисов, пересборки архитектуры и большого количества работы. Материал пригодится продуктовым командам, архитекторам, бэкенд-разработчикам и инженерам данных.
Читать дальше →

Агрессивный автовакуум —  ужасный to prevent wraparound, зачем он нужен и как держать его в узде

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели1.9K

Привет! На связи Дмитрий Руденко из команды Databases Т-Банка.

Благодаря обновленному мониторингу, команды стали чаще обращать внимание на на различные аспекты работы Postgres, так или иначе влияющие на общий перформанс сервиса. 

Один из таких аспектов  —  процесс уборки мусора, — autovacuum, вычищающий мертвые версии строк таблиц. В статье рассмотрим причины возникновения одного из самых неприятных подвидов —  autovacuum: to prevent wraparound.

Читать далее

Ближайшие события

Как мигрировать большую 10+ Тб базу 1С из MS SQL в PostgreSQL и уложиться в трехчасовое окно

Время на прочтение12 мин
Охват и читатели10K

Тема перехода на PostgreSQL весьма популярна, и почти на каждой конференции по PG обязательно есть парочка докладов на эту тему. Почему же эта тема до сих пор злободневна?

Когда мы начинали свой блог здесь на Хабре, наша первая статья была посвящена как раз задаче перевода больших баз данных MSSQL –> PostgreSQL. И первой причиной, из-за которой компании решаются на переход мы называли законодательство. А именно, необходимость для государственных и окологосударственных организаций, чьи информационные системы относятся к значимым объектам критической информационной инфраструктуры (ЗОКИИ) переводить свою работу на отечественное ПО. Прошло два года. И это всё еще основная причина.

Это не будет инструкция в стиле «делай раз», «делай два». Это будет про то, что большие базы в принципе очень тяжело и рискованно передвинуть (СУБД, платформа, окружение,…). И мы предлагаем собственный метод, как это сделать с гарантией отсутствия простоев бизнеса. Даже если что-то пойдет не так в «новой» системе, пользователи не должны страдать, а бизнес простаивать. Это главное!

Читать далее

Как мы автоматизировали обновление, развёртывание и настройку Postgres-like СУБД для пользователей

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели1.8K

Привет, Хабр! Меня зовут Роман Аминов, я руковожу группой автоматизации бизнес-сценариев в команде СУБД Pangolin в СберТехе. Это специальная доработанная сборка PostgreSQL, целевая СУБД в Сбере и не только. СУБД — сложный продукт, обновление, настройка и другие рутинные действия, связанные с её сопровождением, сопряжены с риском потери данных. Чтобы облегчить жизнь пользователям (и вдобавок разгрузить нашу техподдержку) мы разработали инструмент для автоматизации кластеров СУБД, их настройки и конфигурирования, обновления версий компонентов в их составе и обслуживание. Решение уже прошло проверку на тысячах кластеров в Сбере и я готов поделиться тем, как всё это работает.

Уточню, что мы используем систему управления конфигурациями Ansible. Всё, что нужно для её работы — это возможность устанавливать SSH-соединения и Python на удалённых серверах.

Надеюсь, статья будет полезна или натолкнёт на свои мысли автоматизаторов и администраторов СУБД и вообще всех, кто связан с базами данных. 

Читать далее

Как мы внедрили векторный поиск в Postgres Pro

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели3.4K

В статье разберемся, что такое векторный поиск, какие проблемы он решает, и как расширение pgpro_vector для Postgres Pro позволяет реализовать эти мощные возможности прямо в реляционной базе данных, без необходимости развертывать отдельные специализированные системы.

Читать далее

Как расширенные статистики помогли раскрыть неочевидную аномалию в VACUUM PostgreSQL

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели3.2K

Эксперт Postgres Professional Андрей Зубков «нырнул» в недра VACUUM и выяснил, что детализированная статистика может выявить проблемы, которые критически влияют на производительность. Расскажем о том, что скрывалось в глубине PostgreSQL

Читать далее

«Попал в Яндекс через опенсорс»: как коммиты в опенсорсные СУБД помогают развивать продукт и команду

Время на прочтение8 мин
Охват и читатели3.9K

Привет, Хабр! На связи Андрей Бородин, в Yandex Cloud я руковожу направлением разработки СУБД с открытым исходным кодом — и я попал в Яндекс через опенсорс. Я уже немного рассказывал, что и зачем мы делаем в опенсорсных БД с точки зрения облачных сервисов, где мы развиваем PostgreSQL, Greenplum, Cloudberry, Valkey и другие решения.

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

На масштабах Яндекса возникают нетривиальные задачи, которые интересно решать. А когда мы делимся решениями с сообществом, то можем получить от них новый взгляд на проблему, и продолжить совместную разработку новой фичи в удобном формате: с кем‑то на условиях независимого сотрудничества, а кого‑то можем позвать в команду (как это было и со мной).

В общем, если придерживаться опенсорс‑философии, может возникнуть ситуация win‑win. Сегодня с коллегами Леонидом Борчуком @leborchuk и Дмитрием Сарафанниковым расскажу пару историй про то, как это бывает с опенсорсными СУБД.

Читать далее

Внутристраничная очистка в индексах PostgreSQL

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели1.7K

Внутристраничная очистка (HOT cleanup) — это оптимизация, благодаря которой старые версии строк могут эффективно удаляться из блоков таблиц. Освобождённое место используется под размещение новой версии строки. Освобождается только место, занимаемое версиями строк, вышедшими за горизонт базы данных (xmin horizon). В статье рассматривается алгоритм работы аналогичной оптимизации для индексов. Если горизонт удерживается, то ни внутристраничная очистка, ни вакуум не могут освободить место, и тогда новая версия строки вставляется в другой блок. Увидим на примере стандартного теста pgbench, как сильно может снижаться производительность при удержании горизонта базы данных (в случае когда есть сессия с долгим запросом или транзакцией) и разберемся в причинах снижения производительности.

Читать далее

Семантический поиск по статьям Хабра в PostgreSQL + индексация текстов LLM в Ollama

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели4.2K

Покажу вам практическую реализацию семантического поиска на основе векторных представлений - эмбеддингов из текста. Здесь я создам систему, которая анализирует статьи с Хабра, извлекает из них темы и ключевые слова с помощью локально работающих больших языковых моделей LLM, и на основе этих данных создает векторные представления для эффективного поиска по смыслу, а не по запросу на вхождение определенного текста.

Читать далее

Вклад авторов