Аудитория курса
Профессиональные администраторы и разработчики Oracle, переводящие свои данные, приложения, конфигурации сервера Oracle в современную базу данных Postgresql
Требования к предварительной подготовке слушателя
- знание основ операционной системы Linux
- желательно знание базовой архитектуры сервера Oracle,
- знание основ языков программирования - Oracle PL/SQL, языка запросов SQL, Python, Java
Содержание курса
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. Тригеры объектные и системные.