Обновить
149.98

PostgreSQL *

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

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

Создание масштабируемой и высокодоступной системы Postgres с помощью Patroni 3.0 и Citus

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

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

Читать далее

Поднимаем кластер PostgreSQL в Docker и Testcontainers

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

Ранее я рассказывал о том, как запустить PostgreSQL в Docker. Тогда речь шла об использовании «ванильных» образов Postgres и поднятии одного хоста. В большинстве случаев этого достаточно как для тестов, так и для экспериментов, но нужно понимать, что в промышленной эксплуатации чаще всего используются высокодоступные (отказоустойчивые, кластеризованные) конфигурации PostgreSQL.

Сегодня я покажу, как запустить уже целый кластер PostgreSQL в Docker, а также в тестах через Testcontainers, и как вручную инициировать смену мастер-хоста.

Читать далее

Высокодоступные кластеры PostgreSQL с Patroni: Ваша очередь протестировать сценарии отказов

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

Пару недель назад (перевод статьи от 2021 г.) мы с Джобином (Jobin) сделали небольшую презентацию в рамках Percona Live Online с названием, подобным теме этой статьи: "PostgreSQL HA с Patroni: Сценарии отказов и способы восстановления кластера после них". Мы развернули 3-узловую среду PostgreSQL на имеющемся у нас оборудовании и решили "ломать" ее различными способами: отключали от интернета и электропитания кабели, “убивали” основные процессы, пытаясь насытить процессоры. Всё это происходило при постоянной записи и чтении данных из PostgreSQL. Идея заключалась в том, чтобы посмотреть, как Patroni справится с отказами и будет управлять кластером, продолжая обеспечивать работу. Это была интересная демонстрация!

Читать далее

Как мы настраивали PostgreSQL для использования в качестве кэша

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

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

Читать далее

Postgresso №7 (56)

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

Конференции, битва за Ибицу

PGConf.СПб 2023

PGConf впервые пройдёт 25 сентября в Санкт-Петербурге. Конференция будет называться PGConf.СПб 2023. Место - Отель «Коринтия», Невский проспект., д.57.

Регистрация открыта и заявки принимаются. Подать заявку можно в личном кабинете. Количество тем не ограничено.

PGConf.Сибирь 2023

Пройдёт на площадке Город ИТ пройдёт 9-го сентября в Томске. Программа еще формируется, но общая канва известна.

PGIbiza 2023: Postgres and Ecosystem

Но с ней не всё просто. Казалось бы, на Ибице есть всё, чтобы поработать и расслабиться последовательно или одновременно (насколько помню, там даже доклады на пляже). Но всплыл старый конфликт между Альваро Эрнандесом (Álvaro Hernández Tortosa) и старейшинами (Core Team) PostgreSQL. Поскольку есть риск многое истолковать неправильно, напомним предысторию. Альваро не рейдер, попытавшийся захватить торговые марки PostgreSQL. Он революцьонэр. История эта началась ещё в 2021-м.

Читать далее

Запускаем Doom внутри PostgreSQL

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

В статье разберём основные этапы создания расширения для PostgreSQL на языке C и как запустить внутри СУБД игру Doom.

Читать далее

Одна из возможных версий переезда с MySQL на PostgreSQL

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

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

Читать далее

pgmig — история разработки инструмента управления изменениями в БД или чего нам не хватило в Liquibase и Flyway

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

Всем привет! На связи разработчики БД - Юрий Плотников и Андрей Григорьев, в этот раз рассказывать мы будем вдвоем, вернее не совсем вдвоем - об одном "фирменном" решении расскажут коллеги из нашего центра компетенций PostgreSQL.

Пара слов о заглавной картинке и логотипе

Несмотря на то, что история pgmig началась раньше, большое развитие он получил при разработке наших "сказочных" продуктов (youtube).

Поэтому мы решили, что ему также место среди сказочных персонажей - домовенок, приводящий процессы в порядок

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

Читать далее

PostgreSQL: обходим подводные камни при миграции

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

Привет! Меня зовут Антон Казачков, я специалист вендорской поддержки СУБД Platform V Pangolin. Это реляционная СУБД уровня enterprise, которая разработана в СберТехе на основе PostgreSQL и доработана до корпоративного уровня надёжности и производительности. Сегодня Pangolin — целевая СУБД Сбера, основа для миграции всех существующих приложений и разработки новых.

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

Читать далее

Использование PostgreSQL Enum в SQLAlchemy. И проблемы с ним

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

В ходе использования postgresql совместно с sqlalchemy я столкнулся с рядом особенностей, которые слабо документированы, о которых мне и хотелось бы поведать

Тут описаны как простые примеры использования, так и решения разнообазных проблем. Так что если вы являетесь пользователем postgresql и sqlalchemy данная статья может значительно упростить вашу жизнь

Читать далее

Всегда ли хорош Index Only Scan?

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

