Обновить
83.05

PostgreSQL *

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

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

Хакатон как первый продакшн — зачем джунам идти на More.tech

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

Современная сфера IT — как бурное море: динамичная и полная вызовов, особенно для новичков. Поймать волну новейших технологий, получить реальный опыт и поддержку менторов можно на хакатоне. Как раз такой сейчас проходит — на More.tech участников ждут практические кейсы из мира большого IT и командная работа. А победителей — призовой фонд 1,5 млн руб. и шанс получить оффер от ВТБ. В статье вместе с лидерами треков расскажем, что ждет участников More.tech 2025, почему задачи хакатона актуальны для IT сегодня и как их преодолеть.

Хакатон стартовал 27 августа, но к нему еще можно присоединиться и успеть побороться за победу. Участники получат реальный опыт, который помогает на старте карьеры. 

Читать далее

Эволюция ForeignKey в Django: от наивной модели до продакшена

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

Команда Python for Devs подготовила перевод статьи о том, как легко «сломать» внешние ключи в Django и что с этим делать. Если кратко, то unique_together больше не нужен, индексы на ForeignKey работают не так, как вы думаете, миграции могут блокировать продакшен, а правильный порядок операций и частичные индексы экономят гигабайты и спасают нервы.

Читать далее

Как я сделал MoonTap — космическую кликер-игру в Telegram

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

Как я сделал MoonTap - космическую кликер-игру прямо в Telegram на Rust и Vue

Когда в Telegram появились первые кликер-игры вроде Notcoin, стало ясно: мессенджер идеально подходит для лёгких и социальных игровых проектов. Никаких установок, просто открыл ссылку и играешь.

Я решил попробовать свои силы и собрать свою игру - так родился MoonTap, космический кликер с монетками, бустерами и заданиями. На фронтенде - Vue и Canvas-анимации, а для бэкенда я впервые использовал Rust, хотя до этого писал только на Node.js.

Читать далее

Сравнение транзакционных систем Oracle и PostgreSQL

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

Механизм реализации транзакций - основная часть реляционных баз данных. Он упрощает разработку приложений, в которых гарантируется целостность данных. Стандарт SQL регламентирует, часть свойств по поддержке транзакций, но многие детали не стандартизованы. Как следствие, реализация поддержки транзакций в разных базах данных может существенно различаться. В настоящее время, многие пытаются перейти с Oracle на PostgreSQL. Для миграции приложений важно понимать различия в реализации работы транзакций, иначе можно столкнуться с неприятными сюрпризами, которые могут поставить под угрозу производительность и целостность данных. Поэтому Лоренс Альбе решил, что полезно сравнить реализацию работы транзакций в Oracle и PostgreSQL и свести различия в одной статье.

Читать далее

Как успешно мигрировать с Oracle на Postgres Pro Enterprise

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

Миграция с Oracle в «ванильный» PostgreSQL ломается на пакетах, автономных транзакциях и коллекциях — там их просто нет. Разбираем, почему ora2pg спотыкается, что дает нативная реализация этих механизмов в Postgres Pro Enterprise и как ora2pgpro переводит PL/SQL семантически точно, без костылей и регулярок.

Читать далее

Оптимизация БД начинается в пятницу

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

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

Читать далее

Магия деплоя: автоматическое развертывание Coreness одной командой

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

В этой статье рассматривается решение проблемы деплоя Telegram-бота Coreness, с подробный описанием проблем и решений. Вместо ручного копирования файлов, настройки зависимостей и миграций БД была создана система, которая делает всё автоматически.

Читать далее

Почти ультимативный гайд по Criteria API с продвинутыми возможностями Hibernate

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

Вам нужно создать сложный запрос к реляционной БД с изменяющимися параметрами?

В этой статье рассмотрим основные возможности Criteria API. Также рассмотрим более продвинутые вещи, например создание CTE и оконных функций, которые есть у Hibernate Criteria API. В статье много примеров, которые смогут помочь при написании запросов Criteria API на практике.

Читать далее

Оптимизация производительности с помощью логирования PostgreSQL

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

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

Читать далее

CRUD generator для golang + PostgreSQL

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

Для работы любого сервиса обычно нужна база данных. Чаще всего PostgreSQL.
Также требуются общие функции по работе с БД, так называемые CRUD операции,
операции CREATE + READ + UPDATE + DELETE, а также другие функции по работе с БД.
...
Получится готовый микросервис, который можно сразу запустить, или можно использовать как библиотеку через import.

Читать далее

Геоданные в PostgreSQL: зачем нужен PostGIS и как он работает

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

PostgreSQL известна как надежная и универсальная СУБД. Но если нужно хранить координаты, строить маршруты или анализировать границы районов, ее базовых возможностей уже не хватает. Здесь на помощь приходит PostGIS. Под катом разберемся, что умеет расширение и как его использовать.

Читать далее

Почему SELECT FOR UPDATE считается в PostgreSQL вредным

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

