Обновить
116.28

PostgreSQL *

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

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

Мигрируем с Oracle на Postgres-like СУБД: наш опыт перевода процессов розничного кредитования на рельсы СУБД Pangolin

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.7K

Привет, Хабр! Меня зовут Валерий Пташкин, я руководитель направления в трайбе «Потребительское Кредитование» в Сбере. Статью я подготовил вместе с моими коллегами — Кириллом Макаровым и Евгением Беляевым.

Наш продукт отвечает за хранение клиентских заявок на потребительские кредиты, заявок кредитного потенциала, автокредитов, ипотечного кредитования и так далее. И в этом году мы перевели работу нашего модуля хранения с Oracle на СУБД Pangolin (сборка PostgreSQL с доработками от СберТеха).

При переезде у нас было несколько критичных требований к СУБД: способность держать достаточно высокую нагрузку (4 тысячи запросов в секунду), при этом иметь время отклика не более 100 мс для 99 % запросов, и обеспечивать максимально высокую доступность нашего сервиса как системы уровня mission critical.

В этой статье мы расскажем про состояние нашей инфраструктуры, этапы миграции, и коснёмся возможных нюансов и потенциальных рисков. Это будет полезно тем, кто тоже планирует переезд на СУБД Pangolin или другой форк PostgreSQL. Уверен, многие рекомендации будут полезны и пользователям стандартного PostgreSQL. Итак, начнём.

Читать далее

Новости

Сколько производительности съедает Kubernetes: сравниваю native PostgreSQL и CloudNativePG в Yandex Cloud

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров4.6K

В этой статье я руками сравнил производительность PostgreSQL на «голой» VM в Yandex Cloud и в кластере CloudNativePG в Kubernetes. Один и тот же конфиг, одинаковые ресурсы, fio и pgbench, несколько типов хранилищ — и просадка до ~40% при работе через cnpg.

Разбираемся, где теряются TPS: на диске, в сети или в оболочке k8s, показываем все цифры в таблицах и схемах прохождения запроса «до VM» и «до Pod’а» — и в конце честно отвечаем, стоит ли игра свеч.

Читать далее

Что происходит, когда вы добавляете строку в PostgreSQL

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров8.2K

Привет, Хабр! Меня зовут Александр Гришин, я руководитель по развитию продуктов хранения данных в Selectel. Сегодня я предлагаю продолжить разбираться с PostgreSQL и заглянуть еще глубже в эту кроличью нору. Посмотрим, что происходит под капотом СУБД во время записи строк, поверхностно разберем, как устроены страницы памяти, что такое tuple, tuple chain, fillfactor, VM и FSM. Эти знания помогут разработчикам не только понимать, как работает база данных, но и эффективно управлять ее производительностью в продакшене.

Если вы начинающий DBA, разработчик, инженер или архитектор облачной инфраструктуры, эта статья для вас. Погнали?

Погнали!

Разгоним Unicode в PostgreSQL

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.3K

Всем привет!

Меня зовут Александр Борисов, я главный эксперт по технологиям в СберТехе. В статье расскажу про свой алгоритм, который позволил повысить скорость Unicode в PostgreSQL 18. На эту тему уже выпущен патч Optimization for lower(), upper(), casefold() functions, принятый сообществом PostgreSQL.

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

Начнём с краткого обзора: что же удалось ускорить в PostgreSQL?

Начнём!

База знаний для компании: история о том, как мы (наконец-то) перешли на wiki в Outline

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров3.3K

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

Читать далее

Kafka реально быстрая, но я возьму Postgres

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров5.5K

Команда Go for Devs подготовила перевод статьи о том, почему большинству проектов не нужна Kafka, «веб-масштабные» очереди и зоопарк из пяти баз данных. Автор на бенчмарках показывает, как далеко можно уехать на одном Postgres — и заодно разбирает, почему карго-культ масштабирования и «инфраструктура ради резюме» только мешают делать работу.

Читать далее

Пятничные заявки и 6 ТБ WAL: будни инженера поддержки Postgres Professional

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

Техподдержка бывает разная. Где-то это «попробуйте перезагрузить» или «проверьте провод», а где-то — сложные инженерные задачи, которым не жалко посвятить хоть всю жизнь. Какой вариант в поддержке Postgres Professional и кого/чего больше в этой сфере — людей или технологий, — разбираемся со старшим инженером технической поддержки Postgres Professional Камилем Каримовым.

Читать далее

