SlideShare a Scribd company logo
www.postgrespro.ru
Обзор архитектуры
PostgreSQL
Hacking PostgreSQL
25.02.2016
Обо мне
● Index-only scan for GiST
● Microvacuum for GiST
● Write-optimized indexes
for PostgreSQL
● B-tree INCLUDING clause
● B-tree. Compression of
duplicates
Обо мне
● Index-only scan for GiST
● Microvacuum for GiST
● Write-optimized indexes
for PostgreSQL
● B-tree INCLUDING clause
● B-tree. Compression of
duplicates
● 2 years in PostgreSQL
development
Цели курса
● Обучение сотрудников
● Обмен опытом среди разработчиков
● Создание обзора кодовой базы PostgreSQL
● Дополнение документации для разработчиков
● Дополнение списка TODO
● Создание книги о внутреннем устройстве
PostgreSQL
Организационные вопросы
● Занятия 1 раз в неделю
● http://postgres-edu.blogspot.ru/
● Практика после 2й лекции
● hacking@postgrespro.ru
Расширяемость PostgreSQL
Клиент-сервер
postgres (postmaster)
● контролирует запуск и остановку сервера
● создает разделяемую память
● при старте порождает служебные процессы
● слушает TCP/IP сокет (порт по умолчанию
5432) в ожидании подключений
● создает форк для каждого подключения
• бакенды независимые
• коннект дорогой (pgpool, pgbouncer)
● следит за падением бэкендов
• при необходимости запускает процесс
восстановления
Клиент-серверный протокол
●
● libpq
• Библиотека на Си
• Основной клиентский интерфейс
• Входит в стандартную поставку постгреса
● C++, Perl, Python, Tcl and ECPG
● JDBC
Клиент-сервер
Системный каталог
TODO
● DROP OPERATOR не учитывает зависимость
oprnegate.
Подсистемы СУБД
1. Транзакционное хранилище
2. Обработка запросов
3. Обеспечение сохранности данных
Tuple
MVCC
VACUUM
64-bit XID
«File names are infinite in length where
infinity is set to 255 characters.»
Peter Collinson,
«The Unix File System»
Страничное хранение
Файловое хранение
Методы доступа
Shared memory
Перспективы
● Расширяемость методов доступа
• Размер блоков
• Структура файлов
● Таблицы в памяти
● Приоритеты для avtovacuum
Выполнение запроса
Parser
Выполнение запроса
Planner/optimizer
● Построение всех путей выполнения запроса и
выбор наилучшего
● Улучшение сбора статистики
● Машинное обучение для оценки планов
● GEQO
● Hints?
Plan tree
SELECT DISTINCT a1, b1 FROM a, b  
WHERE a2=b2 AND a3=43;
Executor
● Параллельное выполнение
● Возможность отображать прогресс выполнения
● Hooks
WAL
● Журнал опережающей записи
● pg_xlog
● checkpoint
● PITR (Point In Time Recovery)
● Репликация
Перспективы
● Обобщенный WAL для новых методов доступа
● Проверка корректности бэкапа
● Инкрементальный бэкап?
Термины
● Tuple (кортеж) — физическое представление строки таблицы
● MVCC — система контроля версионности записей в базе
● Page (страница) — единица чтения/записи на диск. 8Кб
● Relation (отношение) — объект базы данных (таблица,
индекс). Странично-ориентированное хранение
● Block (блок) — 2^32 - 1 блоков на relation
● Buffer (буфер) — страница, находящаяся в данный момент в
памяти
● Shared buffers — разделяемая память, кэш страниц
● Node (нода) — узел дерева разбора
● Write-ahead log - журнал опережающей записи
На следующем занятии
● как устроено сообщество PostgreSQL
● как координируется международная
разработка
● какие шаги нужно пройти, чтобы ваш патч
приняли
● обзор инструментов, которыми нужно уметь
пользоваться разработчику PostgreSQL
www.postgrespro.ru
Спасибо за внимание!
Вопросы?
Hacking PostgreSQL
25.02.2016
Источники
● Heikki Linnakangas. PostgreSQL System Architecture. 2014.
https://youtu.be/UdlQ7bZUZ9w +
http://2014.pgday.ru/files/presentations/PGDay14.Russia.PostgreSQL.architec
ture.Heikki.Linnakangas.pdf
● Tom Lane. A tour of PostgreSQL Internals. 2000.
http://www.postgresql.org/files/developer/tour.pdf
● Backend Flowchart. http://www.postgresql.org/developer/backend/
● DOCS. Overview of PostgreSQL Internals. 9.5
http://www.postgresql.org/docs/9.5/static/overview.html
● Документация. Обзор внутреннего устройства PostgreSQL. 9.4.
http://postgrespro.ru/doc/overview.html
● Dave Thomas. Overview of Postgres Utility Processes. 2013.
http://www.slideshare.net/EnterpriseDB/overviewutilityprocesses-finalaug2220
13
● Владимир Бородин. Базы данных: PostgreSQL. 2014.
https://events.yandex.ru/lib/talks/2324/
● Фёдор Сигаев. Архитектура , устройство и особенности PostgreSQL. 2015.
● Для любителей истории - статьи М.Стоунбрейкера.
http://www.postgresql.org/docs/9.5/static/biblio.html

