Обновить
140.94

PostgreSQL *

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

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

Как приручить дракона или Сказочка о том, как разработчик впервые встретился с Unit-тестами

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

Disclaimer.

Статья не содержит описание новомодных технологий или прорывы на поприще разработки. Рассматривайте её как рассказ об опыте открытия для себя мира unit тестирования.

Если вы раньше не писали unit-тесты, но хотите начать, не уверены как тестировать вашу БД и нужно ли это, не знаете как использовать моки, и для чего они, то эта статья может стать началом вашего пути.

А ещё здесь есть драконы - и это нормально.

Читать далее

Как сменить архитектуру на проекте и начать спать

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

Привет всем! Я Руслан Абдуллаев, DevOps-инженер Технократии. Хочу рассказать про наш проект из 2020. В тексте будет немного моей боли, признание ошибок архитектуры, переход к ansible и minio, и финальная форма покемона без единого даунтайма.

Это что за покемон?

Real-time мониторинг тормозящих запросов PostgreSQL своими руками за полчаса

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

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


Ключевое слово — в конкретный момент времени. Например, база непонятно от чего напряглась на 5 минут, потом всё само рассосалось, и очень хочется знать, почему. Отчёты за сутки, присылаемые dba на основе pg_stats_statements, не всегда проясняют ситуацию. Другие графики и логи могут помочь. Но всё же хочется не гадать на кофейной гуще, а конкретно посмотреть, что такому-то запросу в такое-то время было плохо, или его было много.


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


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

Читать дальше →

Postgresso 33

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


Продолжаем экспериментировать с форматом: в этом выпуске нет раздела Релизы, но несколько релизов разбросаны по соответствующему контексту.

Люди


Список коммитеров прирос Даниэлем Густафссоном (Daniel Gustafsson, Greenplum, из Стокгольма) и Джоном Найлором (John Naylor, 2ndQuadrant=EDB)

Даниэль: я использую, разрабатываю и продвигаю open source последние 15 лет, фокусируясь в основном на PostgreSQL и curl. Сейчас я работаю в Greenplum. Я контрибьютор PostgreSQL и работаю над кодом ядра PostgreSQL. А ещё над веб-сайтом, там я коммитер. Кроме программистских дел, я ещё и организую международные конференции: Nordic PGDay, FOSDEM, PGDay и PostgreSQL Conference Europe.

Джон не любит, видимо, говорить о себе. В корпоративном блоге есть парочка его статей.

Интервью: Брин Льюэллин
Читать дальше →

Про фугу, Антонио и парашют, или Как мы разрабатывали каталог строительных материалов

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

Суровый DIY, легаси, kafka и дизайн-система для дам с собачками.

Читать далее

DataGrip 2021.2: Генерация источника на основе кода, поиск по истории изменений, управление списком автодополнения и др

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

Привет! Рассказываем о том, что мы сделали в DataGrip за четыре месяца. Если вы пользуетесь другими IDE от JetBrains и работаете в них с базами данных, то этот пост для вас тоже.

Что внутри?

Мониторинг PostgreSQL. Расшифровка аудиочата Data Egret и Okmeter

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

Представляем текстовую версию недавнего разговора с коллегами из Data Egret — компании, которая специализируется на поддержке PostgreSQL. Ведущий инженер команды Okmeter Владимир Гурьянов пообщался с Ильей Космодемьянским (CEO Data Egret) и Алексеем Лесовским (senior DBA Data Egret). Обсудили, как мониторить PostgreSQL, какие бывают ошибки при выборе и настройке систем мониторинга, кто такие DBA и какие soft skills для них важны, а также затронули более хардкорные темы. Пост объемный, но он того стоит.

Читать далее

Empire ERP. Занимательная бухгалтерия: PostgreSQL

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

Содержание цикла статей: https://github.com/nomhoi/empire-erp.


Попробуем спроектировать базу данных модуля "Бухгалтерия" на PostgreSQL.

Читать дальше →

Потоковый захват изменений из PostgreSQL/MySQL с помощью Apache Flink

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

Привет! Сегодня мы поговорим и попробуем на практике реализацию паттерна Change Data Capture (далее – CDC) в Apache Flink. 

