"postgresql для разработчиков приложений", Павел...

28
PostgreSQL для разработчиков приложений Павел Лузанов, Postgres Professional, 17.06.2016

Upload: badoo-development

Post on 06-Jan-2017

13.313 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

PostgreSQL для разработчиков приложений

Павел Лузанов, Postgres Professional, 17.06.2016

Page 2: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

PostgreSQL is a powerful, open source object -relational database system.

SQLrelational

About PostgreSQL.

www.postgresql.org/about

Page 3: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Серверная часть приложения..

Реляционная модель данных

Page 4: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Реляционная модель данныхЗачем?

Реляционные СУБД для реляционной модели

Нормализация данных

ER-диаграммы

Page 5: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Реляционная модель данныхPostgreSQL

Не зависит от СУБД

Page 6: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Серверная часть приложения.

Реляционная модель данных

Физическая модель данных

Page 7: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Физическая модель данныхЗачем?

Сама по себе ER-диаграмма не работает

Нормализованная модель не будет работать

Page 8: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Физическая модель данныхЗачем?

Денормализациядобавление избыточностиавтоматическая поддержка

Page 9: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Физическая модель данныхPostgreSQL

Отношения, атрибуты, связи →таблицы, столбцы, ограничения целостности

Доступ к даннымроли, схемы, привилегии

Деномализация данныхдобавление столбцов (восходящая, нисходящая)

материализованные представления

индексы (разные типы, для разных задач)

Page 10: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Серверная часть приложения..

Реляционная модель данных

Физическая модель данных

SQL

Page 11: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

SQLЗачем?

Декларативный язык- оперирует множествами, а не объектами

+ делает это очень эффективно!

Page 12: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

SQLPostgreSQL

Соответствие стандарту ANSI SQL

Богатый функционаланалитические функции (оконнные, групповые)

Common Table Expressions (CTE)

иерархические запросы

LATERAL

Page 13: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

SQLPostgreSQL

EXPLAIN: план/факт запросов

Планировщик запросовметоды доступа к таблицам

способы соединения таблиц

статистика

Page 14: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Серверная часть приложения..

Реляционная модель данных

Физическая модель данных

SQL Хранимые процедуры

Page 15: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Хранимые процедурыЗачем?

Производительностьменьше команд

меньше данных

меньше разборов команд

API для доступа к данным

Page 16: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Хранимые процедурыPostgreSQL

Языки на выбор

Только функции

commit;

Временные таблицы, глобальные переменные

Page 17: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Серверная часть приложения/

Реляционная модель данных

Физическая модель данных

SQL

Транзакции

Хранимые процедуры

Page 18: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

ТранзакцииЗачем?

ACI Dсогласованность - ограничения целостности?

атомарность

изоляция

Page 19: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

ТранзакцииPostgreSQL

MVCCautocommit=on согласованность

изоляция RU, RC, RR, SER

Блокировки на уровне строки

DDL

Page 20: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Серверная часть приложения.

Настройка приложения

Реляционная модель данных

Физическая модель данных

SQL

Транзакции

Хранимые процедуры

Page 21: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Архитектура PostgreSQL

Серверная часть приложения.

Настройка приложения

Реляционная модель данных

Физическая модель данных

SQL

Транзакции

Хранимые процедуры

Page 22: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Итоги.

Разработка приложений для реляционных СУБД требует знаний в ряде областей от реляционной модели до управления транзакциями

Разработка эффективных приложений для PostgreSQLтребует понимания архитектуры PostgreSQL в этих областях

Page 23: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Архитектура PostgreSQL

Настройка приложения

Реляционная модель данных

Физическая модель данных

Транзакции

Хранимые процедуры

Курсы для разработчиковИспользование SQL

SQL

Page 24: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Архитектура PostgreSQL

Настройка приложения

Реляционная модель данных

Физическая модель данных

Транзакции

Хранимые процедуры

Курсы для разработчиковDEV1. Базовый курс

SQL DEV1

Page 25: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Архитектура PostgreSQL

Настройка приложения

Реляционная модель данных

Физическая модель данных

Транзакции

Хранимые процедуры

Курсы для разработчиковDEV2. Расширенный курс

SQL DEV1

DEV2

Page 26: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Каталог курсовwww.postgrespro.ru/education

DBA1. Базовый курс

DBA2. Расширенный курс

DEV1. Базовый курс

DEV2. Расширенный курс

Использование SQL

Page 27: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

Спасибо за внимание!.

www.postgrespro.ru/[email protected]

Page 28: "PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессиональный)

ПослесловиеPostgreSQL

Так тоже можно:

postgres=# create table mydata ( id serial, value jsonb );CREATE TABLE

Зачем?