pg day'14 russia, Социальная сеть, которая просто работает,...

20

Click here to load reader

Upload: pgdayrussia

Post on 16-Jun-2015

191 views

Category:

Software


1 download

DESCRIPTION

Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL. Социальная сеть является классическим примером продукта, создаваемого людьми, движет которыми желание использовать как можно больше новомодных технологий. О последствиях, естественно, никто не задумывается. К счастью, в нужный момент было принято решение отказаться от части подобных новшеств и использовать старый-добрый PostgreSQL для создания сервиса. Казалось бы, нет ничего хуже, чем реляционная база, для разработки социальной сети? Всем ведь хорошо известно, что типичная стратегия расширения подобного продукта заключается в горизонтальном “шардинге”, денормализации, многоуровневых слоях кеширования и прочих вещах, с которым реляционная СУБД не очень дружит. Тем не менее, в Rubuki.com мы решили пойти наперекор трендам и сделать такую социальную сеть, где используется Rails без ORM, бизнес-логика живет в базе данных, и пользователи каждый день получают корректно отсортированную по дате появления событий новостную ленту (привет, Facebook!). На примере реализации таких компонентов как полнотекстовый поиск, рекомендательный сервис и сервис премирования, я расскажу о нюансах разработки сети, успехах и проблемах, с которыми мы столкнулись.

TRANSCRIPT

Page 1: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

Социальная сеть, которая просто работает

Page 2: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

В начале

● Нерабочая схема.

● Отсутствие готовой функциональности.

● Жуткие тормоза в базе.

● MySQL.

Page 3: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

Что делать?

– Нет.

Page 4: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль
Page 5: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

Наш ответ

Page 6: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

● Рекомендательный сервис

● Система премирования

● Полнотекстовый поиск

Сложные задачи и их решения

Page 7: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

● Обновлять рекомендации не реже раза в сутки.

● Минимально возможная нагрузка на сервер.

● Динамичность рекомендаций для каждого пользователя.

● Процент вероятности, что рекомендация близка пользователю.

● Дополнительный расчет рекомендаций, по данным из профиля.

Рекомендательный сервисОсновные требования

Page 8: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

user B

user C

user D

Rрек = (SUb + SUc + SUd) - SUa; Ecount = 3;

Params from user profile

Books with params

Recommendations

+E

Решение

user A

Page 9: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

● Скорость работы в пределах 100мс на пользователя.

Анализ решения на PostgreSQL

● Возможность распределять выполнение по времени.

● Динамический поиск вхождений.

● Подсчет процента вероятности, с которой пользователю понравится рекомендация.

● Расчет дополнительных рекомендаций на основе данных из профиля пользователя.

Page 10: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

● Транзакционность.

Система премированияОсновные требования

● Возможность ручного начисления.

● Автономное формирование групповых начислений, по результатам накопления групп.

● Обновление баланса в режиме реального времени.

● История начислений.

● Распределение нагрузки.

Page 11: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

Решение на PostgreSQL

SP User action EXT mbus SP Processing

SP withdraw SP deposit

Store in DB

SP collect groups

Page 12: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

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

● Асинхронная работа (отсутствие нагрузки).

● Легкий рефакторинг логики.

● Повторное использование атомарных операций.

● Реализованы все требования.

Анализ работы решения

Page 13: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

● Быстрый поиск данных.

● Возможность масштабирования.

● Ранжирование результатов.

● Поиск по разным критериям.

● Высокая скорость индексации.

Полнотекстовый поискТребования

Page 14: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

Обычно У нас

Противопоставление технологий

Page 15: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

● Стабильность решения.

● Возможность масштабирования.

● Приемлемая скорость работы.

● Ожидаемая нагрузка на сервер.

● А почему бы и нет?

Почему PostgreSQL?

Page 16: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

DB server

MAIN DBsync

На начальном этапе развития проекта

Схема работы

DATA PREPAREDfor search

search request

Page 17: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

DB server DB server

sync

Как может работать?При необходимости

Main DB DATA PREPAREDfor search

search request

Page 18: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

Data prepared for search

Indexes (gin) Tsearch2(full text engine)

Optimized SP(5 search layers in one)

Page 19: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

● Скорость работы.

Плюсы

● Незначительные.

Минусы

● Быстрое внесение изменений.

● Отсутствие неконтролируемого роста запросов.

● Транзакционность.

● Встроенные решения конкурентного доступа.

Логика в базе

Page 20: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль

Ваши вопросы?