Ускорение быстрого текстового поиска с помощью индекса RUM
Быстрый текстовый поиск в PostgreSQL существенно ускоряется, если использовать обратные составные индексы по лексемам внутри типа tsvector. Индекс RUM - это свободное расширение, основанное на индексе GIN. Оно индексирует не только лексемы, но и их положение в текстовом поле, а также включает дополнительную информацию - вес лексемы, это позволяет полнее поддерживать возможности tsvector.
До недавних пор запросы с весами лексем в индексе RUM требовали перепроверки по таблице. Моя модификация (2020) в разы ускоряет такие запросы, делая их index-only.
В докладе будут представлены различные сценарии использования быстрого текстового поиска и применение индекса RUM для его существенного ускорения, а также бенчмарки по сравнению с встроенным в PostgreSQL индексом GIN.
Видео
Другие доклады
-
Николай Самохвалов Nombox LLC Основатель
Бесшовная оптимизация запросов PostgreSQL, версия 2.0
Существует два способа анализировать SQL-запросы:
На макроуровне: в этом случае мы анализируем рабочую нагрузку как единое целое (есть три основных подхода: использование метрик из pg_stat_statements или аналогичного модуля, анализ логов с помощью pgBadger или другого похожего решения и запрос выборки в представлении pg_stat_activity).
На микроуровне: в этом случае мы погружаемся в детали исполнения одного конкретного запроса (тут главную роль играет команда EXPLAIN).
Между этими двумя подходами есть немало "белых пятен", которые обнаруживаются с ростом нагрузки. Главные проблемы:
- Нужно переключаться между макро- и микроуровнем без больших накладных расходов.
- Требуется надёжная проверка гипотез относительно возможных оптимизаций.
- Есть необходимость минимизации рисков при развёртывании новой функциональности.
Чтобы справляться с этими задачами в растущем проекте, требуется продвинутый опыт в качестве администратора баз данных, и – иногда – интуиция. Также могут помочь новые инструменты, которые (к счастью для нас!) не так давно начали появляться.
В рамках данного мастер-класса мы разберёмся, как можно настроить процесс беспроблемной и бесшовной оптимизации SQL-запросов в вашей организации: а) какие инструменты следует выбрать в вашем конкретном случае? б) как эффективно заполнить вышеупомянутые пробелы в сфере анализа запросов?
-
Андрей Фефелов Mastery.pro Технический директор
Как обфусцировать базу в Postgres для задач нагрузочного тестирования веб-приложений
Postgres - отличная база данных для высоконагруженных веб-приложений. В свою очередь для таких веб-приложений периодически встает задача нагрузочного/стресс тестирования. Кроме очевидных сложностей: эмуляции рабочего окружения близкого к продуктовому и генерации трафика есть задача подготовки базы данных для тестового окружения. В эпоху борьбы за приватность персональных данных (152-ФЗ, GDPR, HIPAA) использование базы с прода выглядит плохой идеей. Выход один - обфусцировать данные.
Существуют различные инструменты для обфускации данных в Postgres. В докладе я расскажу, какие из них мы выбрали и почему, с какими трудностями столкнулись во время использования, насколько удачно решили задачу.
Вы узнаете возможно ли получить идентичный отклик на тестовой базе без реальных данных с прода, посмотрим графики, обсудим ограничения, которые возникают при обфускации, я познакомлю вас с нашими наработками, упрощающими задачу.
-
Daniele Varrazzo Codice Lieve Директор
Python для PostgreSQL: как его использовать и преуспеть в этом?
В рамках данного мастер-класса мы посмотрим, как обеспечить бесперебойную связь между Python и PostgreSQL. На практических примерах мы разберём, как подключиться к серверу, обеспечить обмен данными, управлять уведомлениями и транзакциями, передавая параметры безопасно и в понятной форме.
Мы рассмотрим psycopg2, наиболее часто используемую библиотеку-адаптер PostgreSQL для Python, а также анонсируем предстоящий релиз psycopg3: что останется прежним, что изменится, как лучше реализовать программу на Python, чтобы использовать PostgreSQL по максимуму.
-
Dimitri Fontaine
Архитектуры с Postgres в продакшне
При использовании PostgreSQL в продакшне крайне важно реализовать стратегию высокой доступности. В случае с сервисом БД требования к высокой доступности будут касаться как самого сервиса, так и набора данных.
В рамках данного доклада мы попробуем определить потребности вашей конкретной продакшн-среды в высокой доступности и постараемся выполнить необходимые требования с использованием открытых бесплатных инструментов, разработанных для PostgreSQL. В частности, мы рассмотрим многие возможности, которые можно реализовать для Postgres, чтобы превратить его из обычного набора инструментов в реально работающий. Что это означает в контексте высокой доступности? Как выполнить эти требования?