postgresql для пользователей oracle - Павел Лузанов, postgres...
TRANSCRIPT
![Page 2: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/2.jpg)
2
Темы презентации
Импортозамещение в ИТ
Почему PostgreSQL лучше чем Oracle
Миграция с Oracle на PostgreSQL
![Page 3: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/3.jpg)
3
Темы презентации
Импортозамещение в ИТ
Почему PostgreSQL лучше чем Oracle
Миграция с Oracle на PostgreSQL
![Page 4: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/4.jpg)
4
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
![Page 5: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/5.jpg)
5
Таблицы и типы данных
Категории типов данныхЧисловые
Символьные
Бинарные
Дата, время, интервал
Логический тип
Перечисления
Геометрические
Сетевые адреса
Битовые строки
UUID
Типы текстового поиска
XML
JSON, JSONB
Массивы
Составные типы
Диапазоны
Псевдо типы
Домены
Пользовательские типы
![Page 6: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/6.jpg)
6
Ограничения целостности
Виды ограниченийПервичный ключ (PK)
Уникальный ключ (UK)
Внешний ключ (FK)
Обязательность заполнения (NOT NULL)
Проверка (CHECK)
Проверка значений столбцов для одной строки
Исключения (EXCLUDE)
Проверка значений столбцов для разных строк
Пример. Проверка на пересечение диапазонов
Могут быть отложенными (DEFERRED)
Добавление ограничений без проверки существующих записей (NOT VALID)
![Page 7: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/7.jpg)
7
Индексы
Уникальные
По выражению (функциональные)
Частичные (WHERE)
Методы индексации
B-tree Оптимален в запросах на равенство и диапазоны (= > <). Используется по умолчанию.
Hash Только для запросов на равенство.
GiST Обобщённое поисковое дерево: R-Tree, RD-Tree, Signature tree и вариации. Поддерживается поиск ближайших соседей (KNN).
SP-GiST Для работы с несбалансированными структурами: K-D-tree, Quadtree
GIN Обобщенный обратный индекс
BRIN (9.5) По диапазонам страниц
![Page 8: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/8.jpg)
8
Таблицы
ВременныеОтдельная таблица для каждой сессии
Запись в системный каталог
Нежурналируемые (UNLOGGED)Не реплицируются
Содержание не сохраняется при сбое сервера
Наследуемые (INHERITS)
Наследуют все столбцы и ограничения родительской таблицы
При запросе к родительской таблице, данные выбираются также из дочерних
Используются при секционировании
Внешние (fdw)Подключение внешних источников данных
Возможность записи во внешнюю таблицу
Возможность создавать триггеры
Как секции в секционированной таблице (9.5)
![Page 9: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/9.jpg)
9
Секционирование
РеализацияСекции – это дочерние таблицы, наследуемые (inherits) от родительской таблицы с ограничениями (check) на допустимые значения
Триггер на родительскую таблицу для разнесения DML операций по детальным таблицам
Параметр CONSTRAINT_EXCLUSION=ON
Расширение pg_partman позволяет автоматически управлять секционированием, включая вложенные секции
Секции могут быть внешними таблицами (9.5)Дополнительно
![Page 10: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/10.jpg)
10
Представления
ОбычныеРеализация через правила (rules)
ВременныеОбновляемые
Ограниченно
МатериализованныеОбновление только через REFRESH MATERIALIZED VIEW
WITH CHECK OPTION
WITH (security_barrier)
Триггеры INSTEAD OF
![Page 11: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/11.jpg)
11
Последовательности
ОбычныеВременныеФункции: nextval, currval, setvalКэширование значений на уровне сессииТип serial/bigserial — столбец с автоинкрементом
![Page 12: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/12.jpg)
12
Расширяемость
Встроенная возможность создавать:
Типы данных
Операторы
Индексы и методы доступа
Языки программирования
Функции
Расширения — упаковка связанных объектовCREATE EXTENSION
![Page 13: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/13.jpg)
13
Примеры расширяемости
Полнотекстовый поиск
Геоинформационные системы
Расширение postgis
NoSQL
key-value, json/jsonb, xml
![Page 14: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/14.jpg)
14
Системный каталог
Схема pg_catalog
Таблицы, представления, функции
psql -E \d*
Стандарт SQL: information_schema
![Page 15: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/15.jpg)
15
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
![Page 16: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/16.jpg)
16
SQL
DML
DDL
DCL
Команды DDL — транзакционные!
![Page 17: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/17.jpg)
17
Планировщик запросов
Построение планов на основе собранной статистики
Нет подсказок планировщику- есть параметры, влияющие на работу планировщика
- расширение pg_hint_plan
Запрос не может выполняться параллельно - пока
Нет фиксации плана, переноса на другой сервер - в Postgres Pro есть рабочий прототип, идет сбор требований
![Page 18: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/18.jpg)
18
Хранимые функции
Большой выбор ЯПC, SQL, PL/pgSQL
В базовой поставке: PL/Perl, PL/Tcl, PL/Python
Дополнительно: PL/Java, PL/PHP, PL/Py, PL/R, PL/R, PL/Ruby, PL/Scheme, PL/sh
Интерфейс для подключения новых
Только функции, нет пакетовОтдельные схемы для группировки функций
Нет зависимостей от объектов БДЕсть сторонние расширения
Нельзя сделать COMMITМожно SAVEPOINT .. ROLLBACK TO SAVEPOINT
Нет ORA-01555 "Snapshot too old"
Нет глобальных переменных (PL/pgSQL)
![Page 19: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/19.jpg)
19
Триггеры
Табличныеbefore/after
statement/row
insert, update, delete, truncate
нет мутирующих таблиц
На представление (instead of)
Событийные (CREATE, ALTER, DROP)функционал ограничен
![Page 20: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/20.jpg)
20
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
![Page 21: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/21.jpg)
21
Транзакции
Полная реализация ACID
Atomicity, Consistency, Isolation, Durability
Многоверсионность (MVCC)
читатели не блокируют писателей
писатели не блокируют читателей
Все уровни изоляции транзакций
![Page 22: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/22.jpg)
22
Транзакции
Уровни изоляции транзакций
PostgreSQL Oracle
READ COMMITED READ COMMITED
REPEATABLE READ SERIALIZABLE
SERIALIZABLE -
![Page 23: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/23.jpg)
23
MVCC. Пример (1)
1
2
3
1
2
3
A. select * from T;сн
имок
таблица T
![Page 24: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/24.jpg)
24
MVCC. Пример (2)
1
2
3
1
2
3 1
2
3
A. select * from T;сн
имок
таблица T
B. update T set ...;
сним
ок
![Page 25: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/25.jpg)
25
MVCC. Пример (3)
1
2
3
1a
3a
1
2
3 1a
2
3a
A. select * from T;сн
имок
таблица T
B. update T set ...;
сним
ок
![Page 26: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/26.jpg)
26
MVCC. Пример (4)
1
2
3
1a
3a
таблица T
2
1a
3a
C. VACUUM
1
2
3 1a
2
3a
A. select * from T;сн
имок
B. update T set ...;
сним
ок
![Page 27: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/27.jpg)
27
Команды DDL — транзакционные!
> select my_func();
1
> begin;> create or replace function my_func()…> select my_func(); 2
> select my_func(); 1
> commit;
> select my_func(); 2
![Page 28: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/28.jpg)
28
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
![Page 29: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/29.jpg)
29
Организация данных
Файлы данных
Журнал опережающей записи (WAL)
нет undo (rollback segments)
Управляющая информация pg_controldata
![Page 30: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/30.jpg)
30
Организация данных
кластер
базаданных
базаданных
табличноепространство
каталог/ ... файл файл файл файл файл ...
таблицатаблицаобъект
табличноепространство
таблицатаблицаобъект
таблицатаблицаобъект таблицатаблицаобъект
табличноепространство таблицатаблицаобъект
![Page 31: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/31.jpg)
31
Организация данных
Размер файлов данных по умолчанию 1GBСтраница = блок (по умолчанию 8кб)
Fillfactor (PCTFREE)
TOAST когда для строки 8кб мало
Сжатие данных для столбцов с типом данных переменной длины
![Page 32: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/32.jpg)
32
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
![Page 33: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/33.jpg)
33
Процессы и память
OSPostgreSQL
клиент postmaster
postgres(серверный процесс)
fork()
общая память
shared buffers wal buffers clog bufferslocks shared cache invalidation ...
temp bufferssorts, hashescatalog cacheplan cache...
служебныепроцессы
background writerwal writercheckpointerstats collectorautovacuumsysloggerwal archiverwal senderwal receiver
fork()
кэш
![Page 34: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/34.jpg)
34
Процессы и память
Процессыpostmaster — основной процессbackend — серверный процессutility processes — служебные процессы
ПамятьРазделяемая память: shared_buffersПамять backend (work_mem, max_connections)Кэш операционной системыБиблиотечный кэш — на уровне backend
![Page 35: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/35.jpg)
35
Экземпляр и БД
Экземпляр системы (память, процессы) обслуживает несколько БД
Табличное пространство может содержать объекты разных БД
Роли, табличные пространства — общие объекты кластера БД
![Page 36: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/36.jpg)
36
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
![Page 37: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/37.jpg)
37
Пользователи и схемы
Роли: пользователи, группы
Суперпользователи
Схема <> Пользователь
Каждый объект БД имеет: схему, владельца (роль)
Нет синонимов → search_path
Псевдороль PUBLIC, схема PUBLIC
Существенные привилегии по умолчанию
![Page 38: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/38.jpg)
38
Подключение и безопасность
pg_hba.conf
grant/revoke
Функции: security invoker/security definer
Row Level Security (9.5)
Нет пользовательских профилей
![Page 39: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/39.jpg)
39
pg_ctl
Утилита управления
Статус, запуск, останов, перезапуск сервера ...
Режимы останова pg_ctl stop -m shutdown-mode
PostgreSQL Oracle
smart normal
fast immediate
immediate abort
![Page 40: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/40.jpg)
40
psql
Утилита командной строки
Поставляется с сервером
Особенности
AUTOCOMMIT = 'on' (выбор: привычный DML или DDL)
Режимы вывода ($PAGER, \x)
Поддержка readline (история команд, автодополнение)
Команды просмотра системного каталога (\d*)
![Page 41: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/41.jpg)
41
Графические утилиты
pgAdmin
Инструменты для разработки и администрирования
![Page 42: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/42.jpg)
42
COPY
Выгрузка данныхCOPY tbl TO ['file'|'program'|stdout] ...
Загрузка данныхCOPY tbl FROM ['file'|'program'|stdin] ...
На клиенте (psql)\COPY ...
Существенно быстрее, чем INSERT
Нет аналога INSERT /*+ APPEND */
![Page 43: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/43.jpg)
43
pg_dump
Логическое копирование БД
Перенес в другую архитектуру
Переход на новую версию
Восстановление: psql, pg_restore
Возможности
Сжатие данных
Выгрузка и загрузка в несколько потоков
Консистентная выгрузка в несколько потоков
Выгрузка всего кластера: pg_dumpall
![Page 44: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/44.jpg)
44
Мониторинг
Коллектор статистикиПараметры для настройки
Сброс по требованию
Сторонние расширенияpg_stat_statements: статистика по отдельным запросам
pg_stat_plans: статистика по планам запросов
pg_buffercache: статистика по буферам
pg_stat_qcache: статистика на уровне кэша ОС
...
Плагины к системам мониторингаNagios, Zabbix, Munin, Cacti
Интегрированные системы мониторинга: PoWA (PostgreSQL Workload Analyzer)
OPM (Open PostgreSQL monitoring)
Журнал сервераПараметры для настройки
Ротация журнальных файлов
![Page 45: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/45.jpg)
45
Резервирование/восстановление
Горячее резервное копированиеpg_basebackup
pg_start_backup(),…, pg_stop_backup()
Восстановление на заданный момент в прошлом (PITR)
Непрерывное архивирование WAL
Инкрементальное резервирование только на уровне файлов(внешняя утилита barman)
Flashback — нет!
![Page 46: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/46.jpg)
46
Высокая доступность
Файловая/потоковая репликация
Горячий резервный сервер
Синхронная/асинхронная репликация
Каскадная репликация
Репликация с задержкой
![Page 47: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/47.jpg)
47
Документация
Официальная документация
PostgreSQL Wiki
Исходники
Списки рассылки
![Page 48: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/48.jpg)
48
Заключение
1. Вы найдете причины, чтобы не использовать PostgreSQL
2. Вы найдете возможности выполнить проект на PostgreSQL
Справедливы оба утверждения
Выбор за вами
![Page 49: PostgreSQL для пользователей Oracle - Павел Лузанов, Postgres Professional](https://reader034.vdocuments.mx/reader034/viewer/2022051101/58f186b11a28ab42408b4651/html5/thumbnails/49.jpg)
49
Контакты
Postgres ProfessionalКурсы по PostgreSQL
Авторизованный учебный центр ФОРС
Для вузов читаем бесплатно
Материалы будут доступны на нашем сайте
Документация на русском языкеwww.postgrespro.ru/doc
Замечания, предложения: [email protected]