Обновить
132.95

PostgreSQL *

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

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

Индексирование полнотекстовых данных в PostgreSQL с использованием модуля pg_trgm

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

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

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

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

Итак, что такое pg_trgm? Этот модуль PostgreSQL предоставляет набор функций и операторов, которые позволяют работать с трехграммами (триграммами) - это последовательности из трех символов. Для понимания, давайте взглянем на пример...

Читать далее

Где 15 минут пешком от дома до метро в Москве и как различать панельные дома…

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

Продолжаем изучать географию столицы и как она влияет на комфорт жилья. В этой публикации подключим маршрутизацию и расчитаем пешеходные расстояния от входа в метрополитен до жилых зданий. В прошлый раз я анализировал жилье в городе на удаленность от негативных факторов и поделился инструкцией "Где в Москве жить «неплохо»". Теперь же перейдем на позитивные факторы выбора места квартиры и найдем в Москве жилые дома в шаговой доступности от метро.

Читать далее

PostgreSQL 17: Часть 2 или Коммитфест 2023-09

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


Продолжаем следить за новинками 17-й версии PostgreSQL. На этот раз поговорим о том, чем запомнился сентябрьский коммитфест.


Самое интересное об июльском коммитфесте ― в предыдущей статье серии: 2023-07.

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

Отправка и обработка HTTP запросов в PostgreSQL

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

Эта статья о том как отправлять и обрабатывать HTTP-запросы непосредственно из/в PostgreSQL. Автор расскажет о том, что такое асинхронное уведомление в PostgreSQL, и наглядно продемонстрирует, как с его помощью можно взаимодействовать с внешними системами из самой СУБД.

Читать далее

Темпоральные типы в PostgreSQL и их использование

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

Меня зовут Фролков Иван, я работаю программистом с 1993 года, и уже восемь лет — в Postgres Professional. Периодически выступаю на конференциях. В этой статье я расскажу вам про темпоральные типы данных в PostgreSQL — доклад о них я читал на PGConf.Russia 2022. Почему меня это заинтересовало? Мне много раз приходилось сталкиваться с тем, что из-за разницы часовых поясов не сходились отчёты за месяц или даже за сутки. Подобные проблемы возникают из-за неаккуратной обработки даты и времени, которой можно избежать.

В чём проблема?

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

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

Заря приходит с востока

С чем же связаны такие проблемы? С тем, что Земля круглая, и время наступает везде по-разному. Казалось бы, это тривиальное знание, но в реальности его мало кто учитывает. На востоке часовые пояса с плюсом, а на западе — с минусом. Где-то посередине располагается Гринвич, нулевой меридиан (кстати, в Лондоне есть летнее время, и оно не совпадает с гринвичским!). Есть ещё места вроде Непала и Бутана, где время сдвигается не на полные часы, а на 45 или 15 минут, и это может создать вам проблемы.

Читать далее

Jsonb и gin, ошибки планировщика на старых PostgreSQL

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

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

Читать далее

Postgresso №9(58)

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

Microsoft

PostgreSQL 16

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

На сайте выделяют такие главные преимущества релиза, вот некоторые:

улучшение производительности: оптимизатор научился распараллеливать FULL и RIGHT JOIN, ускорились оконные функции, появилась балансировка нагрузки.

расширение возможностей логической репликации: репликация с реплики, распараллеливание, новая роль pg_create_subscription,

для разработчиков: новые (вернувшиеся "старые") возможности работы с SQL/JSON, улучшения в правилах сортировки, команда \bind в psql для подготовленных запросов, улучшения в правилах сортировки,

мониторингpg_stat_io, новое поле в pg_stat_all_tables,

доступ и безопасность: появилась возможность задавать дополнительные файлы в include.

Как вы, может быть, заметили, ссылки ведут на РУССКУЮ ДОКУМЕНТАЦИЮ к PostgreSQL, которая только что появилась на сайте Postgres Professional.

Читать далее

PostgreSQL и временные таблицы

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

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

Одним из свидетельств наличия проблемы является то, что для временных таблиц в Postgres Pro была добавлена специальная функция fasttrun, а в Postgres Pro Enterprise существенно доработана работа с ними (см. пункт 4). 

Наиболее активно временные таблицы используют платформы, в которых разработчик не работает напрямую с базой данных, а таблицы и запросы генерируются непосредственно самой платформой. В частности, к ним относится платформа или ее открытый и бесплатный аналог - платформа lsFusion.

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

Читать далее

Где в Москве жить «неплохо»

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

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

Честно скажу, что определить какие хорошие непросто. Ведь у каждого свое понятие о том что такое хорошо и нужен доступ к данным, которого у нас нет. Поэтому давайте посмотрим где жить "неплохо". Не жить рядом с тем, что влияет на качество воздуха, уровень шума, ежедневное memento mori, близость к промышленности, безопасность. Найдем группы домов в Москве в пределах МКАД, отдаленные на 150м от перечисленных факторов. Если живете в Москве, то удивитесь - вашего дома скорее всего не будет на этой карте

Читать далее

Где бы вы точно не жили и не остановились даже на время, если бы знали и выбирали на основе фактов

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

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

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

