Обновить
132.95

PostgreSQL *

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

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

Апгрейд базы PostgreSQL через репликацию

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

Доброго времени суток. Решил поделиться опытом апгрейда через репликацию. Порыскав немного нашел написанного не мало на просторах Хабра, теории и практики, но в моем случае есть небольшое отличие ну и плюс актуальные версии, в общем думаю лишним не будет, а если кому-то даже частично будет полезно то вообще блеск. Итак приступим …

Недолго рассмотрев сложившуюся ситуацию предложил ребятам метод апгрейда через репликацию, для них никаких сложностей лишь один раз перезапустить приложение с изменением имени базы в коннекторе. Это позволит за раз сделать все что необходимо с учетом всех условий. Объяснил что разработчикам нужно наверно даже больше уделить внимание тестированию того что может выстрелить в новой версии самого 14 PosgreSQL - возможно изменение синтаксиса SQL, или свежий баг на лини сопряжения «база - ОС», или особенность драйвера, в общем нужно протестировать работу всего функционала и ухо держать востро, ну а я сделаю все максимально гладко со своей стороны.

Соответственно на тесте постарался процедуру обкатать и проиграть в различных вариантах и ситуациях. Да и конечно было ограничение - на сервере не было дискового пространства на 8 баз суммарно, разве что на 3 хватило. Короче есть ограничение по месту. Да и сразу скажу, что в моей базе партиций не было, поэтому стоит это учесть и внести изменения в скрипты, если требуется !

Задача у команды стояла такая - нужно разделить одну базу на 8 отдельных баз по внутреннему индикатору- ID проекта (в процессе работы проект разделился на признаку и все жило в пределах одной базы). Так же у меня была своя задача апгрейда с 13 на 14 версию PostgreSQL. Была просьба от команды сделать это с минимальный простоем и совсем хорошо если за один присест, а не разбивая частями по 2-3 базы за итерацию.

Читать далее

DBA: хранение списков — таблица, массив, строка?

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

Достаточно часто при проектировании схемы БД возникает задача сохранить по основной сущности некоторый набор простых второстепенных данных.

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

Во всех этих случаях мы заранее понимаем, что список этот меняется редко и ни индексировать эти данные, ни искать по ним, ни извлекать отдельно от основной сущности (встречи, сообщения или документа), мы не захотим.

Давайте посмотрим, какие варианты хранения таких данных мы можем использовать в PostgreSQL, и какой из них окажется в разы более эффективным.

Читать далее

PostgreSQL Antipatterns: простой(?) INSERT… VALUES

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

Представим, что у вас есть некоторая табличка статистики, куда вы периодически скидываете таймстамп последнего "текущего" состояния в паре координат - например, (ID организации, ID сотрудника).

Как больно наступить на грабли в совсем простом, казалось бы, запросе?

Читать далее

Как мы создавали сервис для улучшения города в Ташкенте (Узбекистан)

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

Этот материал посвящен сервису Xalq Nazorati (Народный Контроль) — с ним люди могут пожаловаться на нерабочий лифт, яму на дороге, сломанный светофор или стертую дорожную разметку. В статье расскажем, с чего мы начинали проект, какие ошибки допускали, как их исправляли и где в итоге оказались.

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

Чтобы лучше обозначать раскрытие темы, используем индикатор из хорошо знакомой многим игры. Так интереснее.

Резюме

Сегодня в сервис Народный Контроль уже поступило более 28 тыс. обращений от горожан — чаще всего люди жалуются на проблемы на дорогах, ЖКХ и экологические проблемы.

88% всех обращений были в итоге решены.

Читать далее

PostgreSQL под капотом. Часть 0. Старт программы

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

Postgres - один из крупнейших open source проектов. Он создавался многие года. Кодовая база накопилась огромная. Мне, как программисту, всегда было интересно как он работает под капотом. Но не про SQL пойдет речь, а про язык на котором он написан. Про C. 

С общей архитектурой можно ознакомиться здесь

Для начала поймем, что происходит до входа в главный цикл сервера.

Читать далее

Postgresso 10 (47)

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


Postgres и PostgreSQL


PostgreSQL 15.1

