Обновить
182.84

PostgreSQL *

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

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

Linux в Windows + VSC

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

Эта статья для тех, кто столкнулся с необходимостью иметь компьютер под управлением одной из систем семейства Linux и при этом имеется единственный компьютер под управлением Windows. Для таких случаев в Windows есть стандартное решение под названием WSL (Windows Subsystem for Linux). Конечно нельзя назвать данное решение полноценным. Но для тестирования проекта или обучения вполне может подойти. В моем случае решил использовать эту систему для обучения работы в Airflow. Что из этого вышло покажу дальше в статье. Забегая вперед скажу, что не все так однозначно ни с подсистемой Linux в Windows ни с дальнейшей работай проектов в ней.

Читать далее

Новости

Сессионные вычислители — залог успеха аналитики будущего

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

Вечный конфликт: аналитики требуют свободы маневра, а DBA закрывают доступ к базе, опасаясь одного «убийственного» запроса, который положит весь кластер. В Postgres Professional мы разработали Tengri — систему, где каждый пользователь получает изолированные вычислительные ресурсы. Рассказываю, как архитектура индивидуальных вычислителей позволяет избежать конкуренции за ресурсы и почему после такого опыта возвращаться к общим очередям запросов уже не хочется.

Читать далее

Отказоустойчивый PostgreSQL для почты RuPost: Patroni + etcd + HAProxy за три ВМ

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

Когда почта ложится — ложится всё. Переписка, задачи, согласования, доступы — всё завязано на почтовый сервер. А если под ним единственный PostgreSQL без резервирования, то между вами и катастрофой — один сбойный диск или зависший процесс.

В этой статье — пошаговый рецепт: собираем отказоустойчивый кластер PostgreSQL на базе Patroni, используем etcd для консенсуса и HAProxy как единую точку входа. Три виртуальные машины — и ваша почта RuPost переживёт падение ноды без потери писем и без ручного вмешательства.

Читать далее

PG_EXPECTO v.7 + DeepSeek: Статистический анализ инцидентов производительности СУБД PostgreSQL

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

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

В представленных отчётах DeepSeek не только выявил переход от проблем с записью к проблемам с чтением в первом инциденте, но и точно определил во втором случае виновника деградации — новый тяжёлый запрос на фоне острого дефицита памяти. Благодаря pg_expecto, нейросеть оперирует не догадками, а точными статистическими показателями (корреляциями, трендами R², приоритетами ожиданий), превращая процесс расследования инцидента из гадания по графикам в быстрый и доказательный анализ.

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

Глоссарий терминов | Postgres DBA | Дзен

Читать далее

Партиционирование PostgreSQL: опыт команды Геосервисов

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

Всем привет! Поводом для написания этой статьи послужила ситуация, с которой мы в команде Геосервисов столкнулись.

Когда наша база данных нормализованных OSM-данных достигла размеров в 600+ ГБ, VACUUM стал занимать 6+ часов. Мы начали приближаться к пределу хранилища (600 GB из 1 TB), а производительность запросов деградировала. Стало очевидным — партиционирование неизбежно.

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

Читать далее

Создание системы по управлению цифровыми активами для базы данных PostGIS. Часть 3. Семантические связи между таблицами

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

Здравствуйте, уважаемые читатели Хабра!

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

Интересно? Читать!

LWLock:LockManager, fastpath блокировки в PostgreSQL 18

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

В статье Дмитрия Ремизова дан качественный тест, проявляющий проблему конкуренции за блокировки типа LockManager. В статьях Дмитрия описываются интересные проблемы, возникающе при реальной эксплуатации. Было упомянуто, что проблема решена в 18 версии PostgreSQL без описания того, как решена. Эта статья закрывает пробел. Начиная с 18 версии, проблема ожиданий получения блокировки LWLock:LockManager при планировании запросов, в которых может использоваться суммарно более 16 таблиц (в том числе секций и TOAST) и индексов устранена.

Также даётся ответ на вопрос: если fastpath блокировки  хранятся отдельно для каждого процесса, как другие процессы проверяют наличие блокировок? В статье описано, почему блокировки по быстрому пути (fastpath) так эффективны и почему новшества в PostgreSQL, появившиеся в 18 так важны на практике.

