42

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

  • Upload
    yandex

  • View
    238

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Владимир Бородин - PostgreSQL
Page 2: Владимир Бородин - PostgreSQL

Владимир БородинСистемный администратор

PostgreSQL

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

3

Черновой список тем для КИТ 5

• Универсальная реляционная транзакционная СУБД Oracle

• Легковесная реляционная высокопроизводительная СУБД MySQL

• PostgreSQL

• Документо-ориентированная горизонтально масштабируемая NoSQL СУБД MongoDB

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

4 The world's most advanced open source database

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

5

Немного истории

• С 1973 года Ingres (Стоунбрейкер и Вон)

• С 1986 года Postgres (Post Ingres)

• В 1997 году Postgres95 переименован в PostgreSQL

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

6 Архитектура PostgreSQL

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

7 Postmaster

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

8 Backend. Чтение данных

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

9 Backend. Запись данных

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

10 Backend. Обработка запроса

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

11 Checkpointer

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

12 Startup process

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

13 Autovacuum

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

14 Bgwriter

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

15

Дополнительные процессы

• WAL writer

Не трогают разделяемую память:

• Stats collector

• Logging collector

• WAL archiver

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

Feature set

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

17

Надёжность

• Зрелая СУБД

• Отличная кодовая база

• Грамотная архитектура

• Community

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

18

Отказоустойчивость

• Write ahead logging

• Crash recovery

• Поточная репликация:– Асинхронная/синхронная– Каскадная

• Логическая репликация (с 9.4)

• Горячие бэкапы

• PITR

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

19 Масштабирование. Postgres-XL

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

20 Масштабирование. PL/Proxy

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

21

Производительность

• MVCC

• Процессная модель хорошо масштабируется на много процессоров/ядер

• Легко убивает дисковую подсистему

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

22 Производительность на нашей нагрузке

• Oracle– 12K rps– CPU

• PostgreSQL– 3K rps– I/O

• MySQL– 1K rps– I/O

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

23

Совместимость

• Совместимость с ANSI SQL:2011

• Честный ACID

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

24

Расширяемость

• Операторы

• Типы данных

• Функции

• Access methods

• Процедурные языки

• Индексы

• Расширения

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

25

Типы данных

• Стандартные

• Геометрические (points, lines, boxes, paths, polygons, …)

• Сетевые адреса (inet, cidr, macaddr)

• UUID

• JSON

• Композитные типы

• Range-типы

• ARRAY

• Битовые строки

• Текстовый поиск (tsvector, tsquery)

• ISBN

• XML

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

26

Процедурные языки

• PL/pgSQL

• PL/Tcl

• PL/Perl

• PL/Python

• PL/Java

• PL/PHP

• PL/Py

• PL/R

• PL/Ruby

• PL/Scheme

• PL/sh

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

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)

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

28

Foreign data wrappers

• PostgreSQL

• Oracle

• MongoDB

• MySQL

• Redis

• Neo4j

• File

• ODBC/JDBC

• Hadoop

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

29

contrib

• pg_stat_statements

• pg_buffercache

• pg_prewarm

• pgbench

• pg_upgrade

• autoexplain

• pg_crypto

• pg_rewind

• ...

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

30

Другие особенности

• Table inheritance– Так работает partitioning– http://www.postgresql.org/message-id/[email protected]

• Event system (LISTEN/NOTIFY)

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

31 Сравнение с другими СУБД. Разработка

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

32 Сравнение с другими СУБД. Поддерживаемые платформы

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

33 Сравнение с другими СУБД. Фундаментальные возможности

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

34 Сравнение с другими СУБД. Ограничения

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

35 Сравнение с другими СУБД. Таблицы и представления

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

36 Сравнение с другими СУБД. Индексы

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

37 Сравнение с другими СУБД. Database capabilities

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

38 Сравнение с другими СУБД. Другие объекты

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

39 Сравнение с другими СУБД. Партиционирование

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

40 Сравнение с другими СУБД. Контроль доступа

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

41

Почитать

• http://www.postgresql.org/docs/current/static/index.html

• find src -name README

• http://www.postgresql.org/about/featurematrix/

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

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

Системный администратор

+7 495 739-70-00 (доб. 7255)

[email protected]

119021, Москва, ул. Льва Толстого, 18Б

Спасибо