Postgres. Начало.
Кто использует
Инструменты
● PhpStorm, PyCharm, DataGrip
● Sublime Text, Atom, vim
● PgAdmin3
● PhpPGAdmin/pgAdmin4
● psql
Psql
Репликация
Оптимизатор запросов
● Оптимизатор всегда прав
● Множество индексов
● Понятный анализатор
Типы данных
● Числовые, символьные, бинарные,
дата/время/интервал
● Перечисления, сетевые адреса, битовые
маски, UUID, денежный
● JSON, XML, массивы, составные
● Геометрические (PostGIS)
● Пользовательские типы
Расширения
● Встроенные функции для работы с
массивами, словарями, JSON
● PostGIS
● PostgREST
● PL/pgSQL, PL/Python, PL/V8, PL/PHP,
PL/Java…
Внешние источники данных
DDL
● Транзакционный DDL
● Неблокирующие индексы
● Частичные индексы
● Индексируемый JSON
● Наследование таблиц
Ограничение прав пользователей
● Авторизация через LDAP, Radius, PAM, SSL
● Пользователи, группы, роли
● Row level security
pg_hba.conf < host all all 0.0.0.0 trust
Autovacuum
rownum id airpost_code airport_name
62940582 14 DME Домодедово
62940583 15 DYR Анадырь
62940584 16 EGO Белгород
Autovacuum
rownum id airpost_code airport_name
62940582 14 DME Домодедово
62940583 15 DYR Анадырь
62940584 16 EGO Белгород
62940585 15 AND Анадырь
Autovacuum
rownum id airpost_code airport_name
62940582 14 DME Домодедово
62940583 15 DYR Анадырь
62940584 16 EGO Белгород
62940585 15 AND Анадырь
Index
Postgres Pro
● Полностью переведённая документация —
https://postgrespro.ru/docs.
● Становимся контрибьютером -
https://habrahabr.ru/company/postgrespro/blog/308442/
● Hacking Postgres -
https://postgrespro.ru/education/courses/hacking
● Курсы по администрированию -
https://postgrespro.ru/education/courses/DBA1 и
https://postgrespro.ru/education/courses/DBA2
● Планы разработок - https://postgrespro.ru/roadmap
Недостатки
● Отсутствие пула соединений
● Скорость записи
● Отсутствие поддержки на хостинге или в
CMS
Где НЕ надо использовать
● Кэширование
● Брокер сообщений
● Сбор логов
● Не нужны транзакции, внешние ключи,
полнотекстовый поиск...
● Если ваши инструменты не поддерживают
postgres
Ссылки
● 7 баз данных за 7 недель - http://www.ozon.ru/context/detail/id/19383907/
● CAP-теорема - https://habrahabr.ru/post/130577/
● Блокировки в MongoDB - https://docs.mongodb.com/manual/faq/concurrency/
● Eventually consistent - https://habrahabr.ru/post/100891/
● Riak - https://habrahabr.ru/post/75202/
● PHP PDO - https://habrahabr.ru/post/137664/
● Список GUI - https://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools
● Работаем с Postgres из psql - https://tyvik.ru/blog/247
● PostgreSQL vs MySQL - https://habrahabr.ru/company/mailru/blog/248845/
● Асинхронная репликация без цензуры - https://habrahabr.ru/company/oleg-bunin/blog/313594/
● Сага о кластере - https://habrahabr.ru/company/oleg-bunin/blog/312494/
● Шардинг и репликация - http://eax.me/stolon/ и http://eax.me/sharding/
● Uber перешёл на MySQL - https://yarfullstack.com/post/2016-07/Uber-Postgres+MySQL/
● Oracle расказывает о недостатках Postgres - https://geektimes.ru/post/272818/
● Из Oracle да в Postgres - https://habrahabr.ru/post/216057/
● Доклады с HighLoad++ - https://habrahabr.ru/company/oleg-bunin/blog/268485/
Вопросы?

