title

text

Юрий Соболев
Юрий Соболев ООО "МедиаТех" Генеральный Директор
12:00 04 февраля

PostgreSQL как ядро биржи интернет-рекламы Adsterra.com

Общая информация об adsterra.com

  • adsterra.com - биржа интернет рекламы
  • В данный момент имеет порядка 150 млн показов баннеров в сутки.120 положение в alexa.com на 30.11.2015. Записывает в postgresql до 10000(и больше) событий в секунду. Читает до 5000
  • 20 отдельных серверов под БД с различными ролями
  • Активно использует логику внутри БД. Много PL/pgsql и SQL функций.

Причины выбора Postgresql

  • История создания adsterra.com.
  • Сжатые сроки отведенные на разработку определили выбор в пользу готовых систем хранения данных.
  • Postgresql привлек своей бесплатностью и рядом фишек, которых не было у конкурентов. Некоторые в итоге оказались полезными, некоторые не очень.

Описание архитектуры проекта

  • Общая схема взаимодействия
  • Роли групп серверов
  • Использование различных методов для взаимодействия серверов: Потоковая репликация, Londiste, postgres_fdw. Плюсы и минусы каждого.
  • Шардинг
  • Использование SQL под OLTP

Проблемы возникшие в ходе разработки/использования и варианты решения:

  • Материализованные представления. Проблемы с обновлением и поддержкой. Что сделали в итоге.
  • Londiste. Какие проблемы были решены в ходе разработки, а какие так и не были.
  • Проблемы потоковой репликации.
  • Автовакум и вакум.
  • Странности планировщика.
  • Конкурентный доступ.

Крутые штуки Postgresql, которые сильно помогли

  • Массивы, intarray и GIN индексы. Но не все гладко.
  • Партиционирование. Но не все есть, что хочется.
  • PL/pgsql. Но не всегда следует его использовать.
  • unlogged таблицы. Но с умом.

Текущие разработки и нерешенные проблемы

  • Реализация колоночной аналитики штатными средствами.
  • Проблемы странных планов запросов.
  • Логическая репликация мечты
  • Мультимастер...

Слайды

Видео

Другие доклады

  • Федор Сигаев
    Федор Сигаев Postgres Professional
    Анастасия Лубенникова
    Анастасия Лубенникова Postgres Professional Разработчик
    Александр Коротков
    Александр Коротков Postgres Professional Руководитель разработки
    180 мин

    Программирование на уровне ядра и расширений PostgreSQL

    На мастер-классе будет рассказано про устройство внутренних интерфейсов PostgreSQL, о том, как их использовать для написания собственных патчей или расширений, и как продвигать результаты своей работы в сообществе. Анастасия Лубенникова — российский разработчик PostgreSQL, уже известный мировому сообществу – работает над курсом «молодого бойца» для программистов PostgreSQL, что уже анонсировалось в Facebook и на Хабре: Hacking PostgreSQL.

    Отдельные части этого курса, подкрепленные многолетним опытом Федора Сигаева и Александра Короткова, составят основу мастер-класса. Мастер-класс рассчитан на программистов, владеющих языком C.

  • Магнус  Хагандер
    Магнус Хагандер PostgreSQL Global Development Group Разработчик и коммиттер

    О структуре и эволюции сообщества PostgreSQL

    В отличие от большинства других баз данных, PostgreSQL разрабатывается сообществом, не компанией и даже не фондом. Те, кто участвуют в этом сообществе уже долгое время, обычно считают это преимуществом, но для людей со стороны, привыкших иметь дело с традиционными организациями, это часто бывает непонятно. Для тех, кто ещё не внутри, вместе с нами, в этом докладе будет рассказано, как работает сообщество PostgreSQL, как взаимодействуют различные группы, а также, как всё это изменилось за последние годы.

  • Pavel  Stehule
    Pavel Stehule

    Хранимые процедуры в PostgreSQL, язык PL/pgSQL

    • Архитектура
    • Дизайн и релизация языка PL/pgSQL
    • Разница между PL/SQL и PL/pgSQL
    • Преимущества и проблемы PL/pgSQL

  • Дмитрий Васильев
    Дмитрий Васильев Postgres Professional Инженер СУБД
    45 мин

    Масштабируемость PostgreSQL

    В докладе рассказывается о результатах тестирования производительности PostgreSQL на современных Hi-End серверах. Основное внимание было уделено блокировкам для доступа к разделяемым данным и связанными с этим узкими местами. Целью тестирования было проверить пределы линейного read scalability при увеличении количества ядер выделяемых для PostgreSQL. Тестирование проводилось для различных версий БД (9.4, 9.5, 9.6), чтобы проверить нововведения, призванные повысить производительность на многопроцессорных архитектурах.