Миграция базы данных Oracle в Postgresql для администраторов и разработчиков
Подробнее о курсе
Краткое описание курса
По окончанию курса слушатели смогут ориентироваться в вопросе миграции структур данных, данных, программных модулей, конфигураций сервера базы данных Oracle в PostgreSQL. На конкретных примерах будет рассмотрен перенос данных и создание программных единиц в PostgreSQL, подобных тем, что были в базе данных Oracle
Задача курса — показать архитектурные особенности сервера PostgreSQL, его тонкую настройку с точки зрения сервера Oracle, отличие механизма хранения данных в Oracle от PostgreSQL, правила прозрачного переноса хранимых программных модулей из Oracle в PostgreSQL, разница между языком Postgres PLPGSQL и Oracle SQL. Также на примерах будет рассмотрен механизм взаимодействия базы данных PostgreSQL с базой данных Oracle с использованием встроенного языка программирования Python
Целевая аудитория курса
Профессиональные администраторы и разработчики Oracle, переводящие свои данные, приложения, конфигурации сервера Oracle в современную базу данных PostgreSQL
Содержание курса
Модуль 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)
- КомандаCreateTable. Определение параметров хранения таблиц на физическом уровне
- Структура записи в PostgreSQL, отличия
- Отсутствие привязки к текущему времени (OracleSCN), отсутствие ретроспективных запросов
- Введение в 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
- Тригеры объектные и системные