Postgres

  • 1.
  • 3.
  • 4.
    Инструменты ● PhpStorm, PyCharm,DataGrip ● Sublime Text, Atom, vim ● PgAdmin3 ● PhpPGAdmin/pgAdmin4 ● psql
  • 9.
  • 11.
  • 12.
    Оптимизатор запросов ● Оптимизаторвсегда прав ● Множество индексов ● Понятный анализатор
  • 13.
    Типы данных ● Числовые,символьные, бинарные, дата/время/интервал ● Перечисления, сетевые адреса, битовые маски, UUID, денежный ● JSON, XML, массивы, составные ● Геометрические (PostGIS) ● Пользовательские типы
  • 14.
    Расширения ● Встроенные функциидля работы с массивами, словарями, JSON ● PostGIS ● PostgREST ● PL/pgSQL, PL/Python, PL/V8, PL/PHP, PL/Java…
  • 15.
  • 16.
    DDL ● Транзакционный DDL ●Неблокирующие индексы ● Частичные индексы ● Индексируемый JSON ● Наследование таблиц
  • 17.
    Ограничение прав пользователей ●Авторизация через LDAP, Radius, PAM, SSL ● Пользователи, группы, роли ● Row level security pg_hba.conf < host all all 0.0.0.0 trust
  • 18.
    Autovacuum rownum id airpost_codeairport_name 62940582 14 DME Домодедово 62940583 15 DYR Анадырь 62940584 16 EGO Белгород
  • 19.
    Autovacuum rownum id airpost_codeairport_name 62940582 14 DME Домодедово 62940583 15 DYR Анадырь 62940584 16 EGO Белгород 62940585 15 AND Анадырь
  • 20.
    Autovacuum rownum id airpost_codeairport_name 62940582 14 DME Домодедово 62940583 15 DYR Анадырь 62940584 16 EGO Белгород 62940585 15 AND Анадырь Index
  • 21.
    Postgres Pro ● Полностьюпереведённая документация — https://postgrespro.ru/docs. ● Становимся контрибьютером - https://habrahabr.ru/company/postgrespro/blog/308442/ ● Hacking Postgres - https://postgrespro.ru/education/courses/hacking ● Курсы по администрированию - https://postgrespro.ru/education/courses/DBA1 и https://postgrespro.ru/education/courses/DBA2 ● Планы разработок - https://postgrespro.ru/roadmap
  • 22.
    Недостатки ● Отсутствие пуласоединений ● Скорость записи ● Отсутствие поддержки на хостинге или в CMS
  • 23.
    Где НЕ надоиспользовать ● Кэширование ● Брокер сообщений ● Сбор логов ● Не нужны транзакции, внешние ключи, полнотекстовый поиск... ● Если ваши инструменты не поддерживают postgres
  • 24.
    Ссылки ● 7 базданных за 7 недель - http://www.ozon.ru/context/detail/id/19383907/ ● CAP-теорема - https://habrahabr.ru/post/130577/ ● Блокировки в MongoDB - https://docs.mongodb.com/manual/faq/concurrency/ ● Eventually consistent - https://habrahabr.ru/post/100891/ ● Riak - https://habrahabr.ru/post/75202/ ● PHP PDO - https://habrahabr.ru/post/137664/ ● Список GUI - https://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools ● Работаем с Postgres из psql - https://tyvik.ru/blog/247 ● PostgreSQL vs MySQL - https://habrahabr.ru/company/mailru/blog/248845/ ● Асинхронная репликация без цензуры - https://habrahabr.ru/company/oleg-bunin/blog/313594/ ● Сага о кластере - https://habrahabr.ru/company/oleg-bunin/blog/312494/ ● Шардинг и репликация - http://eax.me/stolon/ и http://eax.me/sharding/ ● Uber перешёл на MySQL - https://yarfullstack.com/post/2016-07/Uber-Postgres+MySQL/ ● Oracle расказывает о недостатках Postgres - https://geektimes.ru/post/272818/ ● Из Oracle да в Postgres - https://habrahabr.ru/post/216057/ ● Доклады с HighLoad++ - https://habrahabr.ru/company/oleg-bunin/blog/268485/
  • 25.