More Related Content

PDF
Советы для начинающих разработчиков PostgreSQL
Anastasia Lubennikova
 
PDF
Hacking PostgreSQL. Обзор исходного кода
Anastasia Lubennikova
 
PDF
Расширения для PostgreSQL
Anastasia Lubennikova
 
PDF
pgconf.ru 2015.avito postgresql recovery
Михаил Тюрин
 
PDF
pgconf.ru 2015 avito postgresql
Михаил Тюрин
 
PDF
PostgreSQL в высоконагруженных проектах
Alexey Vasiliev
 
ODP
Scaling PostgreSQL
Дмитрий Васильев
 
PDF
Беспроблемная эксплуатация PostgreSQL
Дмитрий Васильев
 
Советы для начинающих разработчиков PostgreSQL
Anastasia Lubennikova
 
Hacking PostgreSQL. Обзор исходного кода
Anastasia Lubennikova
 
Расширения для PostgreSQL
Anastasia Lubennikova
 
pgconf.ru 2015.avito postgresql recovery
Михаил Тюрин
 
pgconf.ru 2015 avito postgresql
Михаил Тюрин
 
PostgreSQL в высоконагруженных проектах
Alexey Vasiliev
 
Беспроблемная эксплуатация PostgreSQL
Дмитрий Васильев
 

What's hot (20)

PDF
PostgreSQL on sas/ssd/nvme/nvdimm
Дмитрий Васильев
 
PPTX
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Ontico
 
PDF
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Ontico
 
PDF
Avito Stachka 2012
Roman Pavlushko
 
PDF
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Roman Pavlushko
 
PDF
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Ontico
 
PDF
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Ontico
 
PDF
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Ontico
 
PDF
SphinxSearch Meetup - Tips&tricks
Roman Pavlushko
 
PDF
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Dev_Party
 
PDF
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Ontico
 
PDF
Владимир Бородин - PostgreSQL
Yandex
 
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 
PDF
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Ontico
 
PDF
Перевод новостного приложения на БД PostgreSQL
Dmitry Kremer
 
PDF
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PDF
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
 
PDF
Streaming replication in practice
Alexey Lesovsky
 
PostgreSQL on sas/ssd/nvme/nvdimm
Дмитрий Васильев
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Ontico
 
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Ontico
 
Avito Stachka 2012
Roman Pavlushko
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Roman Pavlushko
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Ontico
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Ontico
 
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Ontico
 
SphinxSearch Meetup - Tips&tricks
Roman Pavlushko
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Dev_Party
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Ontico
 
Владимир Бородин - PostgreSQL
Yandex
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Ontico
 
Перевод новостного приложения на БД PostgreSQL
Dmitry Kremer
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
 
Streaming replication in practice
Alexey Lesovsky
 

Viewers also liked (20)

ODP
Hacking PostgreSQL. Физическое представление данных
Anastasia Lubennikova
 
PDF
Hacking PostgreSQL. Разделяемая память и блокировки.
Anastasia Lubennikova
 
PDF
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Anastasia Lubennikova
 
PDF
PostgreSQL: Advanced indexing
Hans-Jürgen Schönig
 
PDF
Postgres performance for humans
Craig Kerstiens
 
PDF
Архитектура и новые возможности B-tree
Anastasia Lubennikova
 
DOC
2008-2009 AP Syllabus
slr1541
 
PPTX
Making Awesome Experiences with Biosensors
SophiKravitz
 