И, конечно, PostgreSQL 14.6, 13.9, 12.13, 11.18 и 10.23 (у десятки это последний релиз). В этих версиях исправления багов. Здесь мы их описывать не будем. Ещё обновились названия временных поясов на актуальные. О релизе можно прочитать здесь.

Postgres Pro Standard 15.0.1 — они возвращаются

Об этом релизе расскажем подробнее — там важные изменения. И важнейшее из отличий — SQL/JSON: в версию Pro вошли патчи, которые откатили в PostgreSQL 15. А их очень много, и есть существенные. В прошлом Postgresso мы печалились:
Читать дальше →

PostgreSQL. Тестируй то, тестируй это, тестируй не боясь

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

Как:

1. тестировать на продуктивных данных и не бояться

2. получить 100 копий продуктивной БД и не создавать 100 серверов

3. узнать какой будет план запроса на продуктиве

4. дать каждому разработчику свою БД с данными и не разориться на оплате дисков

Если вам это нужно и у вас PostgreSQL, то эта статья для вас.

Читать далее

Как Postgres хранит строки

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

Мне стало интересно разобраться, как PostgreSQL хранит данные на диске, и в процессе своего исследования я обнаружил несколько интересных фактов, которыми хочу с вами поделиться.

Мы будем рассматривать только файлы кучи (heap). Heap-файл — это просто файл записей. Не путайте heap-файл с heap-памятью. Хотя их использование очень похоже: хранение динамических данных.

Читать далее

NULL-значения в PostgreSQL: правила и исключения

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

Навскидку многим кажется, что они знакомы с поведением NULL-значений в PostgreSQL, однако иногда неопределённые значения преподносят сюрпризы. Предлагаем вашему вниманию расшифровку доклада Алексея Борщева с PGConf.Russia 2022 — он был полностью посвящён особенностям NULL-значений в Postgres.

NULL простыми словами

Что такое SQL база данных? Согласно одному из определений, это просто набор взаимосвязанных таблиц. А что такое NULL? Обратимся к простому бытовому примеру: все мы задаём друг другу дежурный вопрос: «Как дела?». Часто мы получаем в ответ: «Да ничего...» Вот это «ничего» нам и нужно положить в базу данных — NULL, неопределённое, некорректное или неизвестное значение.

Читать далее

B-Tree индекс и его производные в PostgreSQL

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

Меня зовут Азат Якупов, я люблю данные и люблю использовать их в разных задачах. Сегодня хочу поделиться своим опытом относительно B-Tree индексов в PostgreSQL. Рассмотрим их топологию, синтаксис, функциональные B-Tree индексы, условные B-Tree индексы и включенные B-Tree индексы.

Читать далее

PostgreSQL, что в логе твоем?

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

Наверняка, многие из вас пользуются explain.tensor.ru - нашим сервисом визуализации PostgreSQL-планов или уже даже развернули его на своей площадке. Но визуализация конкретного плана - это лишь небольшая помощь разработчику, поэтому в "Тензоре" мы создали сервис, который позволяет увидеть сразу многие аспекты работы сервера: медленные или гигантские запросы, возникающие блокировки и ошибки, частоту и результаты проходов [auto]VACUUM/ANALYZE.

И сегодня мы, наконец, готовы представить вам демо-режим этого сервиса, куда вы самостоятельно можете загрузить лог своего PostgreSQL-сервера и наглядно увидеть, чем он у вас занимается.

Читать далее

PostgreSQL: пример использования диапазонного типа данных при расчете коэффициента возраст-стаж в ОСАГО

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

В этой статье рассматриваются преимущества такого редко используемого и, на мой взгляд, незаслуженно обойденного вниманием типа данных, как диапазон. Мы сначала спроектируем структуру базы для хранения коэффициента возраст-стаж при расчете стоимости полиса ОСАГО в рамках привычной многим MySQL. Затем перепроектируем под PostgreSQL и посмотрим, как выглядят sql запросы в обоих случаях. И в финале сравним, какие преимущества дает нам использование диапазонов.

Заметка адресована как пользователям MySQL, так и пользователям PostgreSQL, которые не работали с таким типом данных в своей практике. Если в вашей предметной области есть работа с диапазонами величин, то этот пост точно для вас.

Читать далее

Топ полезных SQL-запросов для PostgreSQL

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

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