Что общего во всех этих факторах, кроме того что я сгустил краски StableDiffusion? В описаном примере для многих людей есть не только экологическая, но психологически дискомфортная составляющая. В студенчестве, в части диплома, связанной с экологией, были расчеты уровня шума в жилых помещениях от трассы/индустриальных объектов. Главный параметр был - расстояние по прямой от жилья.

Читать далее

SQL HowTo: ближайший общий предок в дереве (LCA)

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

В иерархических структурах регулярно возникает потребность определить ближайшего общего предка в дереве, он же наименьший общий предок (Lowest (Least) Common Ancestor).

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

Читать далее

JSONB и hstore: использование специальных типов данных PostgreSQL для работы с полуструктурированными данными

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

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

Полуструктурированные данные — это неотъемлемая часть современных приложений, работающих с разнообразной информацией. Они позволяют представить данные в формате, близком к человеческому восприятию, в то время как классические реляционные базы данных предоставляют ограниченные возможности для хранения и извлечения такого типа информации. Примерами могут быть структуры JSON, XML и другие форматы, которые могут содержать вложенные поля, дополнительные атрибуты и даже массивы данных.

Читать далее

Генерируем простой web интерфейс для просмотра таблиц PostgreSQL

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

В публикациях на хабре, чаще всего самое интересное в комментариях. Вот и в моем прошлом посте "Сгенерировать web интерфейс из БД или объектной модели не стало проще даже 10 лет спустя" я собрал джекпот из SharePoint, Vaadin и нескольких библиотек либо устаревших, либо поддерживаемых "одним автором".

Что я пытался объяснить читателям, что на этапе проверки идей не нужна дополнительная сложность в виде серверной инфраструктуры только ради этой самой инфраструктуры и нового языка программирования/платформы. Именно поэтому мне не нужны сейчас Yii, Symfony и Laravel, не подойдет ADF. На любое обучение тратится драгоценное время и поэтому надо понимать зачем тратить время на что-то, что потом возможно навсегда придется забыть через неделю-другую игры с прототипом.

В своих эксперементах с помощью лапшекода на JavaScript я быстро разработал вполне функциональный интерфейс. А начиналось все с Java 21, хотя в итоге обошелся без нее!

Читать далее

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

PostgreSQL 17: Часть 1 или Коммитфест 2023-07

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


Продолжаем следить за новостями из мира PostgreSQL. Выпуск PostgreSQL 16 Release Candidate 1 планируется на 31 августа и, если всё будет в порядке, то 16-я версия выйдет 14 сентября.


Что изменилось в 16-й версии после апрельской заморозки кода? Что попало в 17 версию по результатам первого коммитфеста? Обо всем об этом в свежем обзоре.

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

Оценка производительности полнотекстового поиска в PostgreSQL на примерах приближенных к реальным

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

Добрый день! Меня зовут Александр и я С# разработчик в компании Bimeister!

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

А если поподробнее

Сгенерировать web интерфейс из БД или объектной модели не стало проще даже 10 лет спустя

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

Помню, как более 10 лет назад, я бился с тем, как быстро создать интерфейс для ввода данных в базу данных и отбражения их через браузер. На то время, еще был популярен Google Web Toolkit и было несколько открытых библиотек виджетов к нему, по функционалу догоняющие и иногда превосходящие десктопные.

Однако, реальность оказалась несколько иной. На бэкэнде, базах данных и в big data ситуация гораздо лучше с возможностями бесплатных и открытых проектов, когда не надо покупать лицензии или платить за дополнительные компоненты, можно без СМС и платных подписок запустить хоть Ingenuity на Марс.

Читать далее

Наполняем до краев: влияние порядка столбцов в таблицах на размеры баз данных PostgresQL

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

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

И что же там прячется?

TimescaleDB против всех: как база данных справляется с рядом сложных задач

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

В фильме «Отряд самоубийц: Миссия навылет», когда персонажи Идриса Эльбы (Бладспот) и Джона Сины (Миротворец) знакомятся при участии Аманды Уоллер, звучит следующая фраза:

– Ты сказала, что у всех в отряде уникальные навыки, а он — это тот же я.


Источник

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

В этом материале мы рассмотрим особенности работы TimescaleDB, а также покажем, как ее использует клиент Selectel — сервис DwarfByte.
Читать дальше →

CFS — сжатие на уровне страниц СУБД в Postgres Pro

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

Сжатие данных на уровне блоков: механизм компрессии CFS и его особенности

Привет, Хабр! Меня зовут Антон Дорошкевич, я сертифицированный эксперт по PostgreSQL и архитектор многокластерных систем 1С. Это мой первый гостевой пост в блоге компании Postgres Professional. Многие мои выступления на PGConf.Russia были тепло приняты аудиторией  в частности, в этом году доклад о тонкостях эксплуатации 1С и PostgreSQL вошёл в тройку лучших презентаций конференции. Сегодня мне хотелось бы рассказать о том, как сжатие данных на уровне блоков (страниц) влияет на работу баз 1С.

Механизмы сжатия на уровне блоков разработаны и успешно используются в таких СУБД, как MS SQL Server, Oracle, MySQL. В PostgreSQL сжатие на уровне страниц почему-то не было реализовано; лишь сравнительно недавно оно появилось в Postgres Pro Enterprise. Этот механизм называется CFS (Compressed File System, но файловой системой он не является, поэтому далее будет использоваться сокращение CFS).

Читать далее

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

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

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

Читать далее

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