Как стать автором
Обновить
116.51

PostgreSQL *

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

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

Опыт разработки на доработанном pgTap

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

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

pgTap – это расширение PostgreSQL для разработки юнит-тестов. Сами тесты, как, собственно, и pgTap, пишутся на plpgSQL, что означает низкий порог вхождения для разработчиков PG.

Уверен, что читатель, по крайней мере, знаком с техникой разработки через тесты. Поэтому не буду пускаться в описание теории юнит-тестирования. Благо литературы на эту тему более чем достаточно. Тем не менее, чтобы быть понятым, приведу некоторые детали ниже.

Читать далее

PL/V8: JavaScript в PostgreSQL

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

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

Сегодня рассмотрим PL/V8. Это расширение PostgreSQL, которое позволяет использовать JavaScript через движок V8 (тот самый, который стоит за Node.js). Это открывает массу возможностей:

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

Читать далее

SQL HowTo: пошагово решаем СЛУ (Advent of Code 2024, Day 13: Claw Contraption)

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

В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

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

В этой части совсем простая идея по одновременному решению систем линейных уравнений "пачками".

Читать далее

Ревизор приехал: pg_anon проверяет, всё ли скрыто

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

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

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

Читать далее

Установка PostgreSQL в Linux

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

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

При обучении студентов работе с базами данных мной была выбрана СУБД PostgreSQL --- хотя она и считается несколько сложной для изучения, чем та же MySQL, это достаточно популярный и к тому же бесплатный продукт, с открытым исходным кодом, и самое главное --- у неё есть в том числе и российские корни. С литературой по PostgreSQL ситуация оказалась двоякой: с одной стороны, книг по ней не так уж и много, как хотелось бы (мейнстримом является MySQL, многие примеры оттуда работают и здесь), в результате чего найти хорошее объяснение или примеры по тому или иному вопросу может быть затруднительно. С другой стороны, с 2015 года компания Postgres Professional делает полный перевод документации PostgreSQL на русский язык, за что им огромное спасибо. Но... Всё равно этого не хватает. В общем, если вам нужно установить PostgreSQL и вы уже столкнулись при установке с какими-то трудностями, добро пожаловать под кат!

Читать далее

pg_profile и pgpro_pwr: анализируем производительность БД

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

Администраторы баз данных часто ломают голову над тем, чтобы выявить самые «прожорливые» процессы, из-за которых страдает быстродействие систем. В далеком 2017-м DBA (а теперь инженер Postgres Professional) Андрей Зубков тоже задавался этим вопросом, а в результате придумал утилиту pg_profile для PostgreSQL, которая сейчас «проросла» в pgpro_pwr.

В этой статье мы расскажем о стратегическом мониторинге БД и научим выявлять узкие места в ваших БД с помощью наших утилит.

Читать далее

SQL HowTo: волновой алгоритм и подсчет границ (Advent of Code 2024, Day 12: Garden Groups)

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

В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

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

В этой части используем двойную рекурсию для "раскраски" регионов на карте.

Читать далее

Перенос Orca в расширение Postgres: цели и детали реализации

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

Greengage Database — наш форк Greenplum Database. Основная идея — оставить исходный код открытым и продолжить разработку и совершенствование базы данных. Мы собираемся перенести Greengage Database на более новую версию Postgres, предоставив более богатый набор функций всем пользователям сообщества и нашим клиентам.

Но эта задача сложнее, чем может показаться. Ранее для реализации функций массивно-параллельных вычислений Greenplum Database основная функциональность Postgres была существенно переработана. Таким образом, обновление версии Postgres создавало огромные сложности. Например, переход с Postgres 9 на Postgres 12 потребовал огромных усилий — между мажорными релизами было почти 5 лет разработки.

Имея это в виду, мы начали масштабный рефакторинг ядра Greengage Database. Мы собираемся разделить ядро ​​Postgres и специфичные функции Greengage Database, используя стандартные существующие средства Postgres для расширений.

Читать далее

Как сделать SMS-оповещение о землетрясениях с GeoJSON и SMS API

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

Привет, Хабр! Слышали о землетрясениях, которые происходят каждый день по всему миру? Как правило, если вы не сейсмолог или не живёте рядом с тектоническим разломом, то вам всё равно. Но информировать людей о реальных катастрофах в их регионе очень важно, покажем пример такой системы оповещения через SMS.