Читать далее

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

Postgres WASM от Snaplet и Supabase

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


Сегодня мы с нашими друзьями из Snaplet открываем исходники postgres-wasm — запускаемый в браузере сервер PostgreSQL с полным набором функционала, включая сохранение состояния в браузере, восстановление из pg_dump и логическую репликацию из удалённой базы данных.


Впервые Postgres в браузере запустили в Crunchy Data, их потрясающая версия выложена на HN месяц назад. Вместе со Snaplet мы решили сделать версию с открытым кодом. Посмотрим, как она разрабатывается и какой функционал мы добавили. Подробности — к старту нашего флагманского курса по Data Science.


Что такое Snaplet?

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

Postgresso 8-9 (45-46)

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

По некоторым причинам этот номер сдвоенный, дальше Postgresso продолжит выходить в обычном, ежемесячном режиме.



Релизы Postgres


PostgreSQL 15 — Beta 3-4, RC 1-2 и, теперь GA


Свершилось! Главное событие — конечно, это выход уже официальной, общедоступной (general availability) 15-й версии:

PostgreSQL 15 Released!

Среди главных новшеств называют:
  • поддержка SQL-команды MERGE;
  • избирательная публикация содержания таблиц благодаря возможности определить список столбцов и условия в фильтрах;
  • больше опций при сжатии, в том числе сжатие Zstandard (zstd); в том числе поддержка сжатия на стороне сервера в процессе pg_basebackup;
  • поддержка структурированного вывода логов в JSON-формате;
  • увеличение производительности, особенно при сортировке в памяти и на диске
Об этом много написано, сейчас мы на этом останавливаться не будем (но можно глянуть, например, краткий комментарий PostgreSQL 15 – New Features to Be Excited About от Умара Шахида, Umair Shahid, Percona) и пару ссылок ниже по поводу схемы public.

Можно, однако, сказать, что на самом деле главное событие произошло не сейчас, а ещё в фазе PostgreSQL 15 Beta 4. Тогда откатили большую серию патчей, связанных с SQL/JSON.

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

Тестирование скорости работы 1C в режиме файловой версии, MS SQL и POSTGRES на HDD, SSD и RAMDisk

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

Мне всегда было интересно (и не только мне) есть ли смысл запуска 1С в диске из оперативной памяти, потому что если посмотреть на графики скорости чтения различных типов накопителей, то преимущества  очевидны:

Читать далее

Стадо русских слонов

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

Тема импортозамещения всё более и более актуальна и уже даже можно сравнивать некоторые продукты между собой. Сегодня хотелось бы собрать в один строй и взглянуть на имеющиеся решения по СУБД семейства PostgreSQL. Кому интересно узнать про "русские" PostgreSQL - добро пожаловать под кат.

Читать далее..

Как запускать SQL в Go с максимальным комфортом

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

Писать SQL руками или использовать ORM — тема очень спорная, и я опишу, как использовать первый подход максимально эффективно. А какой из подходов выбрать, думаю, каждый сам для себя уже решил.

Читать далее

Частые вопросы по миграции базы данных 1С с MS SQL на PostgreSQL

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

Миграция базы данных 1С с MS SQL на PostgreSQL – по-прежнему насущная тема, особенно в контексте импортозамещения. На наших вебинарах и в беседах с клиентами мы получаем много вопросов по нюансам миграции. Решили собрать основные рекомендации в одну статью.

Поехали!

Переезжаем с Oracle и Microsoft SQL Server на Platform V Pangolin: опыт Сбера

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

Привет, Хабр! На связи Михаил Семенов, лидер дивизиона баз данных в СберТехе, Артем Лаптев, руководитель эксплуатации продукта Platform V Pangolin в SberInfra, и Вячеслав Гавришин, руководитель команды развития Platform V Pangolin в SberInfra. 

В этом посте мы поделимся историей импортозамещения систем управления базами данных в Сбере и опытом миграции с MSSQL и Oracle на собственную СУБД Platform V Pangolin. Расскажем, как разрабатываем и кастомизируем отечественную СУБД уровня enterprise и какие решения помогли нам упростить процесс миграции и использовать продукт в микросервисной архитектуре банка.

Читать далее

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