Читать далее

LWLock:LockManager, fastpath и всё-всё-всё

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

Общеизвестным является тезис о том, что от избыточного индексирования страдают только DML-операции, а SELECTы только получают разнообразные бенефиты.
Однако существуют определённые нюансы, которые могут разрушить данную стройную картину мира.

Я попробую продемонстрировать возможную проблему на тестовом примере (кстати, почти аналогичная проблема наблюдалась в реальной ПРОМ-системе).

Читать далее

Как организовать тестовую среду, сохраняя покой владельца данных

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

Привет, сообществу Habr!

Хочу поделиться опытом с коллегами -  как мы решили одну из наболевших проблем нашей команды разработки – отсутствие полноты данных для тестирования реализованного функционала в условиях ограниченного доступа к реальным данным компании. Если вы работаете с персональными данными, то наверняка сталкивались с такой проблемой.

Наша команда Neoflex работает на проектах заказчика. При старте работ мы всегда подписываем NDA, но все равно этого недостаточно, чтобы владелец доверил нам полный доступ к промышленным данным. Мы его прекрасно понимаем: данные -  основа благополучия компании и видеть их должен ограниченный круг лиц, отвечающий за бизнес-результат.

Чтобы удовлетворить ожидания заказчика, выполнить вверенную нам работу и достичь высоких результатов при разработке функционала, нам нужны данные для тестирования, близкие к реальным. Тут возникает сложность – на тестовом контуре либо небольшой срез не консистентных промышленных данных, на которых нельзя протестировать полноценно функционал (например, витрину по операциям определенного сегмента клиентов с глубиной месяц, квартал), либо мы начинаем генерировать синтетику, не всегда попадая в нюансы вариативности данных, тратя на это дополнительные ресурсы.

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

Читать далее

Параллельный поиск в PostgreSQL: Погружение в архитектуру и производительность pg-smart-search SDK

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

Многие проекты рано или поздно утыкаются в «потолок» стандартного поиска. Обычный LIKE перестает справляться, когда данных становится больше 100 тысяч строк, а пользователи начинают ошибаться в каждом втором слове. Типовым решением в такой ситуации считается внедрение Elasticsearch или Meilisearch.

Но внешние движки — это всегда «налог» на инфраструктуру: лишняя память, задержки на сетевой хоп и, самое главное, головная боль с синхронизацией данных. В этой статье мы разберем, как выжать из PostgreSQL производительность специализированного поисковика, используя Node.js как оркестратор параллельных стратегий и механизм AbortSignal для предотвращения лишней нагрузки на БД. Разбираем внутреннее устройство SDK pg-smart-search.

Читать далее

CDC Consumer с криптографической подписью: от Kafka до Hive

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

Шестая статья цикла о построении CDC-пайплайна с нуля. Данные уже текут из PostgreSQL в Kafka, но дальше просто исчезают по retention. Сегодня пишем Consumer на Python, реализуем криптографическую верификацию сообщений и строим трёхслойную архитектуру данных.

Читать далее

Парсинг, боль и AI-напарник: Как я в 16 лет строил Open Source API и оптимизировал Postgres

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

Рассказываю историю создания Mumin API — современной Open Source платформы для работы с хадисами. Внутри: битва с «кривыми» PDF-сканами через регулярки Python, ускорение Fuzzy Search в PostgreSQL почти в 2 раза с помощью GIN-индексов, публикация Kotlin SDK в Maven Central и опыт работы с AI как с Senior-напарником. Без «воды», только код, архитектура и реальные грабли 16-летнего разработчика

Читать далее

Когда стойка умирает, а 5xx остаётся нулевым. Разбор скрытой деградации PostgreSQL

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

09:12 — db-replica-02 connection timeout

HTTP 5xx = 0.2%
HAProxy зелёный
p50 = 38-42ms

Replica в другой стойке недоступна
Отказоустойчивость потеряна
Инцидент не объявлен

Читать разбор

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

С++ внутри PostgreSQL: удобство против традиций

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

