Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,672 views

Published on

Hacking PostgreSQL. Лекция 1. Вводная лекция для начинающих разработчиков ядра PostgreSQL. Видео и площадка для обсуждения в блоге http://postgres-edu.blogspot.ru/2016/02/20160225.html

Published in: Data & Analytics
  • Be the first to comment

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

  1. 1. www.postgrespro.ru Обзор архитектуры PostgreSQL Hacking PostgreSQL 25.02.2016
  2. 2. Обо мне ● Index-only scan for GiST ● Microvacuum for GiST ● Write-optimized indexes for PostgreSQL ● B-tree INCLUDING clause ● B-tree. Compression of duplicates
  3. 3. Обо мне ● 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
  4. 4. Цели курса ● Обучение сотрудников ● Обмен опытом среди разработчиков ● Создание обзора кодовой базы PostgreSQL ● Дополнение документации для разработчиков ● Дополнение списка TODO ● Создание книги о внутреннем устройстве PostgreSQL
  5. 5. Организационные вопросы ● Занятия 1 раз в неделю ● http://postgres-edu.blogspot.ru/ ● Практика после 2й лекции ● hacking@postgrespro.ru
  6. 6. Расширяемость PostgreSQL
  7. 7. Клиент-сервер
  8. 8. postgres (postmaster) ● контролирует запуск и остановку сервера ● создает разделяемую память ● при старте порождает служебные процессы ● слушает TCP/IP сокет (порт по умолчанию 5432) в ожидании подключений ● создает форк для каждого подключения • бакенды независимые • коннект дорогой (pgpool, pgbouncer) ● следит за падением бэкендов • при необходимости запускает процесс восстановления
  9. 9. Клиент-серверный протокол ● ● libpq • Библиотека на Си • Основной клиентский интерфейс • Входит в стандартную поставку постгреса ● C++, Perl, Python, Tcl and ECPG ● JDBC
  10. 10. Клиент-сервер
  11. 11. Системный каталог
  12. 12. TODO ● DROP OPERATOR не учитывает зависимость oprnegate.
  13. 13. Подсистемы СУБД 1. Транзакционное хранилище 2. Обработка запросов 3. Обеспечение сохранности данных
  14. 14. Tuple
  15. 15. MVCC
  16. 16. VACUUM
  17. 17. 64-bit XID «File names are infinite in length where infinity is set to 255 characters.» Peter Collinson, «The Unix File System»
  18. 18. Страничное хранение
  19. 19. Файловое хранение
  20. 20. Методы доступа
  21. 21. Shared memory
  22. 22. Перспективы ● Расширяемость методов доступа • Размер блоков • Структура файлов ● Таблицы в памяти ● Приоритеты для avtovacuum
  23. 23. Выполнение запроса
  24. 24. Parser
  25. 25. Выполнение запроса
  26. 26. Planner/optimizer ● Построение всех путей выполнения запроса и выбор наилучшего ● Улучшение сбора статистики ● Машинное обучение для оценки планов ● GEQO ● Hints?
  27. 27. Plan tree SELECT DISTINCT a1, b1 FROM a, b   WHERE a2=b2 AND a3=43;
  28. 28. Executor ● Параллельное выполнение ● Возможность отображать прогресс выполнения ● Hooks
  29. 29. WAL ● Журнал опережающей записи ● pg_xlog ● checkpoint ● PITR (Point In Time Recovery) ● Репликация
  30. 30. Перспективы ● Обобщенный WAL для новых методов доступа ● Проверка корректности бэкапа ● Инкрементальный бэкап?
  31. 31. Термины ● Tuple (кортеж) — физическое представление строки таблицы ● MVCC — система контроля версионности записей в базе ● Page (страница) — единица чтения/записи на диск. 8Кб ● Relation (отношение) — объект базы данных (таблица, индекс). Странично-ориентированное хранение ● Block (блок) — 2^32 - 1 блоков на relation ● Buffer (буфер) — страница, находящаяся в данный момент в памяти ● Shared buffers — разделяемая память, кэш страниц ● Node (нода) — узел дерева разбора ● Write-ahead log - журнал опережающей записи
  32. 32. На следующем занятии ● как устроено сообщество PostgreSQL ● как координируется международная разработка ● какие шаги нужно пройти, чтобы ваш патч приняли ● обзор инструментов, которыми нужно уметь пользоваться разработчику PostgreSQL
  33. 33. www.postgrespro.ru Спасибо за внимание! Вопросы? Hacking PostgreSQL 25.02.2016
  34. 34. Источники ● 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

×