30
PostgreSQL Стильно. Модно. Молодежно

PostgreSQL. Стильно. Модно. Молодёжно

Embed Size (px)

DESCRIPTION

My internal presentation of PostgreSQL database in A2 Design company

Citation preview

Page 1: PostgreSQL. Стильно. Модно. Молодёжно

PostgreSQLСтильно. Модно. Молодежно

Page 2: PostgreSQL. Стильно. Модно. Молодёжно

Возможности

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

ANSI SQL-92 и SQL-99

Плагины, расширения, языки для функций и процедур.

Много индексов.

Можно писать свои индексы (в том числе и функциональные).

Есть плагины.

Многоверсионность (MVCC

)

Масштабирование.

Tablespaces.

SLONY

VODKA!

Есть понятные роли из коробки.

Page 3: PostgreSQL. Стильно. Модно. Молодёжно

Наследование

Page 4: PostgreSQL. Стильно. Модно. Молодёжно

Наследование

Page 5: PostgreSQL. Стильно. Модно. Молодёжно

Почему можно заменить MySQL на PostgreSQL?

PostgreSQL умеет всё, что умеет MySQL.

Даже твой SELECT там заработает. А для INSERT, DELETE и UPDATE есть приятный бонус.

Порог вхождения довольно низок.

Ты можешь собрать PostgreSQL из исходников даже если это первая твоя собираемая из исходников программа. В репозитариях как правило лежит свежая версия.

Page 6: PostgreSQL. Стильно. Модно. Молодёжно

Типы данных● Численные типы

● Целые

● С фиксированной точкой

● С плавающей точкой

● Денежный тип (отличается специальным форматом вывода, а в остальном аналогичен числам с

фиксированной точкой с двумя знаками после запятой)

● Символьные типы произвольной длины

● Двоичные типы (включая BLOB)

● Типы «дата/время» (полностью поддерживающие различные форматы, точность, форматы вывода, включая

последние изменения в часовых поясах)

● Булев тип

Page 7: PostgreSQL. Стильно. Модно. Молодёжно

Типы данныхБулев тип

Перечисление

Геометрические примитивы

Сетевые типы

IP и IPv6-адреса

CIDR-формат

MAC-адрес

UUID-идентификатор

Page 8: PostgreSQL. Стильно. Модно. Молодёжно

Типы данных● XML-данные

● Массивы

● JSON

● Идентификаторы объектов БД

● Псевдотипы

Page 9: PostgreSQL. Стильно. Модно. Молодёжно

Индексы

1. B-tree2. Hash3. GiST4. SP-GiST5. GIN

6. VODKA ( анонсированно )

Page 10: PostgreSQL. Стильно. Модно. Молодёжно

ConstraintНе-именованное ограничение:

Именованное ограничение:

Page 11: PostgreSQL. Стильно. Модно. Молодёжно

ConstraintОграничение по нескольким полям:

Тоже самое, но более компактно и с логическими операторами:

Page 12: PostgreSQL. Стильно. Модно. Молодёжно

ПРАВИЛЬНЫЙ Group By

Page 13: PostgreSQL. Стильно. Модно. Молодёжно

ПРАВИЛЬНЫЙ Group By

Page 14: PostgreSQL. Стильно. Модно. Молодёжно

ПРАВИЛЬНЫЙ Group By

Page 15: PostgreSQL. Стильно. Модно. Молодёжно

Инициализация базыСоздаем базу данных

Page 16: PostgreSQL. Стильно. Модно. Молодёжно

Создание таблицы

Page 17: PostgreSQL. Стильно. Модно. Молодёжно

ReturningДанные из затронутых ЛЮБЫМ INSERT, UPDATE или DELETE запросом строк можно вернуть.

Page 18: PostgreSQL. Стильно. Модно. Молодёжно

Процедурные языки

Название Язык Функция

PL/Java Java http://pljava.projects.postgresql.org/

PL/PHP PHP http://www.commandprompt.com/community/plphp/

PL/Py Python 2/3 http://python.projects.postgresql.org/

PL/R R http://www.joeconway.com/plr/

PL/Ruby Ruby http://raa.ruby-lang.org/project/pl-ruby/

PL/Scheme Scheme http://plscheme.projects.postgresql.org/

