SlideShare ist ein Scribd-Unternehmen logo
1 von 30
PostgreSQL 
Стильно. Модно. Молодежно
Возможности 
Соответстви 
е стандарту 
SQL 
ANSI SQL-92 и SQL-99 
Плагины, расширения, 
языки для функций и 
процедур. 
Много индексов. 
Можно писать свои 
индексы (в том числе и 
функциональные). 
Есть плагины. 
Многоверсионность 
(MVCC) 
Масштабирование. 
Tablespaces. 
SLONY 
VODKA! 
Есть понятные роли из 
коробки.
Наследование
Наследование
Почему можно заменить MySQL на 
PostgreSQL? 
PostgreSQL умеет 
всё, что умеет 
MySQL. 
Даже твой SELECT там заработает. 
А для INSERT, DELETE и UPDATE 
есть приятный бонус. 
Порог вхождения 
довольно низок. 
Ты можешь собрать PostgreSQL из 
исходников даже если это первая 
твоя собираемая из исходников 
программа. В репозитариях как 
правило лежит свежая версия.
Типы данных 
● Численные типы 
● Целые 
● С фиксированной точкой 
● С плавающей точкой 
● Денежный тип (отличается специальным форматом вывода, а в остальном аналогичен числам с 
фиксированной точкой с двумя знаками после запятой) 
● Символьные типы произвольной длины 
● Двоичные типы (включая BLOB) 
● Типы «дата/время» (полностью поддерживающие различные форматы, точность, форматы вывода, включая 
последние изменения в часовых поясах) 
● Булев тип
Типы данных 
Булев тип 
Перечисление 
Геометрические примитивы 
Сетевые типы 
IP и IPv6-адреса 
CIDR-формат 
MAC-адрес 
UUID-идентификатор
Типы данных 
● XML-данные 
● Массивы 
● JSON 
● Идентификаторы объектов БД 
● Псевдотипы
Индексы 
1. B-tree 
2. Hash 
3. GiST 
4. SP-GiST 
5. GIN 
6. VODKA ( 
анонсированно )
Constraint 
Не-именованное ограничение: 
Именованное ограничение:
Constraint 
Ограничение по нескольким полям: 
Тоже самое, но более компактно и с логическими операторами:
ПРАВИЛЬНЫЙ Group By
ПРАВИЛЬНЫЙ Group By
ПРАВИЛЬНЫЙ Group By
Инициализация базы 
Создаем базу данных
Создание таблицы
Returning 
Данные из затронутых ЛЮБЫМ INSERT, UPDATE или DELETE запросом строк можно вернуть.
Процедурные языки 
Название Язык Функция 
PL/Java Java http://pljava.projects.postgresql.org/ 
PL/PHP PHP http://www.commandprompt.com/co 
mmunity/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.o 
rg/ 
PL/sh Unix shell http://plsh.projects.postgresql.org/
Returning
JSON storage
JSON storage
Масштабирование 
● Slony 
● Pgpool-II 
● Pgcluster 
● PL/Proxy 
● PgBouncer
Масштабирование 
Slony – система репликации реального времени, позволяющая организовать синхронизацию 
нескольких серверов PostgreSQL по сети. Slony использует триггеры PostgreSQL для привязки 
к событиям INSERT/DELETE/UPDATE и хранимые процедуры для выполнения действий. Наши 
соотечественники вдоволь порезвились с аббревиатурами названий базовых утилит пакета. 
Основные понятия системы: 
● кластер – набор баз данных; 
● нода – база данных, которая может быть распределена;
Масштабирование 
● репликационный набор – набор таблиц, которые могут быть реплицированы между 
нодами кластера; 
● источник (или провайдер) и подписчик – у каждой репликации есть одна нода-источник, 
остальные ноды могут быть подписчиками; 
● slon – демон, присутствующий на каждой ноде и управляющий ее репликациями; 
● slonik – командная утилита для общего управления нодами. 
http://slony.info/
Масштабирование 
Pgpool-II 
Эта система масштабирования представляет собой прокси-прослойку между сервером и 
клиентами, прозрачна для обоих, может организовывать пул для ограничения соединений. Она 
реализует следующие возможности. 
1. Создает высокопроизводительную сетевую структуру между нодами, кластерами и 
пользователями. 
2. Синхронно реплицирует данные на множество серверов без остановки. 
3. Балансирует нагрузку, распределяя ее между нодами кластера. 
4. Распараллеливает запросы за счет разнесения данных по нодам. 
5. Failover – обнаружение отказа и переключение нагрузки.
Масштабирование 
Pgcluster 
Для его установки необходимо поставить патч на postgresql. Схема работы сложнее, чем в 
pgpool. Pgcluster состоит из трех типов серверов: 
● балансер-сервер (front-end); 
● кластерный сервер(данные); 
● репликационный сервер. 
Когда одна из нод «падает», балансер и репликационный сервер, постоянно отслеживающие 
жизнедеятельность кластера, отделяют сломанную ноду от работоспособной части системы и 
продолжают работу с оставшимися нодами.
Масштабирование 
После этого необходимо устранить неисправность упавшей ноды и подсоединить к системе в 
режиме репликации. После этого репликационный сервер запишет данные с работающих 
серверов поверх имеющихся на реплицируемой ноде плюс выполнит запросы за время 
простоя в автоматическом режиме, останется только включить сервер в обычном режиме.
Масштабирование 
PL/Proxy 
PL/Proxy – это прокси-язык, используемый для вызова удаленных процедур и разделения 
данных между нодами. Проект представляет собой компилируемую си-шную библиотеку 
libplproxy.so
Масштабирование 
PgBouncer 
Это пул коннектов для постгрес от компании Skype. Существуют три режима управления. 
1. Session Pooling. Клиенту выделяется соединение с сервером; оно приписано ему в 
течение всей сессии и возвращается в пул только после отсоединения клиента. 
2. Transaction Pooling. Клиент владеет соединением только в течение транзакции. 
3. Statement Pooling. Соединение возвращается назад в пул сразу после завершения 
запроса. 
К достоинствам PgBouncer относится: 
● малое потребление памяти (менее 2 КБ на соединение); 
● отсутствие привязки к одному серверу баз данных; 
● реконфигурация настроек без рестарта.
Спасибо 
за внимание

