title

text

Yugo Nagata
Yugo Nagata SRA OSS, Inc. Japan Chief Scientist
12:05 01 марта
45 мин

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

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

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

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

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

Видео

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

  • Daniel Westermann
    Daniel Westermann dbi services Principal Consultant
    45 мин

    Как переносить данные из Oracle в PostgreSQL и обратно

    Использование PostgreSQL стало обычным делом во множестве организаций. В большинстве случаев PostgreSQL устанавливают в дополнение к уже имеющимся СУБД Oracle, и довольно скоро возникает закономерный вопрос: как перебрасывать данные из Oracle в PostgreSQL и наоборот? Давайте перенесёмся в прошлое, в март 2001, когда вышло новое расширение SQL стандарта, определившее общие принципы создания API для управления внешними данными: SQL/MED (ISO/IEC 9075-9:2008). Сообщество PostgreSQL довольно быстро создало фреймворк для использования рекомендаций стандарта в виде так называемых обёрток сторонних данных (foreign data wrappers). Это случилось в 2011 с выходом PostgreSQL 9.1. С тех пор число обёрток сторонних данных постоянно растёт. Сегодня благодаря им PostgreSQL может интегрировать данные почти из любого внешнего источника, будь то обычные файлы, другие реляционные СУБД или даже неструктурированные данные. В рамках этого доклада мы рассмотрим обёртку сторонних данных для Oracle и то, как её можно использовать для получения данных из Oracle в PostgreSQL. Однако обратное тоже верно: данные из PostgreSQL также можно отправить в Oracle, и это может быть важно для соблюдения требований. Обещаю, что в докладе будет две части: слайды и много демонстраций.

  • Ibrar Ahmed
    Ibrar Ahmed Percona LLC Senior Database Architect
    45 мин

    Всё о безопасности PostgreSQL

    В PostgreSQL реализованы различные уровни безопасности. Данный доклад посвящен всем доступным техникам обеспечения безопасности, используемым в PostgreSQL 13. Мы разберём, как обеспечить безопасность на стороне клиента (LibPq, JDBC) и на стороне сервера. В нем будут затронуты все поддерживаемые методы аутентификации, а также плюсы и минусы всех этих методов. Ниже приведены некоторые подтемы данного доклада:

    • Введение в криптографию.
    • SSL, TLS, GSSAPI и OpenSSL.
    • Шифрование на стороне клиента.
    • Обеспечение безопасной аутентификации.
    • Защита данных на диске.
    • Безопасность резервного копирования и базового резервного копирования.
    • Обеспечение безопасности репликации.
    • Роли и привилегии внутри базы данных.

    Важно знать обо всех уровнях обеспечения безопасности, включая (1) безопасность на уровне сети (2) на уровне диска (3) на уровне строки, (4), на уровне столбца. В этом докладе мы поговорим обо всех вышеперечисленных аспектах обеспечения безопасности, а также обсудим конкретные кейсы и приведём несколько примеров из реальной практики.

  • Артём Картасов
    Артём Картасов Postgres.ai Software Engineer
    45 мин

    Над пропастью WAL-G

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

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

    Приглашаю вас в увлекательное путешествие длиной 2 года.

  • Николай Самохвалов
    Николай Самохвалов Nombox LLC Основатель
    45 мин

    Автоматическое тестирование изменений БД (DDL, DML)

    В высоконагруженном проекте любое изменение несёт в себе заметные риски сбоя или деградации производительности. Мы видим, как растёт сложность систем, количество серверов БД, релизов в неделю, автоматизация всего и вся в CI/CD pipelines, контейнерах, Kubernetes.

    Но вот когда речь заходит о тестировании изменений в БД — от банального добавления индекса до сложных, почти «хирургических» операций вроде замены в первичного ключа int4 на int8 в многотерабайтной таблице под нагрузкой — тут налицо отставание технологий и методологий. В лучшем случае изменения проверяются визуально, и тут уж всё зависит от опыта и усталости проверяющего.

    В докладе мы расскажем как мы (Postgres.ai) закрываем этот вопрос с помощью нашего решения Database Lab:

    • моментальная выдача независимых тонких клонов для многотерабайтных БД, готовых к проверкам,
    • интеграция в существующие CI/CD-инструменты и рабочий процесс,
    • сбор метрик, наиболее важных для принятия решения об одобрении/отклонении изменения (и даже автоматическое отклонения совсем опасных действий).