Читать далее

Властелин финансов. Битва за банкоматы

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

Проводить платежи без транзакций да ещё и без ограничения по количеству запросов? Разве это возможно? Если желаешь узнать как, то добро пожаловать под кат!

Снять корону

Коротко про generate_series в PostgreSQL

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

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

Есть такая функция в PostgreSQL — generate_series. На первый взгляд, она кажется скучной. Ну подумаешь, генерирует ряды чисел. Но не тут-то было! Этот инструмент спасает от десятков скучных запросов и сотен часов рутины.

generate_series — это функция PostgreSQL, которая создаёт ряды значений на лету.

Читать далее

Управление резервным копированием PostgreSQL через веб-интерфейс: обзор утилиты PG Back Web

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

В обзоре узнаете, как графический интерфейс PG Back Web значительно облегчает управление резервными копиями PostgreSQL. Мы покажем, как настраивать резервные копии всего за несколько кликов.

Читать далее

SQL HowTo: поиск «в ширину» внутри цикла (Advent of Code 2024, Day 10: Hoof It)

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

В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

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

В этой части снова сталкиваемся с вложенным в цикл рекурсивным поиском "в ширину".

Читать далее

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

Визуализация Active Session History в PostgreSQL — делаем просто и красиво

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

Привет! Меня зовут Геннадий, я Oracle и PostgreSQL DBA в компании Uzum. По пути еще иногда занимаюсь NoSQL, люблю автоматизировать информацию из Ansible и визуализировать нужные мне метрики в Grafana. Хочу поделиться дашбордом для Grafana, который отображает историю активных сессий PG с их текущим SQL, отсортированных по группам ожиданий. Он помогает мне искать проблемы производительности PG-баз, и может пригодиться тем, кто администрирует Postgres.

Читать далее

Lite-версия мигратора Flyway для PostgreSQL на TypeScript

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

Так как я активно использую возможности Flyway, такие как repeatable migrations и callbacks, и не хочу от них отказываться, а аналогов этих функций в других системах миграции нет, я решил написать собственный лёгкий клон Flyway на Node.js для PostgreSQL.

Читать далее

Как поймать и обезвредить проблемные запросы в PostgreSQL

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

«Как ускорить выполнение запросов к базам данных?» — извечный вопрос админов и пользователей. Казалось бы, раньше всё работало неплохо, но стоило клиентской базе вырасти в пять раз, как всё замедлилось. Знакомая ситуация? В этой статье расскажем, как найти запросы, которые можно ускорить, и оптимизировать их.

Статья подготовлена по материалам выступления на конференции PGCONF.СПБ 2024.

Бежим ловить запросы!

SQL HowTo: оптимизируем рекурсию (Advent of Code 2024, Day 9: Disk Fragmenter)

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

В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

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

В этой части рассмотрим некоторые "грабли", на которые можно наступить, реализуя рекурсивные алгоритмы на SQL... Которые иногда можно сделать вовсе нерекурсивными, ускоряя запрос в десятки раз!

Читать далее

Чья фича лучше или как сравнить эффективность планов SQL-запроса

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

Как сравнить? - измерить execution-time конечно! - скажет опытный читатель. И будет совершенно прав: с практической точки зрения эффективнее та СУБД, которая выдаёт больший TPS. Однако иногда нам требуется спроектировать систему, которой ещё нет или сделать прогноз поведения на нагрузках, которые ещё не пришли. В таком случае нам нужна некоторая характеристика, позволяющая выполнить качественный анализ плана или выполнить сравнение пары планов. Обсуждению одной такой характеристики - количество прочитанных страниц данных - и посвящён данный пост.

Читать далее

SQL HowTo: генерация и подсчет уникальных комбинаций (Advent of Code 2024, Day 8: Resonant Collinearity)

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

В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

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

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

Читать далее

PGlite — полноценный Postgres-сервер на WASM. Работает прямо в браузере и Node.js

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

Безумные штуки иногда можно найти в интернете. Листая 2024 JavaScript rising stars (https://risingstars.js.org/2024/en#section-all) обнаружил там удивительного зверя - Postgres скомпилированный через emcc в WASM версию, и допиленный до состояния, когда его можно запустить внутри JS-процесса (браузер/Node.js/Bun/etc).

Как он устроен, как им пользоваться, и, самое главное, зачем? Добро пожаловать под кат :)

Поехали!

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