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