2. Возможности
Соответстви
е стандарту
SQL
ANSI SQL-92 и SQL-99
Плагины, расширения,
языки для функций и
процедур.
Много индексов.
Можно писать свои
индексы (в том числе и
функциональные).
Есть плагины.
Многоверсионность
(MVCC)
Масштабирование.
Tablespaces.
SLONY
VODKA!
Есть понятные роли из
коробки.
5. Почему можно заменить MySQL на
PostgreSQL?
PostgreSQL умеет
всё, что умеет
MySQL.
Даже твой SELECT там заработает.
А для INSERT, DELETE и UPDATE
есть приятный бонус.
Порог вхождения
довольно низок.
Ты можешь собрать PostgreSQL из
исходников даже если это первая
твоя собираемая из исходников
программа. В репозитариях как
правило лежит свежая версия.
6. Типы данных
● Численные типы
● Целые
● С фиксированной точкой
● С плавающей точкой
● Денежный тип (отличается специальным форматом вывода, а в остальном аналогичен числам с
фиксированной точкой с двумя знаками после запятой)
● Символьные типы произвольной длины
● Двоичные типы (включая BLOB)
● Типы «дата/время» (полностью поддерживающие различные форматы, точность, форматы вывода, включая
последние изменения в часовых поясах)
● Булев тип
7. Типы данных
Булев тип
Перечисление
Геометрические примитивы
Сетевые типы
IP и IPv6-адреса
CIDR-формат
MAC-адрес
UUID-идентификатор
8. Типы данных
● XML-данные
● Массивы
● JSON
● Идентификаторы объектов БД
● Псевдотипы
23. Масштабирование
Slony – система репликации реального времени, позволяющая организовать синхронизацию
нескольких серверов PostgreSQL по сети. Slony использует триггеры PostgreSQL для привязки
к событиям INSERT/DELETE/UPDATE и хранимые процедуры для выполнения действий. Наши
соотечественники вдоволь порезвились с аббревиатурами названий базовых утилит пакета.
Основные понятия системы:
● кластер – набор баз данных;
● нода – база данных, которая может быть распределена;
24. Масштабирование
● репликационный набор – набор таблиц, которые могут быть реплицированы между
нодами кластера;
● источник (или провайдер) и подписчик – у каждой репликации есть одна нода-источник,
остальные ноды могут быть подписчиками;
● slon – демон, присутствующий на каждой ноде и управляющий ее репликациями;
● slonik – командная утилита для общего управления нодами.
http://slony.info/
25. Масштабирование
Pgpool-II
Эта система масштабирования представляет собой прокси-прослойку между сервером и
клиентами, прозрачна для обоих, может организовывать пул для ограничения соединений. Она
реализует следующие возможности.
1. Создает высокопроизводительную сетевую структуру между нодами, кластерами и
пользователями.
2. Синхронно реплицирует данные на множество серверов без остановки.
3. Балансирует нагрузку, распределяя ее между нодами кластера.
4. Распараллеливает запросы за счет разнесения данных по нодам.
5. Failover – обнаружение отказа и переключение нагрузки.
26. Масштабирование
Pgcluster
Для его установки необходимо поставить патч на postgresql. Схема работы сложнее, чем в
pgpool. Pgcluster состоит из трех типов серверов:
● балансер-сервер (front-end);
● кластерный сервер(данные);
● репликационный сервер.
Когда одна из нод «падает», балансер и репликационный сервер, постоянно отслеживающие
жизнедеятельность кластера, отделяют сломанную ноду от работоспособной части системы и
продолжают работу с оставшимися нодами.
27. Масштабирование
После этого необходимо устранить неисправность упавшей ноды и подсоединить к системе в
режиме репликации. После этого репликационный сервер запишет данные с работающих
серверов поверх имеющихся на реплицируемой ноде плюс выполнит запросы за время
простоя в автоматическом режиме, останется только включить сервер в обычном режиме.
28. Масштабирование
PL/Proxy
PL/Proxy – это прокси-язык, используемый для вызова удаленных процедур и разделения
данных между нодами. Проект представляет собой компилируемую си-шную библиотеку
libplproxy.so
29. Масштабирование
PgBouncer
Это пул коннектов для постгрес от компании Skype. Существуют три режима управления.
1. Session Pooling. Клиенту выделяется соединение с сервером; оно приписано ему в
течение всей сессии и возвращается в пул только после отсоединения клиента.
2. Transaction Pooling. Клиент владеет соединением только в течение транзакции.
3. Statement Pooling. Соединение возвращается назад в пул сразу после завершения
запроса.
К достоинствам PgBouncer относится:
● малое потребление памяти (менее 2 КБ на соединение);
● отсутствие привязки к одному серверу баз данных;
● реконфигурация настроек без рестарта.