Описание
Предварительные требования:
Знания основ операционной системы Linux, желательно знание базовой архитектуры сервера Oracle, основ языков программирования - Oracle PL/SQL, языка запросов SQL, Python, Java.
Целевая аудитория

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

Программа
  • 1. Postgresql и Oracle – интегрированные базы данных.

    • Логическая и физическая компоновка баз данных. Процессы управления.

    • Архитектура табличных пространств.

    • Оптимальное использование памяти сервером.

    • Основные конфигурационные файлы Postgresql, настройка логирования.

    • Общая и рабочая области памяти, серверные процессы.

    • Калькулятор настройки производительности сервера Postgresql.

  • 2. Утилиты разработчика и администратора для взаимодействия с базой данных Postgresql (psql, pgcli, dbevar, pgadmin).

    • Сравнение с популярными в прошлом утилитами: sqlplus, SQLDeveloper, PLSQL Developer, Oracle EnterpriseManager.

  • 3. Типы данных Postgresql (обзор).

    • Рациональное использование табличных пространств для размещения больших объектов.

    • Слои хранения данных в табличных пространствах. TOAST файлы.

    • Использование объектных и агрегатных типов для хранения данных.

    • Порядок доступа к объектам базы данных, их размер, страничное хранение.

    • Стандартные схемы и каталоги - введение в архитектуру словаря метаданных Postgresql - отличие от словаря Oracle. Два каталога словаря метаданных Postgresql.

    • Разница между ролями Postgresql и пользователями, и ролями Oracle.

  • 4. Расширения базы данных Postgresql для организации наблюдения за распределением памяти и процессом подготовки SQL запросов.

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

  • 5. SELECT. Использование подзапросов во фразе From. Подзапросы.

    • Коррелированные подзапросы.

    • Древовидные структуры.

    • Конструкции во фразе SELECT. (rollup, cube, case…).

    • Аналитические функции в запросах.

    • Вложенные таблицы в виде агрегатных типов данных.

    • Работа со структурами записей, создание сложных типов данных - в сравнении Oracle и Postgresql.

    • Массивы и особенности их хранения в TOAST файлах. Особенности хранения больших данных в Postgresql.

  • 6. Язык манипулирования данными DML.

    • Команды копирования данных - вместо INSERT.

    • Загрузка и выгрузка данных - по аналогии с утилитами импорта и экспорта в Oracle.

    • Доступ из базы данных Postgresql к внешним данным, по аналогии с внешними таблицами в Oracle

  • 7. Оптимизация SQL запросов: Настройка производительности приложения.

    • Разделяемый пул и рабочая область. Оптимизатор. Команда Analyze.

    • Организация и планирование сбора статистики по объектам.

    • Вакуум.

    • Ранжирование методов доступа.

    • Анализ запросов с целью повышения скорости их выполнения. Команда Explain и алгоритмы её использования.

    • Правила оптимизации запросов и их оценка.

    • Практические примеры оптимизации, автоматический сбор статистики по таблицам и параметры конфигурации сервера. Отсутствие возможности в Postgresql управлением планом запросов с помощью подсказок (Oracle Hints), чем заменить?

  • 8. Язык DDL. Создание и изменение таблиц (DDL).

    • Команда Create Table.

    • Определение параметров хранения таблиц на физическом уровне.

    • Структура записи в Postgresql, отличия.

    • Отсутствие привязки к текущему времени (Oracle SCN), отсутствие ретроспективных запросов.

    • Введение в WAL журналирование. Основные параметры WAL и VACUUM, контрольные точки и производительность, сравнение с параметром Oracle - fast_start_mttr_target

  • 9. Транзакции. Конкуренция, параллельность и согласованность. Транзакции и взаимовлияние.

    • Наблюдение за активными запросами и сессиями в Postgresql.

  • 10. Создание временных транзакционных и сессионных таблиц.

    • Использование временных таблиц (Postgresql) для эмуляции работы пакетных переменных (Oracle), использование CTE таблиц в запросах, создание структур данных в памяти, без хранения их на диске в Postgresql.

    • Разница в использовании временных табличных пространств в Oracle и Postgresql.

  • 11. Создание таблиц с разбивкой на партиции. Ссылочные партиционные таблицы.

    • Примеры использования партиционных таблиц с различными типами разбивки.

    • Индексные таблицы.

    • Доступ к данным в индексных таблицах, проблемы обновления данных.

    • Особенности размещения индексных таблиц в физических блоках дисковой памяти. Отсутствие отдельного функционала в Postgres и способы обхода.

  • 12. Другие объекты. Представления. Материализованные представления данных в Postgresql.

    • Принудительное обновление данных.

    • Расширение DBLINK в Postgresql, создание соединений с другими базами данных Postgresql. Расширение plpython3u.

    • Создание соединений из Postgres с Oracle c использованием языка Python - перенос данных из Oracle .

  • 13. Python в Postgresql: взаимодействие с любыми серверами, как SQL, так и NoSQL, серверами сообщений, LDAP и прочими - на примерах (Kafka, ActiveMQ).

    • Взаимодействие сервера Postgresql с микросервисной архитектурой предприятия на примере Spring или JakartaEE приложения.

    • Использование в Postgresql типа данных JSON.

  • 14. Особенности миграции PL/SQL модулей Oracle в Postgresql.

    • Два языка программирования модулей - sql и plpgsql.

    • Отсутствие пакетов в стандартной версии Postgresql, механизм обхода этой проблемы с помощью схем и временных транзакционных таблиц.

    • Особенности размещения модулей в базе данных Postgresql - компиляция Обработка исключительных ситуаций. Повторное возбуждение исключений.

    • Перехват ошибок. Создание логера приложения с возможностью записи сообщений в отдельный файл операционной системы.

  • 15. Использование программных модулей в SQL запросах: транзакционные, волотильные и стабильные модули в сравнении с модулями Oracle, описанными прагмами.

    • Модули, вложенные друг в друга, особенности повторной «компиляции» и определения пространства имён переменных в модулях.

    • Переменные и курсорные ссылочные переменные - в сравнении.

  • 16. Тригеры объектные и системные.

  • 17. Расширения для Postgresql.

    • Использование Hints в Postgresql.

    • Аналогии с базой данных Oracle.

    • Управление планом выполнения запросов через подсказки и сравнение с параметрами сессии.

    • Заморозка планов выполнения запросов в Postgresql.

  • Итоговая аттестация.