title

text

Павел Борисов
Павел Борисов Postgres Professional программист
16:00 03 марта
45 мин

Ускорение быстрого текстового поиска с помощью индекса RUM

Быстрый текстовый поиск в PostgreSQL существенно ускоряется, если использовать обратные составные индексы по лексемам внутри типа tsvector. Индекс RUM - это свободное расширение, основанное на индексе GIN. Оно индексирует не только лексемы, но и их положение в текстовом поле, а также включает дополнительную информацию - вес лексемы, это позволяет полнее поддерживать возможности tsvector.

До недавних пор запросы с весами лексем в индексе RUM требовали перепроверки по таблице. Моя модификация (2020) в разы ускоряет такие запросы, делая их index-only.

В докладе будут представлены различные сценарии использования быстрого текстового поиска и применение индекса RUM для его существенного ускорения, а также бенчмарки по сравнению с встроенным в PostgreSQL индексом GIN.

Видео

Другие доклады

  • Дорофей Пролесковский
    Дорофей Пролесковский Juno GIS Engineer
    22 мин

    Что нового в PostGIS 3.1

    PostGIS - расширение для работы с пространственными данными в PostgreSQL. В этом докладе будут рассмотрены все последние изменения в экосистеме вокруг PostGIS с комментариями от разработчика.

  • Amit Kapila
    Amit Kapila Fujitsu Senior Director
    45 мин

    Как будет развиваться логическая репликация?

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

    Одним из недостатков логической репликации по сравнению с физической является невозможность репликации транзакции до момента коммита. Для транзакций, которые выполняются продолжительное время, это может привести к серьёзной задержке на стороне реплики. Мы обсудим, какое решение этой проблемы реализовано в PostgreSQL.

    Мы также остановимся на других крупных разработках в области логической репликации, которые позволят осуществлять потоковую передачу транзакций в заранее заданное время. Это позволит реализовать логическую репликацию без конфликтов. Это также можно будет использовать для масштабирования чтения. Благодаря протоколу 2PC мы сможем убедиться, что реплики получили все данные, закоммиченные на мастере. Теперь мы можем спроектировать систему, где определённые узлы являются владельцами некоторого набора таблиц. Так мы всегда сможем получить данные этих таблиц с этих узлов, а также установить некий внешний процесс для учитывающей это маршрутизации для операций чтения.

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

  • Daniele Varrazzo
    Daniele Varrazzo Codice Lieve Директор
    45 мин

    psycopg3: как Питон полюбил Постгрес

    На сегодняшний день Python является одним из наиболее часто используемых языков программирования в мире. Он прост в изучении и использовании и легко совместим с любыми известными сервисами и протоколами. psycopg2 - наиболее часто используемый драйвер PostgreSQL для Python: он обеспечивает хорошую производительность и делает взаимодействие между ЯП и СУБД максимально удобным.

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

    psycopg3 - это новое поколение наиболее часто используемой библиотеки-адаптера Python-PostgreSQL: она предлагает знакомый интерфейс и удобный процесс обновления, кроме того, она спроектирована для получения максимальной производительности от базы данных и ЯП: она поддерживает асинхронное программирование, связываемые переменные (prepared statements), двоичные параметры.

    psycopg3 также экспериментирует с инновационной поддержкой JSONB и конвейерной обработкой запросов! Приходите и узнайте, что нового происходит на стыке вашего любимого языка программирования и базы данных!

  • Арсений Шер
    Арсений Шер Postgres Professional Разработчик
    45 мин

    Консенсус, Postgres, Мультимастер

    Postgres Pro Multimaster - это расширение Postgres (и набор патчей для ядра), обеспечивающее высокую доступность (HA) со строгой согласованностью и масштабируемостью чтения. Он образует симметричный кластер без общего доступа, синхронно реплицирующий данные и автоматически выполняющий аварийное восстановление. В течение последнего года мы приложили значительные усилия, чтобы убедиться и доказать, что согласованность сохраняется во всех сценариях. Новая версия, которая будет выпущена как часть Postgres Pro Enterprise 13, использует алгоритм Paxos для определения результата транзакции и оригинальный протокол, управляющий процессом восстановления; мы использовали TLA+ и TLC model checker для проверки его правильности. Я расскажу, как все это работает и почему в некоторых случаях multimaster может быть привлекательной альтернативой традиционным HA решениям на основе потоковой репликации.

    Multimaster теперь имеет открытый исходный код и доступен по адресу: https://github.com/postgrespro/mmts

    Чтобы сделать доклад менее узкоспециализированным и более привлекательным для широкой аудитории, в первой части я расскажу о том, как в целом современные СУБД (в основном так называемые NewSQL СУБД) обеспечивают отказоустойчивость. В частности, я остановлюсь на следующих моментах:

    что такое строго согласованная СУБД и какие накладные расходы с этим связаны; что такое распределённый консенсус, Paxos, Raft; как они здесь помогают?

    Я не буду пытаться объяснять какие-либо алгоритмы построчно; это едва ли осмысленно с учетом ограничений по времени, и на эту тему есть много полезной литературы. Цель здесь скорее в том чтобы познакомить с областью и задать в ней ориентиры.