Обновить
128K+

PostgreSQL *

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

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

Книга «PostgreSQL 18 изнутри»: архитектура «слона» под новым капотом

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

Компания Postgres Professional представляет новое издание книги Егора Рогова «PostgreSQL 18 изнутри», которое будет выпущено в издательстве «ДМК Пресс» в 2026 году. Электронная версия доступна уже сейчас. Эта книга — подробный путеводитель по внутреннему устройству СУБД PostgreSQL, призванный помочь разработчикам и администраторам детально разобраться в механизмах её работы.

Читать далее

Новости

Ловушка неявного приведения числовых типов

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

В данной статье я хотел бы поговорить немного о неявном приведении типов в Postgres, широко известно, что Postgres не позволяет неявно приводить строковые типы к числовым (как это делает Oracle) и эта добавочная строгость скорее всего правильна (избавляет от многих плавающих ошибок времени исполнения), но кое-какое неявное приведение типов всё-таки остаётся - это приведение внутри числовых типов (int2, int4, int8, numeric) и вот здесь возможны некоторые сюрпризы.

Давайте рассмотрим некий синтетический пример

Читать далее

PostgreSQL для бэкендера: 10 фич, которыми мало пользуются, а зря

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

Вы храните в PostgreSQL пользователей, заказы и платежи — а потом проект обрастает Redis для очереди, отдельным поисковиком и самодельными блокировками через таблицу locks. Иногда это оправдано. Но часто типовые бэкенд-задачи закрываются прямо в базе: атомарно, транзакционно, с индексами и без лишней сетевой болтовни.

Привет, Хабр! Меня зовут Тимур Исламгулов. Я преподаватель МФТИ и ведущий вебинаров по PostgreSQL. За годы работы я насмотрелся, как разработчики поднимают лишнюю инфраструктуру там, где хватило бы самой базы, — об этом и поговорим.

Показать рабочий SQL →

Полиморфные ссылки в PostgreSQL: помогаем СУБД избежать провалов производительности

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

Недавно я изучал вопрос, насколько распространены полиморфные ссылки в реляционных базах — болезненном для производительности паттерне с дискриминированным внешним ключом, который автоматически генерируют ORM-фреймворки (Rails, Django, Hibernate), CRM-платформы (Salesforce) и 1С. Главная страница типичного интернет-магазина или activity-лента CRM-системы строится именно таким запросом: базовая таблица соединяется LEFT JOIN-ами со всеми возможными подтипами через пару столбцов (type, id).

Та статья отвечала на вопрос «насколько распространён подобный паттерн». Ведь если заниматься улучшением, то неплохо понимать, насколько оно полезно, не так ли? Здесь я пытаюсь дать представление о том, каким образом данный шаблон приводит к регрессии производительности и показать направления улучшения оптимизатора PostgreSQL, позволяющие облегчить ситуацию.

Спойлер: пока немного — но кое-что движется на pgsql-hackers. Три патча, обсуждавшихся в 2024–2026 годах, нацелены на три разных источника регрессии. Ниже о каждом.

Читать далее

Почему мы отказались от «AI в каждой кнопке» и зато встроили AES-GCM в детское приложение

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

Почему мы отказались от «AI в каждой кнопке» и зато встроили AES-GCM в детское приложение

Откуда вообще взялось MIO

MIO — это история про собственные родительские потребности, с которыми сталкиваешься, когда ребёнку исполняется 5 лет.

Family Vault - Ключи и envelope - E2E и что внутри

Наш осознанный шаг к безопасности. Для всех, без подписки и дополнительных оплат. Мы не говорим про конкурентное преимущество — мы говорим о важности оставаться уверенным, что твои данные не утекут.

Читать далее

Семь раз подумай, один раз пошардируй: как мы начали горизонтально масштабировать метаданные чатов Телемоста

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

Что происходит под капотом корпоративного мессенджера, когда нагрузка пробивает отметку в 650 000 запросов в секунду? Обычно в этот момент архитектура распределённых хранилищ начинает проверять на прочность не только диски и сеть, но и нервы команды эксплуатации.

В бэкенде чатов Телемоста за доставку и историю сообщений отвечает отказоустойчивая YDB. Но сообщения — это лишь верхушка айсберга. Помимо них системе нужно ежесекундно проверять составы чатов, актуализировать их названия, сверять права доступа и обслуживать десятки внешних интеграций. И вся эта огромная, динамически меняющаяся масса метаданных живёт в PostgreSQL.