Всем привет, меня зовут Илья Шишков, я пишу на С++ с 2006 года. Много лет я был разработчиком в больших C++-кодовых базах, но в 2024 году жизнь меня занесла в PostgreSQL. А именно в RnD-разработку СУБД Pangolin, это реляционная СУБД от СберТеха, PostgreSQL с нашими доработками под требования к усиленной безопасности, производительности и так далее. PostgreSQL, как известно, написан на чистом С. Так я поработал с этим языком несколько месяцев и… стал внедрять C++. 

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

Читать далее

SQL за одну статью: от «SELECT *» до оконных функций и сложных JOIN-ов

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

Кажется, что в ИТ всё меняется каждые пару лет. Фреймворки рождаются и умирают, архитектурные подходы сменяют друг друга, но SQL стабильно остается на месте. Он спокойно пережил хайп вокруг NoSQL, эпоху Big Data и повсеместное внедрение нейросетей.

Сегодня SQL давно перестал быть узким «языком админов». Это универсальный стандарт общения с данными, который жизненно необходим бэкендерам, аналитикам, QA-инженерам и даже продакт-менеджерам.

В этой статье мы пропустим скучную академическую теорию и разберем только то, что реально нужно в работе. Мы пройдем путь от анатомии таблиц и базовых джоинов до оконных функций. А в конце заглянем под капот базы данных и разберем логический порядок выполнения запроса — секретный ингредиент, который навсегда избавит вас от вопроса: «Почему эта строчка не работает?!».

Читать далее

От гаданий к математике: Как PG_EXPECTO v.7 и DeepSeek превращают DBA-анализ из искусства в науку

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

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

Глоссарий терминов | Postgres DBA | Дзен

Традиционный DBA-анализ часто субъективен и опирается на опыт конкретного специалиста. PG_EXPECTO предлагает другой метод : автоматизация сбора и обработки статистики с помощью PG_EXPECTO v.7 и формирование выводов нейросети DeepSeek.

PG_EXPECTO рассчитал граничные значения и метрики ВКО, отсеяв незначимые события. DeepSeek, получив эти «чистые» данные, провел сравнительный анализ экспериментов , указав на скрытые доминанты и системные паттерны.

Читать далее

Алёна Рыбакина: «Путь в коммиттеры PostgreSQL начинается с первого ревью»

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

Клиент, с проблемы которого всё началось, решил её сам — сменил фреймворк и даже не стал дожидаться патча. Но Алёна Рыбакина всё равно продолжила работу — ещё год. Теперь её OR-ANY Transformation — часть PostgreSQL, а сама она — обладательница медали сообщества. Интервью о том, как случайный клиентский баг превращается в вклад в мировой open source.

Читать далее

Обратная сторона массивов в PostgreSQL

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

Начать работу с массивами в PostgreSQL проще простого: объявили колонку как integer[], вставили значения — и готово. Или вообще собрали массив на лету.

Официальная документация дает неплохую базу. Но за этим простым интерфейсом скрывается куда более сложная механика, чем многие привыкли думать. Массивы в PostgreSQL — это не просто «списки, которые можно засунуть в поле таблицы». У них своя стратегия работы с памятью, собственная логика индексации и целый ворох граничных случаев.

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

Читать далее

Hue для домашнего Hadoop: Docker, CSRF и неочевидные грабли

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

Пятая статья цикла о построении CDC-пайплайна с нуля. HDFS и Hive работают, но управлять ими через консоль неудобно. Сегодня поднимаем веб-интерфейс Hue и разбираемся, почему в 2026 году сборка из исходников требует Python 2.7.

Читать далее

Увольняем джуниора: автоматизируем анализ данных c Claude Code, Codex, Cursor, OpenCode

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

Вспомните, как вы онбордили аналитика: показывали данные, примеры рабочих SQL, неочевидные легаси и костыли — и через какое-то время он начинал перформить самостоятельно.

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

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

Статья будет полезна как предпринимателям, которые хотят оптимизировать процессы, так и аналитикам, которые хотят прокачать себя. Погнали!

Уволить
1
23 ...