PPT
Kpi indicator
chamberthomas
 
PDF
Page compression. PGCON_2016
Anastasia Lubennikova
 
PPTX
SalesRev - Boost Your Conversions and Generate More Business Without Spending...
Keith McGibbon
 
PPT
Kpi key
chamberthomas
 
PPT
Kpi process
chamberthomas
 
PPTX
Toyato cars
kaustubr08
 
PDF
Destroying Router Security
Iván Sanz de Castro
 
PPTX
Global warming
Sindhuja Sompalli
 
PDF
Historia de los_satelites_de_comunicaciones._bit_134._5c6c417a
Jesus Ayerve Tuiro
 
PPT
Kpi google analytics
chamberthomas
 
DOC
2011-2012 AmLit Syllabus
slr1541
 
Hacking PostgreSQL. Физическое представление данных
Anastasia Lubennikova
 
Hacking PostgreSQL. Разделяемая память и блокировки.
Anastasia Lubennikova
 
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Anastasia Lubennikova
 
PostgreSQL: Advanced indexing
Hans-Jürgen Schönig
 
Postgres performance for humans
Craig Kerstiens
 
Архитектура и новые возможности B-tree
Anastasia Lubennikova
 
2008-2009 AP Syllabus
slr1541
 
Making Awesome Experiences with Biosensors
SophiKravitz
 
Kpi indicator
chamberthomas
 
Page compression. PGCON_2016
Anastasia Lubennikova
 
SalesRev - Boost Your Conversions and Generate More Business Without Spending...
Keith McGibbon
 
Kpi key
chamberthomas
 
Kpi process
chamberthomas
 
Toyato cars
kaustubr08
 
Destroying Router Security
Iván Sanz de Castro
 
Global warming
Sindhuja Sompalli
 
Historia de los_satelites_de_comunicaciones._bit_134._5c6c417a
Jesus Ayerve Tuiro
 
Kpi google analytics
chamberthomas
 
2011-2012 AmLit Syllabus
slr1541
 

Similar to Hacking PostgreSQL. Обзор архитектуры. (20)

PDF
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
Rais Charipov
 
PDF
Ivan Kotlyar. PostgreSQL in web applications
DrupalSib
 
PDF
20111002 information retrieval raskovalov_lecture3
Computer Science Club
 
PDF
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
Alex Chistyakov
 
PDF
"Новые возможности MySQL 5.7"
Badoo Development
 
ODP
МойСклад, облачный сервис ERP
Oleg Alexeev
 
PDF
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
Омские ИТ-субботники
 
PDF
ORM battle. MyBatis vs Hibernate
Alexey Zinoviev
 
PDF
Олег Бартунов и Иван Панченко
CodeFest
 
PDF
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Dev_Party
 
PDF
кри 2014 elastic search рациональный подход к созданию собственной системы а...
Vyacheslav Nikulin
 
PDF
PostgreSQL Streaming Replication
Alexey Lesovsky
 
PDF
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON
 
PDF
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
Nikolay Samokhvalov
 
PDF
Партицирование и миграции данных на примере PostgreSQL — Денис Иванов, 2ГИС
2ГИС Технологии
 
PDF
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Ontico
 
PDF
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Ontico
 
PDF
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 
PDF
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
Анна Магас
 
PDF
Владислав Грязнов "Многозадачность в PHP"
Fwdays
 
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
Rais Charipov
 
Ivan Kotlyar. PostgreSQL in web applications
DrupalSib
 
20111002 information retrieval raskovalov_lecture3
Computer Science Club
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
Alex Chistyakov
 
"Новые возможности MySQL 5.7"
Badoo Development
 
МойСклад, облачный сервис ERP
Oleg Alexeev
 
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
Омские ИТ-субботники
 
ORM battle. MyBatis vs Hibernate
Alexey Zinoviev
 
Олег Бартунов и Иван Панченко
CodeFest
 
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Dev_Party
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
Vyacheslav Nikulin
 
PostgreSQL Streaming Replication
Alexey Lesovsky
 
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
Nikolay Samokhvalov
 
Партицирование и миграции данных на примере PostgreSQL — Денис Иванов, 2ГИС
2ГИС Технологии
 
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Ontico
 
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Ontico
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
Анна Магас
 
Владислав Грязнов "Многозадачность в PHP"
Fwdays
 

Hacking PostgreSQL. Обзор архитектуры.