Как мы тестируем RT.Warehouse: тестовые сценарии, сбор и анализ метрик по результатам тестирования

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров555

Привет, Хабр! Меня зовут Ольга Проскурякова, я лид направления тестирования в компании TData. Эта статья — моя первая публикация на Хабре. Буда рада поделиться своим опытом.

Платформа, которую разрабатывает TData — это комплексное решение для работы с большими данными: сбор, управление, хранение, визуализация и анализ. В центре платформы — десяток ключевых продуктов. Все они проходят проверку нашей командой тестировщиков. Сегодня я расскажу о том, как мы тестируем один из них.

Для наглядности опишу предметную область тестирования. Это продукт RT.Warehouse — массивно‑параллельная СУБД для построения хранилищ данных, разработанная на базе Greenplum.

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

Читать далее

Свой REST API сервер на Kotlin с базой данных и деплоем на Railway за 10 минут на Ktor

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

В этой статье мы разберём, как написать собственный сервер на Kotlin, подключить к нему базу данных, создать пару эндпоинтов и всего за 5 минут задеплоить сервер вместе с базой. В итоге у нас получится полноценная связка сервер + БД, готовая к работе. В дальнейшем на её основе вы сможете создавать более сложные серверные решения.

Читать далее

«Два стула» для данных: как мы боремся с рассинхроном в Rust-сервисе между Solana и PostgreSQL

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

Представьте: вы строите систему верификации дипломов. Требования простые — данные должны быть неизменяемыми (привет, блокчейн) и при этом быстро доступными для запросов (привет, PostgreSQL). Казалось бы, идеальное решение — писать в оба хранилища. Но дьявол, как всегда, кроется в деталях.

Наш проект использует паттерн двойной записи (Dual-Write):

Solana — гарантирует неизменность и прозрачность данных о выданных дипломах

PostgreSQL (Supabase) — обеспечивает быстрые выборки и сложные запросы

Звучит красиво на архитектурных диаграммах, но в production всё не так радужно. Главная проблема — частичные сбои. Транзакция в Solana прошла успешно, диплом записан в блокчейн навечно, а вот запись в PostgreSQL упала. Пользователь получил подтверждение, но половина системы о его дипломе не знает.

Сегодня я покажу, как мы столкнулись с этой проблемой лицом к лицу и какие паттерны применили для её решения.

Чтобы стулья не разъехались

Ожидания типа IO как необходимое и достаточное условие отсутствия индекса. Проверка гипотезы с помощью PG_EXPECTO

Уровень сложностиСложный
Время на прочтение6 мин
Количество просмотров160

В эпоху, когда нейросети становятся первым источником знаний для многих разработчиков, особенно важно проверять их утверждения на практике. Один из таких вопросов — прямая связь между типами ожиданий в PostgreSQL и отсутствием индексов. AI-помощники часто дают логичные, но упрощённые ответы, которые могут ввести в заблуждение при решении реальных задач оптимизации. В этой статье мы экспериментально, с помощью инструмента pg_expecto, проверим , насколько обоснованно распространённое мнение о том, что IO-ожидания однозначно указывают на проблемы с индексацией.

ℹ️Новый инструмент с открытым исходным кодом для статистического анализа, нагрузочного тестирования и построения отчетов доступен в репозитории GitFlic и GitHub

kznalp/PG_EXPECTO: Комплекс статистического анализа производительности СУБД PostgreSQL

pg-expecto/pg_expecto: Комплекс pg_expecto для статистического анализа производительности и нагрузочного тестирования СУБД PostgreSQL

Читать далее

JOIN vs. Коррелированный подзапрос: Разрушаем миф о «N+1» на 4 СУБД

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров6.8K

JOIN vs коррелированный подзапрос: мой разбор мифа «JOIN всегда быстрее»

Я проверил оба подхода (JOIN + GROUP BY и коррелированный подзапрос) на маленьком датасете и в ряде СУБД. Иногда подзапрос быстрее. Всё зависит от плана (Nested Loop vs Hash) и индексов. Слепо верить «JOIN всегда быстрее» не стоит. Смотрите EXPLAIN.

Читать далее

Очереди сообщений в Postgres Pro: отказ от внешних брокеров ради транзакционной надёжности

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

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

Читать далее

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

Резервирование кластера Greengage DB. Часть 2

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров286