PL/sh Unix shell http://plsh.projects.postgresql.org/

Page 19: PostgreSQL. Стильно. Модно. Молодёжно

Returning

Page 20: PostgreSQL. Стильно. Модно. Молодёжно

JSON storage

Page 21: PostgreSQL. Стильно. Модно. Молодёжно

JSON storage

Page 22: PostgreSQL. Стильно. Модно. Молодёжно

Масштабирование● Slony

● Pgpool-II

● Pgcluster

● PL/Proxy

● PgBouncer

Page 23: PostgreSQL. Стильно. Модно. Молодёжно

МасштабированиеSlony – система репликации реального времени, позволяющая организовать синхронизацию

нескольких серверов PostgreSQL по сети. Slony использует триггеры PostgreSQL для привязки

к событиям INSERT/DELETE/UPDATE и хранимые процедуры для выполнения действий. Наши

соотечественники вдоволь порезвились с аббревиатурами названий базовых утилит пакета.

Основные понятия системы:

● кластер – набор баз данных;

● нода – база данных, которая может быть распределена;

Page 24: PostgreSQL. Стильно. Модно. Молодёжно

Масштабирование● репликационный набор – набор таблиц, которые могут быть реплицированы между

нодами кластера;

● источник (или провайдер) и подписчик – у каждой репликации есть одна нода-источник,

остальные ноды могут быть подписчиками;

● slon – демон, присутствующий на каждой ноде и управляющий ее репликациями;

● slonik – командная утилита для общего управления нодами.

http://slony.info/

Page 25: PostgreSQL. Стильно. Модно. Молодёжно

МасштабированиеPgpool-II

Эта система масштабирования представляет собой прокси-прослойку между сервером и

клиентами, прозрачна для обоих, может организовывать пул для ограничения соединений. Она

реализует следующие возможности.

1. Создает высокопроизводительную сетевую структуру между нодами, кластерами и

пользователями.

2. Синхронно реплицирует данные на множество серверов без остановки.

3. Балансирует нагрузку, распределяя ее между нодами кластера.

4. Распараллеливает запросы за счет разнесения данных по нодам.

5. Failover – обнаружение отказа и переключение нагрузки.

Page 26: PostgreSQL. Стильно. Модно. Молодёжно

МасштабированиеPgcluster

Для его установки необходимо поставить патч на postgresql. Схема работы сложнее, чем в

pgpool. Pgcluster состоит из трех типов серверов:

● балансер-сервер (front-end);

● кластерный сервер(данные);

● репликационный сервер.

Когда одна из нод «падает», балансер и репликационный сервер, постоянно отслеживающие

жизнедеятельность кластера, отделяют сломанную ноду от работоспособной части системы и

продолжают работу с оставшимися нодами.

Page 27: PostgreSQL. Стильно. Модно. Молодёжно

МасштабированиеПосле этого необходимо устранить неисправность упавшей ноды и подсоединить к системе в

режиме репликации. После этого репликационный сервер запишет данные с работающих

серверов поверх имеющихся на реплицируемой ноде плюс выполнит запросы за время

простоя в автоматическом режиме, останется только включить сервер в обычном режиме.

Page 28: PostgreSQL. Стильно. Модно. Молодёжно

МасштабированиеPL/Proxy

PL/Proxy – это прокси-язык, используемый для вызова удаленных процедур и разделения

данных между нодами. Проект представляет собой компилируемую си-шную библиотеку

libplproxy.so

Page 29: PostgreSQL. Стильно. Модно. Молодёжно

МасштабированиеPgBouncer

Это пул коннектов для постгрес от компании Skype. Существуют три режима управления.

1. Session Pooling. Клиенту выделяется соединение с сервером; оно приписано ему в

течение всей сессии и возвращается в пул только после отсоединения клиента.

2. Transaction Pooling. Клиент владеет соединением только в течение транзакции.

3. Statement Pooling. Соединение возвращается назад в пул сразу после завершения

запроса.

К достоинствам PgBouncer относится:

● малое потребление памяти (менее 2 КБ на соединение);

● отсутствие привязки к одному серверу баз данных;

● реконфигурация настроек без рестарта.

Page 30: PostgreSQL. Стильно. Модно. Молодёжно

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