1: Масштабируемая система голосования на базе PostgreSQL PgQ Сергей Нековаль «Грамант»
2: План доклада Обзор PgQ Как мы используем PgQ Pros & Cons
3: Вступление
4: Что нужно?
5: События
6: Где тут голосование?
8: В наличии на 2008 год: Суммирование голосов с помощью файлов Рейтинги обсчитываются раз в день БД перегружена, статистика запаздывает
9: «Китайский» вариант
10: Что делать?
12: Skytools Разработка компании Skype Open Source Репликация: Londiste Очереди: PGQ
13: PgQ to the rescue Предоставляет API для работы с очередью Хранит данные в event tables Можно передавать любые данные в событии Ориентирован на обработку множества событий (batch)
14: Компоненты PgQ
15: Ticker Ротация таблиц Формирование batches Контроль доставки batches Обработка retry-событий
16: Consumer API для SQL, Python, PHP, Java Обрабатывает не события, а пачки
17: В чем польза PgQ Транзакционность (ничего не пропадает) Асинхронность (регулируется нагрузка) Consumer логически отделен от БД Простота мониторинга (все в БД)
18: Голосование с помощью PGQ
19: Новый вариант
20: Сохраняем структуру БД Сохраняем структуру БД Front-End (PHP) становится producer-ом На каждый чих в очередь заносится событие Memcache: статистика рейтинги
22: Тюнинг очередей tickermaxlag (время) ticketmaxcount (число)
23: Система как трубопровод
25: Disk I/O
26: Производительность Vacuum fsync off Asynchronous commit
27: Асинхронность Где подвох? Результат часто нужен немедленно
28: Куда расти? Отделение исторических таблиц Несколько БД с очередями Skytools 3 cooperative consumers Предварительное суммирование
29: Pitfalls Нельзя узнать длину очереди! Нельзя очистить очередь! Текстовый формат событий Документация аскетична
30: Вопросы? snekovalgramant. ru
31: Бонусный слайд Consumer: lag, lastseen