Разбирая взаимоблокировки, Лоренс вспомнил, насколько опасным может быть использование SELECT FOR UPDATE при конкурентном доступе. В этом нет ничего нового, но Лоренс заметил, что многие не знают о режимах блокировки строк в PostgreSQL. Лоренс решил подробно описать, когда следует избегать SELECT FOR UPDATE.

Читать далее

Замедляю Postgres в 42 000 раз, потому что мне нечем больше заняться

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

Кругом только и разговоров о том, как бы заставить Postgres работать быстрее, эффективнее, и так далее. Но при этом никто даже не задумывается о том, как бы его замедлить. Само собой, о продуктивности и эффективности парятся в основном те, кому за это платят. Я не из из числа (можете это исправить -- дайте мне знать). На днях я работал над чуть более полезным руководством и в какой-то момент решил, что этому миру нужна такая конфигурация Postgres, которая будет выполнять запросы максимально медленно. Нахрена? Черт знает, но вот что у меня получилось.

Читать далее

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

Shardman. Краткое пособие архитектора

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

Миф о волшебном параметре fast=true жив и здоров, но в распределённых СУБД появляется ещё один — distributed=true. Ни тот, ни другой не спасут, если не пересобрать схему, ключи шардирования, последовательности, запросы и процесс миграции. Мы трезво проходим по всем углам: от выбора ключей и colocated-таблиц до CDC, топологий и ограничений внешних ключей; показываем, где действительно ускорится, а где станет дороже — и что с этим делать.

Читать далее

CDC без боли: как мы делали отказоустойчивую репликацию с Debezium и Kafka

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

Я Евгений Прочан, в платформенной команде Magnit OMNI развиваю инфраструктуру DWH. Расскажу здесь, почему нам понадобилось перейти от батчинга к CDC и как мы это делали. Причин перехода было две: потребность бизнеса в расширении возможностей инфраструктуры и нестабильность нашего старого процесса репликации. 

Мы используем в основном базы данных PostgreSQL. Оттуда пакетами раз в час передаём данные в S3, ClickHouse и таблицы Iceberg. Наша потоковая нагрузка достигает примерно полутора терабайта данных, 6000 операций в секунду (около 1500 в самой нагруженной базе данных). 

Читать далее

Как я перенёс операторный PostgreSQL Patroni из Kubernetes на bare metal без сбоев

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

Делимся практическим опытом миграции PostgreSQL Patroni из Kubernetes на «железные» серверы. Автор рассказывает про выбор метода переноса, настройку standby-кластера, обновление конфигураций и управление трафиком приложений через pgbouncer. Полезно для DevOps и инженеров, которые хотят избежать сбоев и обеспечить плавный переход на bare-metal-инфраструктуру.

Читать далее

64-битный счётчик транзакций в PostgreSQL

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

Поводом для насписания статьи послужил доклад Евгения Воропаева "Разработка и отладка 64-битного счётчика транзакций" на конференции PG BootCamp 2025. При написании статьи была найдена реальная история патча и раскрыта тайна зоны special блоков PostgreSQL.

В статье описывается история создания патча, вводящего поддержку 64-битных номеров транзакций в PostgreSQL и почему он есть только в коммерческих форках. Статья особенно ценна тем, что под ней есть комментарий автора патча, Александра Короткова.

Читать далее

Оператор «NOT IN» и коварный NULL

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

Порой, очевидные вещи таят в себе удивительные сюрпризы. Казалось бы, простые SQL конструкции: «IN» и «NOT IN». Что тут обсуждать-то?

Читать далее

Рефакторинг скриптов liquibase

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

Неважно почему, но иногда может появиться желание заняться рефакторингом ваших скриптов liquibase. В моём случае постоянно возникали конфликты в общем файле журнала изменений, количество скриптов превратилось в ужасно длинный список, а в самих скриптах невозможно было ориентироваться, поскольку они содержали по 1–2 команды, а в названии файла были только дата и действие. Долго это терпел, долго взвешивал плюсы и минусы, и всё время боролся с желанием всё отрефачить. И в какой-то момент дошёл до точки, когда желание взяло верх.

Решение принято: рефакторингу быть! Сразу скажу, приступать было страшно, но сейчас я очень доволен результатом. «Идеальную» структуру мы не получили, пришлось идти на компромиссы и заплатить свою цену, зато в новой структуре удалось вылечить все проблемы. Теперь в ней удобно ориентироваться и читать код, конфликты создаются очень редко, а все скрипты автоматически детектируются liquibase-ом. Но только это конец истории. А вначале было вообще непонятно, как рефакторить журнал изменений, да так, чтобы в существующие базы данных он смог пролиться, и ничего не поломал при этом!

Приступаем к рефакторингу

Мой первый пет‑проект: как я создавал ядро для Telegram‑ботов

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

Я собрал ядро для Telegram‑ботов и описал архитектуру, которая держится на YAML‑сценариях и очереди в БД. Почему отказался от брокера, как экономлю апдейты в базе, как работает «разблокировщик» цепочек и что это даёт в предсказуемости. Показываю решения и компромиссы без «магии».

Читать далее

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