Описание
Предварительные требования:
Знания основ операционной системы 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.

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