title

text

Kohei KaiGai
Kohei KaiGai HeteroDB Главный архитектор и генеральный директор
10:00 03 марта
45 мин

GPU-версия PostGIS и индекса GiST

В рамках данного доклада мы представим GPU-версию PostGIS и индекса GiST, которую мы разработали в качестве новой функциональности PG-Strom.

Сегодня наши устройства (например, мобильные телефоны) динамически генерируют геолокационные данные. Это часто используют для маркетинга на основе местоположения устройства, доставки push-уведомлений, оповещения о чрезвычайных ситуациях, и так далее. Люди часто используют технологию GIS для получения данных о пользователях, находящихся в данный момент в данном месте. Даже если определения географических областей представляют собой сложные многоугольники, функции PostGIS могут генерировать правильные пересечения, однако это часто требует интенсивных вычислительных нагрузок. Графический процессор (GPU) был разработан для массовых параллельных вычислений с тысячами ядер на чип и более. Мы разработали расширение PG-Strom для частичного выполнения SQL-запросов на устройствах GPU. В новом релизе PG-Strom v3.0 будет добавлена поддержка для нескольких функций PostGIS и GiST-индексов для выполнения ресурсоёмких вычислений с обработкой геолокационных данных.

В рамках этого доклада мы расскажем о создании этой технологии, её использовании, реализации и представим результаты сравнительного тестирования для GPU-версии PostGIS и GiST-индекса.

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

  • Yugo Nagata
    Yugo Nagata SRA OSS, Inc. Japan Chief Scientist
    45 мин

    Автоматическое инкрементальное обновление материализованных представлений

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

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

    Поэтому мы разработали IVM для PostgreSQL и предлагаем реализовать его в качестве основной функции. Патч сейчас обсуждается в списке рассылки hackers. Наша реализация делает возможным автоматическое инкрементальное обновление материализованных представлений при изменении базовой таблицы. Вам не нужно писать собственную триггерную процедуру для обновления представлений. После продолжительной работы нашей команды текущая реализация IVM поддерживает некоторые возможности аггрегации, подзапросы, соединение одной таблицы (self-join), внешние соединения (outer join) и CTE (предложения WITH) в запросе определения представления. Результат оценки производительности с использованием запросов TPC-H показывает, что наша реализация IVM может обновлять материализованное представление в 200+ раз быстрее, чем повторное вычисление с помощью команды REFRESH.

    В данном докладе мы опишем нашу реализацию IVM и ее возможности.

  • Дмитрий Урсегов
    Дмитрий Урсегов Postgres Professional Руководитель группы разработки
    45 мин

    Шардман - естественный подход к шардингу в PostgreSQL

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

  • Robert Bernier
    Robert Bernier Percona Старший консультант по PostgreSQL
    45 мин

    Продвинутые техники pg_upgrade

    На сегодняшний день утилита командной строки pg_upgrade является наиболее популярным инструментом для обновления между мажорными версиями Postgres. Однако помимо достоинств, у неё есть и известные проблемы. Одна из наиболее критичных: что делать, если произошёл сбой? Цель данного доклада - раскрыть те маленькие секреты, благодаря которым любой из слушателей сможет существенно улучшить процесс выполнения обновлений.

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

    Список подтем доклада приведён ниже:

    • Как работает pg_upgrade? Общая картина
    • О pg_upgrade (вызов из командной строки)

      • аргументы и опции

    • Пошаговое выполнение обновления
    • О репликации на основе РОЛИ

      • с атрибутом REPLICATION
      • с атрибутом LOGIN

    • Опции для обновления: копирование или жёсткие ссылки?
    • Что делать после обновления?

      • о производительности
      • об анализе
      • о команде REPACK
      • о переиндексации

    • Когда что-то идёт не так, и точка невозврата уже пройдена (пройдена ли?)
    • Обновляем РЕПЛИКУ
      • Метод по умолчанию: pg_basebackup
      • Продвинутый метод:
        • - используем rsync
        • предупреждение: закольцовка vacuum
  • Арсений Шер
    Арсений Шер 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; как они здесь помогают?

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