Статья разделена на несколько частей: в первой мы рассмотрим теоретические основы Change Data Capture, варианты реализации и сферы применения. Во второй – обратимся к особенностям CDC-коннекторов экосистемы Apache Flink, а также выделим самые интересные фичи (а заодно и немного расскажем об Apache Flink для тех, кто раньше с ним не сталкивался). В третьей части – перейдем к практике, закатаем рукава и реализуем несложный сценарий захвата изменений из WAL PostgreSQL, приправленный объединениями, агрегацией, стеком ELK и целым кластером Flink, правда в миниатюре.

Читать далее

Борем deadlock при пакетных UPDATE

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

Однажды при выполнении достаточно тривиального запроса:

UPDATE tbl SET val = val + 1 WHERE id IN (1, 2, 3)

... вы получаете ошибку ERROR: deadlock detected

Но почему? Ведь еще вчера все успешно работало!

И что с этим теперь делать? Давайте разбираться.

Читать далее

Почему мы перешли с Oracle на PostgreSQL, и как это сделать

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


Всем привет!


Сегодня расскажем о сравнительно новой для нас теме — про перевод приложения с Oracle на Postgres Pro (далее в тексте везде сокращу до PG). В общем смысле тема не столь уж нова — многие компании этим также занимаются или даже уже прошли этот путь. Так, например, на ежегодной конференции pgConf всегда есть несколько интересных докладов по этой теме (https://pgconf.ru/). Если говорить о формальностях, то мы реализуем инициативу согласно (Приказ Министерства связи «Об утверждении плана по импортозамещению программного обеспечения» от 01.02.2015 № 96). По факту — ещё и денег экономим, слезая с "лицензионной иглы". На эту тему можно отдельную статью написать, а в этой речь пойдёт о программной стороне вопроса. Кому интересно, добро пожаловать под кат.

Читать дальше →

Почему PostgreSQL тормозит: индексы и корреляция данных

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

"Хочешь ускорить запросы, построй индекс" – классический первый шаг по увеличению производительности в PostgreSQL. Вот только на практике можно встретить ситуацию, когда индексы в PostgreSQL есть, но тормоза никуда не делись. Не все индексы являются эффективными. Одна из возможных причин тормозов индексов – это отсутствие корреляции данных. Давайте поговорим о пенальти на производительность, которое дает расположение данных: почему это происходит и как это можно предотвратить.

Ускорить свой PostgreSQL

Избавляемся от паролей в репе с кодом с помощью HashiCorp Vault Dynamic Secrets

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

Привет, Хабр! Меня зовут Сергей, я работаю IT Head в компании Quadcode. Сегодня хотел бы рассказать о том, как я решил проблему с хранением паролей в открытом виде в коде одного из моих pet-проектов. Думаю, это знакомая для многих ситуация. Знакомая — и неприятная.

Сразу скажу, что когда я начинал работу над проектом, ничего страшного в этом не видел, меня все устраивало. Но когда настало время подключать к разработке проекта кого-то извне, стало понятно, что хранить пароли в открытом виде небезопасно (да и перед контрибьюторами будет немного стыдно за такие банальные вещи) — это проблема. Вариантов решения было несколько. Под катом — рассказ о том, какое решение я выбрал и что получилось в итоге.

Читать далее

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

Гибридное использование RDBMS и NoSQL подходов для обработки транскриптомных данных

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

Эксперимент по секвенированию транскриптома (RNA-seq) стал практически рутинной процедурой для изучения как модельных организмов, так и для сельскохозяйственных культур. В результате биоинформатической обработки таких экспериментов получаются объемные разнородные данные, представленные нуклеотидными последовательностями транскриптов, аминокислотными последовательностями и их структурно-функциональной аннотацией. Полученные данные важно представить широкому кругу исследователей в виде баз данных (БД). В публикации мы рассмотрим гибридный подход к созданию молекулярно-генетических баз данных, которые содержат информацию о последовательностях транскриптов и их структурнофункциональной аннотации. Сущность подхода в одновременном хранении в БД информации как структурированного типа, так и слабо структурированных данных. Технология использована для реализации БД транскриптомов сельскохозяйственных растений. В публикации рассматриваются особенности реализации такого подхода и примеры формирования как простых, так и сложных запросов к такой базе данных на языке SQL. Данная статья является укороченным пересказом нашей работы doi: 10.17537/2020.15.455 в которой я являюсь соавтором.

Читать далее

Postgresso 32

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


БЕТА 14


PostgreSQL 14 beta

Вышла первая бета PostgreSQL 14, а затем и вторая (здесь отличия 1-й беты от 2-й, они незначительные). Дальше будет ещё, возможно, несколько бета-релизов, потом один или несколько релиз-кандидатов и — в конце сентября 2021-го — официальная PostgreSQL 14.

Загрузить
Информация для бета-тестеров
Новое в PostgreSQL 14
Нерешённые проблемы PostgreSQL 14
Найдите баг. И пришлите.

Вместо эпиграфа слова Брюса Момджана:
в предыдущих четырёх в мажорных релизах было от 170 до 189 пунктов с новшествами, а здесь — 222. Такое случалось разве что до 2017 года.

Что делать с такой горой информации?

Первый совет наш обычный: не ждите релиза, читайте уникальные (не только для русского контекста) обзоры принятых коммитов от Павла Лузанова. Это энциклопедия новшеств. С примерами. Можно увидеть и динамику — что когда приняли. Вот все 5 частей по коммитфестам, имеющим отношение к версии 14:
Июльский,
Сентябрьский,
Ноябрьский,
Январский,
Апрельский.

Кроме того, на этот раз можно посмотреть, например, ещё вот какие источники: микро-обзоры Мишеля Пакье (Michael Paquier) в серии Postgres 14 highlights. Пока их вышло пять:

Monitoring for COPY

COPY TO и COPY FROM нередко занимают много времени, поэтому возможность посмотреть, как идут дела с копированием, не прихоть. В новом системном представлении pg_stat_progress_copy по одной строке с 8 полями (см. статью) на каждый бэкенд.
Читать дальше →

Мониторинг запросов в Greenplum

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

Часто при работе с разными базами данных необходимо отслеживать выполнение текущих запросов. В основном это связано с задачами администрирования или аналитики. Средства мониторинга, позволяющие управлять и наблюдать за выполнением запросов, сильно помогают в этом. Я расскажу о том, с какими задачами мы столкнулись при проектировании и реализации системы мониторинга запросов для Arenadata DB.

Читать далее

Поиск среди 10000 GitHub репозиториев на Postgres (используя только MacBook)

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

Привет!  Меня зовут Никита Галушко, я R&D-разработчик в Lamoda. Специально для Хабра я сделал вольный перевод интересной статьи “Postgres regex search over 10,000 GitHub repositories (using only a Macbook)”. 

Ее автор провел эксперимент: собрал датасет из 10 тысяч GitHub-репозиториев и проверил, насколько Postgres подходит для поиска по документам на одной машине — MacBook Pro, а также измерил скорость поиска и подобрал подходящую конфигурацию.

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

Читать далее

PostGIS + JPA. Погружение в детали и тонкости для чайников

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

Привет. Сегодня я расскажу о работе с геоданными в PostgreSQL и немного о том, как это сделать в своем Java/Kotlin-приложении.

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

Читать далее

Опыт хранения IP-адресов в PostgreSQL

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

Не раз наша команда сталкивались с задачей, связанной с хранением и использованием IP-адресов в базе данных. Предположим, что есть типичная задача: необходимо парсить огромное количество диапазонов адресов (~300k) с известного ресурса, а далее определять страну по IP-адресу клиента. Кажется, ничего особенного. Это довольно просто решается любым ниже описанным способом при малых нагрузках. Но если у нас тысячи пользователей или наш сервис является прокси перед всеми остальными? В этом случае не хочется быть бутылочным горлышком и приходится бороться за каждую долю секунды.

Читать далее

А нужен ли Redis или хватит PostgreSQL

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

Есть проверенная архитектура, которую я видел много раз для поддержки ваших веб-сервисов и приложений:

  • PostgreSQL для хранения данных
  • Redis для координации очередей фоновых заданий (и некоторых ограниченных атомарных операций)

Redis — это фантастика, но что, если бы я сказал вам, что его наиболее распространенные варианты использования этого стека на самом деле могут быть достигнуты с использованием только PostgreSQL?

Сценарий 1: очередь заданий


Пожалуй, наиболее частое использование Redis, которое я видел, — это координация отправки заданий из вашего веб-сервиса в пул фоновых воркеров. Идея состоит в том, что вы хотите записать желание выполнить какое-то фоновое задание (возможно, с некоторыми входными данными) и гарантировать, что только один из многих ваших фоновых воркеров выполнит его. Redis помогает в этом, поскольку предоставляет богатый набор атомарных операций для своих структур данных.
Читать дальше →

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