Подход к резервированию кластера Greengage, рассмотренный в предыдущей статье, был нацелен ознакомить читателей с некоторой базой знаний, необходимой для понимания того, как можно формировать резервные копии и в дальнейшем восстанавливаться из них. Также был рассмотрен вариант утилиты, которая реализует данный подход на практике. Однако все предыдущие рассуждения предполагали «идеальные условия», то есть не учитывали возможные сбои или влияние сторонних процессов. Теперь же мы готовы перейти к следующему этапу, а именно рассмотреть ряд сценариев, которые встречаются на практике и которые надо учитывать при резервировании кластера Greengage.

Читать далее

СУБД Tantor Postgres 17.6: обзор улучшений для 1С

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров2.7K

Продолжаем знакомить вас с улучшениями СУБД Tantor Postgres для работы с продуктами 1С. В рамках предыдущей статьи о нововведениях версии 17.5 мы разобрали арсенал специализированных функций, призванных существенно ускорить выполнение типичных для 1С операций, снизить нагрузку на инфраструктуру и упростить администрирование. Сегодня мы рассмотрим, с какими проблемами можно столкнуться при высоких значениях default_statistics_target, расскажем о новых оптимизациях для ускорения выполнения запросов, и, конечно, коснемся временных таблиц.

Читать далее

Домашний Nextcloud на Raspberry Pi 5 за пару вечеров: Docker-compose, обратный прокси и чуть-чуть ИИ

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

За выходные поднял «свой Dropbox/Google Drive» на Raspberry Pi 5 через Docker-compose: Nextcloud + PostgreSQL + Redis + Nginx Proxy Manager + автокрон. Бонусом — SMTP-уведомления, капча на регистрации и аккуратный config.php. Ключевой инсайт: даже без специфических знаний это реально, если уметь правильно «разговаривать» с ИИ и копипастить команды не глядя в дебри мануалов.

Узнать эту магию!?!

Как отследить трафик PostgreSQL

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.2K

Недавно я изучал детали реализации взаимодействия клиента PostgreSQL с базой данных и был удивлён, насколько легко просматривать трафик PostgreSQL с помощью wireshark. Когда я поделился своим удивлением в социальной сети, меня попросили привести пример того, как это сделать.

Читать далее

Как не получилось сделать PostgreSQL лучше (и почему это нормально)

Время на прочтение6 мин
Количество просмотров13K

Недавно я получил статус Major Contributor в проекте PostgreSQL. Это довольно радостное для меня событие и интересное, поэтому коллеги попросили написать статью об этом. А чтобы я не сомневался — заботливо составили список достижений за меня. Получилось замечательно, но публиковать от своего имени статью вида «как я крут» я не хочу. Я совсем не против про это говорить, и из каждого утюга вещаю про разные технологии, сделанные моей командой или вот прям вообще мной. Но только в контексте «как использовать эти технологии», либо в узком кругу или личной беседе. 

Я решил написать другую статью: что у меня не получилось. Писал довольно спешно, поэтому, возможно, местами будет понятно только специалистам. Не расстраивайтесь, если что‑то неясно и пришлось гуглить. А вот если всё понятно — возможно, стоит меньше смотреть в монитор и чаще трогать траву.

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

Читать далее

От слов к делу: как Postgres Pro строит будущее в Академгородке

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

Некоторые из IT-компаний говорят, что поддерживают open source. На деле это нередко означает использование чужого кода и PR-активность. Мы считаем, что настоящий вклад — это коммиты в ядро. И чтобы делать это системно, мы открыли инженерный центр не в столичном бизнес-парке, а в месте, где фундаментальная наука — часть культурного кода. Рассказываем, почему будущее системного программирования мы строим в новосибирском Академгородке.

Читать далее

Postgresso 9-10 (82-83)

Время на прочтение18 мин
Количество просмотров1.8K

Пополнение в списке контрибьюторов:

New PostgreSQL Contributors 2025

Major Contributors:

Андрей Бородин (Andrey Borodin, Яндекс.Облако, наши ПОЗДРАВЛЕНИЯ!
Якоб Чемпион (Jacob Champion, EDB),
Йелте Феннема-Нио (Jelte Fennema-Nio Motherduck, DuckDB),
Роберт Трит (Robert Treat pgtreats, за общественную деятельность).

Просто новые контрибьюторы:

Эндрю Кейн (Andrew Kane),
Энди Фэн (Andy Fan),
Ханс-Юрген Шёниг (Hans-Jürgen Schönig),
Хиан Хе (Jian He),
Марко Нанчиарини (Marco Nenciarini),
Майкл Голдберг (Michael Goldberg),
Сара Конвей (Sarah Conway).

Читать далее
1
23 ...

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