Читать далее

AngaraBase: новая HTAP СУБД

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

AngaraBase — OLTP/HTAP СУБД, написанная с нуля на Rust. Совместима с PostgreSQL по протоколу — работает с psql, JDBC, psycopg2 и стандартными драйверами. UNDO-log MVCC без VACUUM, векторизованный исполнитель с SIMD-батчами — транзакции и аналитика под одним SQL и одним снапшотом, без ETL и второго хранилища. Fail-closed контракты ресурсов, USDT-пробы без рестарта, EXPLAIN с разбивкой по фазам исполнения. Dev preview доступен на angarabase.dev.

Читать далее

Почему остатки на маркетплейсах разъезжаются, и почему Kafka вам, скорее всего не нужна?

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

Если вы продаёте на двух и более маркетплейсах, вы почти наверняка с этим сталкивались: товар продан на Ozon, но на Wildberries он ещё висит в наличии. Приходит заказ на то, чего на складе уже нет. Дальше по сценарию: отмена, штраф, падение рейтинга карточки, в худшем случае - блокировка.

В этой статье я разберу проблему по слоям: откуда физически берётся расхождение, какие есть уровни решений (от коробки до event-driven на Go), и почему модный ответ «поставьте Kafka» для одного селлера почти всегда оверкилл. Будет код и будут цифры.

Читать далее

Мажорное обновление Greengage с помощью pg_upgrade и ggupgrade

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

Разбираем мажорное обновление Greengage с версии 6 на 7: как работает pg_upgrade, какие шаги нужны для обновления кластера, чем помогает ggupgrade и какой выигрыш по времени дают копирование файлов и режим жестких ссылок.

Читать далее

Диапазонный тип данных в PostgreSQL: ускоряем запросы

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

Привет, Хабр! Пишет эту статью Александра Лысенко — вчера я была студенткой, а сегодня как инженер-программист Nexign спешу поделиться приобретенным опытом.

Мой первый проект для реального бизнеса был связан с миграцией с Oracle на PostgreSQL. Сегодня расскажу, как внедрение диапазонного типа данных при переходе между СУБД позволило не просто сохранить производительность, но и превзойти исходные показатели. Если вы тоже только начинаете свой карьерный путь — надеюсь, этот материал вам поможет.

Читать далее

ggrebalance: Часть 1. Shrink

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

В статье рассматривается shrink кластера Greengage DB с использованием ggrebalance: архитектура утилиты, FSM-подход, безопасное перераспределение данных через INSERT, сравнение с CTAS, поддержка rollback и результаты тестов производительности.

Читать далее

Генеративный Postgres-дайджест: от информационного шума — к сигналу

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

Аналитика, сканирование интернета стали сегодня сильно проще — даже китайских коллег можно читать совершенно прозрачным образом. Изучение исходников смежных OSS-проектов — это вообще песня: за пять минут, на малознакомом языке программирования и без предварительного знания структуры проекта можно получить ответы на важные вопросы, потырить полезные приёмы и изучить как удачные, так и неудачные архитектурные решения.

Тогда почему мы всё ещё тратим время, ходим на youtube и новостные сайты в поисках интересного контента? Зачем полагаемся на чей-то алгоритм - ведь тот же Claude хранит в том или ином виде историю переписки и таким образом может оценить наши реальные интересы. Может быть стоит взять в свои руки формирование 'информационного пузыря'?

Читать далее

Почему исследование ЛАНИТ – большой шаг вперед для российского рынка СУБД

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

Что важнее при выборе СУБД: выручка разработчика или реальные возможности продукта?

На российском рынке долгое время ответ фактически сводился к рейтингам продаж. Но ситуация постепенно меняется. Исследование ЛАНИТ стало одной из первых попыток сравнить отечественные СУБД не по финансовым показателям, а по техническим характеристикам — от совместимости и миграции до безопасности и администрирования.

Однако при внимательном изучении результатов возникли вопросы ....

Читать далее

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

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

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

В этом году мы вернулись к схеме, которую попробовали два года назад: в течение дня участники пишут и отлаживают SQL-запрос, делающий ходы в какой-то игре; ночью проводится турнир между итоговыми запросами претендентов и по сумме набранных очков определяется победитель. В отличие от традиционного набора задач с «правильными решениями», в таком формате участники не могут упереться в потолок набранных баллов, а напряжение держится до последнего.

В позапрошлом году мы развлекались крестиками-ноликами, а сейчас выбрали гонки — в них, кстати, тоже можно играть в тетрадке в клетку.