Weitere ähnliche Inhalte

Was ist angesagt?

Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Ontico
 
Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Alexey Lesovsky
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6Nikolay Samokhvalov
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)Ontico
 
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)Ontico
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентовNikolay Samokhvalov
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоCodeFest
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Ontico
 
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Ontico
 
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский) Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский) Ontico
 
Database First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДDatabase First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДNikolay Samokhvalov
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахAlexey Vasiliev
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Ontico
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
 
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Mail.ru Group
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBSergey Petrunya
 
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)Ontico
 

Was ist angesagt? (20)

pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
 
Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
 
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван Панченко
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
 
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
 
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский) Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
 
Database First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДDatabase First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБД
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
 
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDB
 
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
 

Andere mochten auch

«Oracle Application Quality Management: Средства тестирования и управления те...
«Oracle Application Quality Management: Средства тестирования и управления те...«Oracle Application Quality Management: Средства тестирования и управления те...
«Oracle Application Quality Management: Средства тестирования и управления те...Andrey Akulov
 
Алексей Захаров (Oracle): Oracle Business Intelligence - аналитическая платформа
Алексей Захаров (Oracle): Oracle Business Intelligence - аналитическая платформаАлексей Захаров (Oracle): Oracle Business Intelligence - аналитическая платформа
Алексей Захаров (Oracle): Oracle Business Intelligence - аналитическая платформаExpolink
 
Oracle 11g с нуля: первые шаги с СУБД Oracle
Oracle 11g с нуля: первые шаги с СУБД OracleOracle 11g с нуля: первые шаги с СУБД Oracle
Oracle 11g с нуля: первые шаги с СУБД OracleSkillFactory
 
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийСравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийFuenteovejuna
 
Краткий обзор новинок PostgreSQL 9.4 – Николай Самохвалов
Краткий обзор новинок PostgreSQL 9.4 – Николай СамохваловКраткий обзор новинок PostgreSQL 9.4 – Николай Самохвалов
Краткий обзор новинок PostgreSQL 9.4 – Николай СамохваловYandex
 
~20081006 Highload2008 Postgresql самохвалов
~20081006 Highload2008 Postgresql самохвалов~20081006 Highload2008 Postgresql самохвалов
~20081006 Highload2008 Postgresql самохваловOntico
 
Синие против красных
Синие против красныхСиние против красных
Синие против красныхSergey Melekhin
 
Oracle big data for finance
Oracle big data for financeOracle big data for finance
Oracle big data for financeCleverDATA
 
PostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
PostgreSQL Moscow Meetup - September 2014 - Nikolay SamokhvalovPostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
PostgreSQL Moscow Meetup - September 2014 - Nikolay SamokhvalovNikolay Samokhvalov
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюринpgdayrussia
 
1 big data oracle digi oct
1 big data oracle digi oct1 big data oracle digi oct
1 big data oracle digi octantishmanti
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Ontico
 
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...Ontico
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLYandex
 
Postgres Presentation
Postgres PresentationPostgres Presentation
Postgres Presentationgisborne
 
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)Ontico
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDAlex Chistyakov
 

Andere mochten auch (20)

«Oracle Application Quality Management: Средства тестирования и управления те...
«Oracle Application Quality Management: Средства тестирования и управления те...«Oracle Application Quality Management: Средства тестирования и управления те...
«Oracle Application Quality Management: Средства тестирования и управления те...
 
Алексей Захаров (Oracle): Oracle Business Intelligence - аналитическая платформа
Алексей Захаров (Oracle): Oracle Business Intelligence - аналитическая платформаАлексей Захаров (Oracle): Oracle Business Intelligence - аналитическая платформа
Алексей Захаров (Oracle): Oracle Business Intelligence - аналитическая платформа
 
