Page 1
PostgreSQL в PostgreSQL в веб-приложенияхвеб-приложениях
Отказоусточивость Отказоусточивость
Балансировка нагрузки Балансировка нагрузки
Репликация Репликация
МасштабированиеМасштабирование
Иван ЗолотухинИван Золотухин[email protected] @postgresmen.ru
Page 2
www.rit2007.ru
PostgreSQL - это...PostgreSQL - это...
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Самая продвинутая из открытых СУБД в мире
Page 3
www.rit2007.ru
PostgreSQL - это...PostgreSQL - это...
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Надежность и устойчивость на любых нагрузках
Превосходная поддержка от community
КроссплатформенностьFreeBSDLinuxSolarisWindows
Page 4
www.rit2007.ru
PostgreSQL - это...PostgreSQL - это...
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Высокий уровень соответствия ANSI SQL 92, ANSI SQL 99 и ANSI SQL 2003
Интерфейсы для Tcl, Perl, C, C++, PHP, ODBC, JDBC, Embedded SQL in C, Python, Ruby, ...
Развитые административные утилиты (pgAdmin, phpPgAdmin, ...)
Page 5
www.rit2007.ru
PostgreSQL - это...PostgreSQL - это...
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Views, sequences, inheritance, outer joins, subselects, referential integrity, rules, triggers, user-defined functions, stored procedures, PL/SQL, PL/PgSQL, PL/Perl, PL/PHP, PL/Tcl, PL/sh, PL/Ruby, PL/Rails, PL/Python, PL/Django, extensible datatypes, hot backup, ACID, functional and partial indexes, i18n, unicode, full-text search, XML, SSL, ...
Page 6
www.rit2007.ru
PostgreSQL in the WebPostgreSQL in the Web
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
ЯндексРамблерРБКРабота.руВебальтаSkype+ другие крупные анонимные проекты
Page 7
www.rit2007.ru
ОтказоустойчивостьОтказоустойчивость(failover)(failover)
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Page 8
www.rit2007.ru
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Балансировка нагрузкиБалансировка нагрузки
Load balancer
Page 9
www.rit2007.ru
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
МасштабированиеМасштабирование(scale-out, а не scale-up)(scale-out, а не scale-up)
Page 10
www.rit2007.ru
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
РепликацияРепликацияMaster/Slave - asynchronousMaster/Slave - asynchronous
async
Page 11
www.rit2007.ru
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
РепликацияРепликацияMaster/Slave - synchronousMaster/Slave - synchronous
sync
Page 12
www.rit2007.ru
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
РепликацияРепликацияMulti-Master - synchronousMulti-Master - synchronous
sync
Page 13
www.rit2007.ru
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
РепликацияРепликацияMulti-Master - asynchronousMulti-Master - asynchronous
async
With conflicts resolution!
Page 14
www.rit2007.ru
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Pgpool-IIPgpool-II
pgpool
INSERT, UPDATE, DELETEна все узлы
SELECT на один узел
Page 15
www.rit2007.ru
Pgpool-IIPgpool-II
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Менеджер соединений (connection pooling + кеш)
Failover (обнаружение отказа и переключение на резервный сервер)
Репликация (синхронная, мульти-мастер)
Page 16
www.rit2007.ru
Pgpool-IIPgpool-II
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Балансировка нагрузки
Master/Slave режим -- работа вместе с другой системой репликации: Slony-I, WAL, ...)
Параллельное выполнение запросов
Нет ограничений на число узлов кластера (как было в pgpool-I)
Page 17
www.rit2007.ru
Pgpool-IIPgpool-II
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Page 18
www.rit2007.ru
Pgpool-IIPgpool-II
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Page 19
www.rit2007.ru
Pgpool-IIPgpool-II
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Page 20
www.rit2007.ru
Slony-ISlony-I
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Master to multiple slaves
Самая известная репликация для PostgreSQL
Асинхронная система
Простота настройки (4 часа Максима Богука)
Десятки слейвов
Каскады реплицируемых серверов
Page 21
www.rit2007.ru
Slony-ISlony-I
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Page 22
www.rit2007.ru
PgClusterPgCluster
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Синхронный мультимастер
Балансировка нагрузки
Высокодоступная (HA) система
Cluster DBs, Load Balancer, Replicator
Для ленивых: решение от Cybertec, Austria
Page 23
www.rit2007.ru
Трансфер логовТрансфер логов(WAL shipping)(WAL shipping)
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Асинхронная система
Встроена в PostgreSQL
Hot backup
Нельзя читать со слейвов
Page 24
www.rit2007.ru
SkypeSkype
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
PL/Proxy: проксирование запросов
PgBouncer: легкий менеджер соединений
SkyTools: управление кластером
Page 25
www.rit2007.ru
Skype: SkyToolsSkype: SkyTools
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
PgQ: generic queue implementation
WAL Manager: WAL setup + hot failover
Londiste: replication tool
Page 26
www.rit2007.ru
SkypeSkype
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Page 27
www.rit2007.ru
SkypeSkype
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Page 28
www.rit2007.ru
SkypeSkype
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Page 29
www.rit2007.ru
Счастье естьСчастье есть
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007
Смотрите в CVS этим летом блокбастер 2007 года: простая асинхронная master-slave репликация на трансфере логов (WAL shipping), встроенная в PostgreSQL
Page 30
www.rit2007.ru
Спасибо!Спасибо!
Иван Золотухин postgresmen.ru
РИТ-2007, Москва, 17 апреля 2007