Погнали развлекаться

Как мы ушли от ETL к CDC: выбираем архитектуру real-time аналитики на PostgreSQL, Kafka и ClickHouse. Часть 1

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

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

Проект был разбит на множество микросервисов, каждый из которых хранил данные в собственной PostgreSQL-базе. Чтобы строить сквозные отчеты, информацию нужно было где-то объединять.

На тот момент аналитика уже работала через ETL: раз в сутки Airflow восстанавливал общую PostgreSQL из ежедневных бекапов, а Redash выполнял запросы уже к ней. Решение было надежным и не требовало нагрузки на production, но для real-time оно не годилось — в лучшем случае отчеты показывали состояние системы на начало дня.

Читать далее

И вновь уроки про deadlock-и

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

Многие из backend-разработчиков получали ошибки с неприятным содержанием, суть которого можно описать двумя словами: deadlock detected. Эти ошибки коварные. Возникают они там, где их не ждёшь, отладочной информации крайне мало или вообще нет, и для их решения необходимо глубокое понимание архитектуры как самого запроса и метода, из которого он вызвался (или методов, возможно, чужих...), так и архитектуры самой СУБД. Поэтому часто у таких ошибок либо переносится срок, либо попытки их исправить приводят к тому, что они возвращаются снова и снова. А deadlock-и так никуда и не исчезают...

Читать далее

Как мы тестируем Tantor Postgres для 1С — от нагрузочных тестов до оптимизаций планировщика

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

Tantor Postgres 18 - масштабный релиз СУБД, за которым стоят месяцы тестирования, сотни часов нагрузочных прогонов и десятки исправлений, о которых пользователь никогда не узнает просто потому, что они были найдены и устранены до выхода версии. Александр Симонов, руководитель направления развития 1С в "Тантор Лабс", рассказывает, как устроен процесс тестирования изнутри - почему одного эталонного прогона недостаточно, что делать, когда ванильный PostgreSQL 18 ломает собственные оптимизации, и как Tantor Postgres приближается к той планке, которую MS SQL Server держал годами.

Читать далее

ORM — есть ли профит? Особенно когда по двору бегает ИИ-шка

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

ORM — Object-Relational Mapping — Объектно-реляционное отображение — это технология, позволяющая связывать SQL-ые БД с ООП кодом. Самая известная из них — Hibernate.

Hibernate — очень красивая технология. Она формирует ощущение магии.

Ты просто создаёшь объект, — хлабысь! — он уже в базе данных. Никакого SQL, никаких соединений, никаких ResultSet. Всё происходит как будто само собой. Прелесть.

Именно поэтому отказаться от Hibernate так тяжело.

Это напоминает Кольцо Всевластия из «Властелина колец». Оно не просто давало силу — оно меняло сознание своего владельца. Оно внушало мысль, что без него уже нельзя. Что именно оно даёт власть и контроль.

Hibernate действует очень похоже. Он формирует ощущение, что именно он управляет данными. Что именно он связывает код с базой. Что без него всё развалится.

И ты начинаешь бояться.

Бояться, что без Hibernate придётся писать бесконечный SQL. Бояться, что потеряешь контроль над данными. Бояться, что любая операция с базой превратится в мучение.

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

Читать далее

Как мы перестали гонять данные туда-сюда и подружили OLTP с аналитикой: знакомьтесь, Postgres Pro AXE

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

«HTAP», «единая платформа для OLTP и OLAP», «никаких ETL» — такие обещания в индустрии делают каждые полгода. Обычно за этим следуют компромиссы: либо транзакции деградируют, либо аналитика тормозит, либо архитектура превращается в Франкенштейна. Мы расскажем, что конкретно сделали в Postgres Pro AXE — и почему это работает иначе.

Читать далее

Что делать, если HTTP‑запрос прошёл, а транзакция в БД откатилась?

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

Если ваш сервис одновременно пишет в БД и дёргает внешние API, прямо сейчас у вас есть как минимум один из этих сценариев:

– деньги списаны, заказа в базе нет;
– товар на складе заблокирован навсегда под «призрачный» заказ;
– курьерская служба везёт посылку, которую никто не заказывал.

Это не баги в коде – это архитектурная проблема двойной записи. И у неё есть классическое решение: паттерны Transactional Outbox, Result Table и Saga Compensation. Под катом – не только теория, но и живой рабочий проект на Scala, который можно склонировать и запустить.

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