Среди применяемых в PostgreSQL методов доступа к данным Index Only Scan стоит особняком, считаясь у многих разработчиков "волшебной пилюлей" для ускорения работы запроса - мол, "Index Scan - плохо, Index Only Scan - хорошо, как только получим его в плане - все станет замечательно".

Как минимум, это утверждение неверно. Как максимум, при определенных условиях может вызвать проблемы чуть ли не на ровном месте.

Читать далее

Как протестировать код на Go с базой данных?

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

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

Читать далее

Представляем nxs-data-anonymizer — удобный инструмент для анонимизации баз данных

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

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

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

Не секрет, что разработка даже небольшого проекта тесно связана с инфраструктурой, поскольку любая программа требует наличия определённого окружения. Часто таких окружений требуется несколько — одно под прод, а остальные — под разные нужды, например, тестирование. Иногда эти среды даже могут быть динамическими — когда вместе с новым бранчем создаётся окружение, в котором запускается разрабатываемая версия приложения и всё необходимое для неё, а после того как бранч вливается в main, эта среда и все её данные удаляется. 

И вот как раз о данных (а точнее о базах данных) в таких средах и хотелось бы поговорить. А именно — где и как их взять, как сделать их максимально приближенными к боевым и как защититься от их утечки. Для решения этих задач мы в Nixys используем собственный инструмент — nxs-data-anonymizer. Хотим поделиться им с вами.

Читать далее

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

Поиск по произвольным параметрам

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

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

Давайте

Мигрируем в PostgreSQL, тестируем OLAP-кубы и разбираемся с валидацией T-SQL-кода: три доклада с митапа ЮMoney

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

Всем привет от команды ЮMoney ?

Делимся видеозаписями и главными мыслями митапа High SQL, который посвятили работе с данными в DWH на Microsoft SQL Server.

Кому советуем посмотреть доклады

◾️ Тем, кто планирует перебраться с Microsoft SQL в PostgreSQL, но всё ещё сомневается.

◾️ Тем, кто выбирает между ANTLR и DacFx и хочет научиться решать проблемы во время ревью TSQL-кода.

◾️ И тем, кто хочет узнать, зачем тестировать OLAP-кубы, что может пойти не так и какой результат дают автотесты силами разработчиков и тестировщиков.

Смотреть доклады

Простой бэкап базы данных и статики для небольшого Django-проекта

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

Друзья, всем привет!

Помимо основной работы инженером данных, я поддерживаю небольшой сайт на Django (посвящен информационным материалам по преподаванию истории и обществознания).

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

Сразу скажу, что такой подход подойдет для баз, размер которых не является астрономическим (десятки и сотни гигабайт), в моем случае база весит всего 50 Мб, статика около 400 - поэтому мне не составляло большого труда синхронизировать такие объемы. Думаю, небольшие и даже средние интернет магазины и блоги вряд ли хранят на порядки больше данных.

Для больших проектов, лучше бэкапы архивировать, шифровать и отправлять куда-нибудь в s3 типа  Minio.

Когда новая инфа на сайте появлялась довольно редко, я все делал руками, а именно...

Читать далее

Переоткрывая хэш-индексы в PostgreSQL

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

Если вы работает с базами данных, то, скорее всего, знакомы с B-tree индексами. У них множество применений и они являются дефолтными типами индекса в большинстве движков баз данных. Если вы работаете с полнотекстовым поиском или пространственными данными, то скорее всего вы знакомы еще и с GIN и GIST индексами. Если вы работаете с массивными временными рядами, то слышали еще и о BRIN индексах.

Однако, есть еще один менее популярный тип, о котором большинство даже ничего не слышало. Пару версий PostgreSQL назад он был не то что даже непопулярен, но и строго не рекомендован к использованию. Однако в некоторых случаях он может обойти даже B-tree в плане производительности.

Сейчас мы переоткроем хэш-индекс!

Читать далее

Использование функций регулярных выражений в PostgreSQL / Greenplum

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

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

Читать далее

Погружение в индексы PostgreSQL

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


Автор статьи: Артем Михайлов

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

Индексы представляют собой структуры данных, которые позволяют базе данных быстрее находить и извлекать информацию. Они аналогичны оглавлениям в книгах, которые упрощают поиск определенной информации, указывая на ее местоположение. Правильное использование индексов может существенно улучшить производительность запросов, сокращая время обработки и уменьшая нагрузку на систему.
Читать дальше →

Больше книг о СУБД — для тех, кто хочет погрузиться в работу с PostgreSQL

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

Недавно мы подготовили подборку литературы для тех специалистов, кто хочет поближе познакомиться с Redis. Сегодня мы продолжаем тему и говорим о настоящей легенде. Шутка ли — PostgreSQL развивают с 1996 года. За это время СУБД успела «обрасти» крупным сообществом и не потеряла актуальности. На рынок до сих пор выходят посвящённые ей книги. Мы собрали наиболее свежие издания — им не более двух лет. Все материалы в подборке получили высокие оценки и рекомендации от резидентов Hacker News и Reddit.

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

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