Oracle
OracleOracle
Oracle
 
Oracle 11g с нуля: первые шаги с СУБД Oracle
Oracle 11g с нуля: первые шаги с СУБД OracleOracle 11g с нуля: первые шаги с СУБД Oracle
Oracle 11g с нуля: первые шаги с СУБД Oracle
 
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийСравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
 
Краткий обзор новинок PostgreSQL 9.4 – Николай Самохвалов
Краткий обзор новинок PostgreSQL 9.4 – Николай СамохваловКраткий обзор новинок PostgreSQL 9.4 – Николай Самохвалов
Краткий обзор новинок PostgreSQL 9.4 – Николай Самохвалов
 
~20081006 Highload2008 Postgresql самохвалов
~20081006 Highload2008 Postgresql самохвалов~20081006 Highload2008 Postgresql самохвалов
~20081006 Highload2008 Postgresql самохвалов
 
Синие против красных
Синие против красныхСиние против красных
Синие против красных
 
Oracle big data for finance
Oracle big data for financeOracle big data for finance
Oracle big data for finance
 
PostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
PostgreSQL Moscow Meetup - September 2014 - Nikolay SamokhvalovPostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
PostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
 
1 big data oracle digi oct
1 big data oracle digi oct1 big data oracle digi oct
1 big data oracle digi oct
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
 
Pgconfru 2015 kosmodemiansky
Pgconfru 2015 kosmodemianskyPgconfru 2015 kosmodemiansky
Pgconfru 2015 kosmodemiansky
 
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
 
Get to know PostgreSQL!
Get to know PostgreSQL!Get to know PostgreSQL!
Get to know PostgreSQL!
 
Postgres Presentation
Postgres PresentationPostgres Presentation
Postgres Presentation
 
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSD
 

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

SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.SECON
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationAlexey Lesovsky
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XCPostgreSQL-Consulting
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practiceAlexey Lesovsky
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Andrew Avdeev
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо... PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...it-people
 
Hadoop > cascading -> cascalog (short version)
Hadoop  > cascading -> cascalog (short version)Hadoop  > cascading -> cascalog (short version)
Hadoop > cascading -> cascalog (short version)Andrew Panfilov
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
Новости Global summit 2015
Новости Global summit 2015Новости Global summit 2015
Новости Global summit 2015Timur Safin
 
Перевод новостного приложения на БД PostgreSQL
Перевод новостного приложения на БД PostgreSQLПеревод новостного приложения на БД PostgreSQL
Перевод новостного приложения на БД PostgreSQLDmitry Kremer
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Mail.ru Group
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаAnastasia Lubennikova
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Ontico
 

Ähnlich wie PostgreSQL. Стильно. Модно. Молодёжно (20)

SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming Replication
 
Deep storm presentation
Deep storm presentationDeep storm presentation
Deep storm presentation
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XC
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо... PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 
Hadoop > cascading -> cascalog (short version)
Hadoop  > cascading -> cascalog (short version)Hadoop  > cascading -> cascalog (short version)
Hadoop > cascading -> cascalog (short version)
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Новости Global summit 2015
Новости Global summit 2015Новости Global summit 2015
Новости Global summit 2015
 
Node.js (RichClient)
 Node.js (RichClient) Node.js (RichClient)
Node.js (RichClient)
 
Перевод новостного приложения на БД PostgreSQL
Перевод новостного приложения на БД PostgreSQLПеревод новостного приложения на БД PostgreSQL
Перевод новостного приложения на БД PostgreSQL
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Java 9 - Back to the Future
Java 9 - Back to the FutureJava 9 - Back to the Future
Java 9 - Back to the Future
 
Scaling PostgreSQL
Scaling PostgreSQLScaling PostgreSQL
Scaling PostgreSQL
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
 

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

  • 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 ● Идентификаторы объектов БД ● Псевдотипы
  • 9. Индексы 1. B-tree 2. Hash 3. GiST 4. SP-GiST 5. GIN 6. VODKA ( анонсированно )
  • 10. Constraint Не-именованное ограничение: Именованное ограничение:
  • 11. Constraint Ограничение по нескольким полям: Тоже самое, но более компактно и с логическими операторами:
  • 17. Returning Данные из затронутых ЛЮБЫМ INSERT, UPDATE или DELETE запросом строк можно вернуть.
  • 18. Процедурные языки Название Язык Функция PL/Java Java http://pljava.projects.postgresql.org/ PL/PHP PHP http://www.commandprompt.com/co mmunity/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.o rg/ PL/sh Unix shell http://plsh.projects.postgresql.org/
  • 22. Масштабирование ● Slony ● Pgpool-II ● Pgcluster ● PL/Proxy ● PgBouncer
  • 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 КБ на соединение); ● отсутствие привязки к одному серверу баз данных; ● реконфигурация настроек без рестарта.