PostgreSQL 
Владимир Бородин 
Системный администратор
3 
Черновой список тем для КИТ 5 
• Универсальная реляционная 
транзакционная СУБД Oracle 
• Легковесная реляционная 
высокопроизводительная СУБД MySQL 
• PostgreSQL 
• Документо-ориентированная горизонтально 
масштабируемая NoSQL СУБД MongoDB
4 The world's most advanced open source database
5 
Немного истории 
• С 1973 года Ingres (Стоунбрейкер и Вон) 
• С 1986 года Postgres (Post Ingres) 
• В 1997 году Postgres95 переименован в 
PostgreSQL
6 Архитектура PostgreSQL
7 Postmaster
8 Backend. Чтение данных
9 Backend. Запись данных
10 Backend. Обработка запроса
11 Checkpointer
12 Startup process
13 Autovacuum
14 Bgwriter
15 
Дополнительные процессы 
• WAL writer 
Не трогают разделяемую память: 
• Stats collector 
• Logging collector 
• WAL archiver
Feature set
17 
Надёжность 
• Зрелая СУБД 
• Отличная кодовая база 
• Грамотная архитектура 
• Community
18 
Отказоустойчивость 
• Write ahead logging 
• Crash recovery 
• Поточная репликация: 
– Асинхронная/синхронная 
– Каскадная 
• Логическая репликация (с 9.4) 
• Горячие бэкапы 
• PITR
19 Масштабирование. Postgres-XL
20 Масштабирование. PL/Proxy
21 
Производительность 
• MVCC 
• Процессная модель хорошо 
масштабируется на много процессоров/ядер 
• Легко убивает дисковую подсистему
• Oracle 
– 12K rps 
– CPU 
• PostgreSQL 
– 3K rps 
– I/O 
• MySQL 
– 1K rps 
– I/O 
22 Производительность на нашей нагрузке
23 
Совместимость 
• Совместимость с ANSI SQL:2011 
• Честный ACID
24 
Расширяемость 
• Операторы 
• Типы данных 
• Функции 
• Access methods 
• Процедурные языки 
• Индексы 
• Расширения
25 
Типы данных 
• Стандартные 
• Геометрические (points, lines, boxes, paths, polygons, …) 
• Сетевые адреса (inet, cidr, macaddr) 
• UUID 
• JSON 
• Композитные типы 
• Range-типы 
• ARRAY 
• Битовые строки 
• Текстовый поиск (tsvector, tsquery) 
• ISBN 
• XML
26 
Процедурные языки 
• PL/pgSQL 
• PL/Tcl 
• PL/Perl 
• PL/Python 
• PL/Java 
• PL/PHP 
• PL/Py 
• PL/R 
• PL/Ruby 
• PL/Scheme 
• PL/sh
27 
Индексы 
• Типы: 
– Compound 
– Unique 
– Partial 
– Functional 
• Access methods: 
– B-Tree 
– R-Tree 
– Hash 
– GIST 
– SP-GiST 
– GIN 
– VODKA (с 9.5) 
• GIN 
• PostGIS 
• OpenFTS 
• BRIN (с 9.5)
28 
Foreign data wrappers 
• PostgreSQL 
• Oracle 
• MongoDB 
• MySQL 
• Redis 
• Neo4j 
• File 
• ODBC/JDBC 
• Hadoop
29 
contrib 
• pg_stat_statements 
• pg_buffercache 
• pg_prewarm 
• pgbench 
• pg_upgrade 
• autoexplain 
• pg_crypto 
• pg_rewind 
• ...
30 
Другие особенности 
• Table inheritance 
– Так работает partitioning 
– http://www.postgresql.org/message-id/20140829155607.GF7705@eldon.alvh.no-ip.org 
• Event system (LISTEN/NOTIFY)
31 Сравнение с другими СУБД. Разработка
32 Сравнение с другими СУБД. Поддерживаемые платформы
33 Сравнение с другими СУБД. Фундаментальные возможности
34 Сравнение с другими СУБД. Ограничения
35 Сравнение с другими СУБД. Таблицы и представления
36 Сравнение с другими СУБД. Индексы
37 Сравнение с другими СУБД. Database capabilities
38 Сравнение с другими СУБД. Другие объекты
39 Сравнение с другими СУБД. Партиционирование
40 Сравнение с другими СУБД. Контроль доступа
41 
Почитать 
• http://www.postgresql.org/docs/current/static/index.html 
• find src -name README 
• http://www.postgresql.org/about/featurematrix/
Владимир Бородин 
Системный администратор 
d0uble@yandex-team.ru 
+7 495 739-70-00 (доб. 7255) 
119021, Москва, ул. Льва 
Толстого, 18Б 
Спасибо

Владимир Бородин - PostgreSQL