![Page 1: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/1.jpg)
Социальная сеть, которая просто работает
![Page 2: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/2.jpg)
В начале
● Нерабочая схема.
● Отсутствие готовой функциональности.
● Жуткие тормоза в базе.
● MySQL.
![Page 3: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/3.jpg)
Что делать?
– Нет.
![Page 4: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/4.jpg)
![Page 5: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/5.jpg)
Наш ответ
![Page 6: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/6.jpg)
● Рекомендательный сервис
● Система премирования
● Полнотекстовый поиск
Сложные задачи и их решения
![Page 7: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/7.jpg)
● Обновлять рекомендации не реже раза в сутки.
● Минимально возможная нагрузка на сервер.
● Динамичность рекомендаций для каждого пользователя.
● Процент вероятности, что рекомендация близка пользователю.
● Дополнительный расчет рекомендаций, по данным из профиля.
Рекомендательный сервисОсновные требования
![Page 8: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/8.jpg)
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, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/9.jpg)
● Скорость работы в пределах 100мс на пользователя.
Анализ решения на PostgreSQL
● Возможность распределять выполнение по времени.
● Динамический поиск вхождений.
● Подсчет процента вероятности, с которой пользователю понравится рекомендация.
● Расчет дополнительных рекомендаций на основе данных из профиля пользователя.
![Page 10: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/10.jpg)
● Транзакционность.
Система премированияОсновные требования
● Возможность ручного начисления.
● Автономное формирование групповых начислений, по результатам накопления групп.
● Обновление баланса в режиме реального времени.
● История начислений.
● Распределение нагрузки.
![Page 11: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/11.jpg)
Решение на PostgreSQL
SP User action EXT mbus SP Processing
SP withdraw SP deposit
Store in DB
SP collect groups
![Page 12: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/12.jpg)
● Отказоустойчивость.
● Асинхронная работа (отсутствие нагрузки).
● Легкий рефакторинг логики.
● Повторное использование атомарных операций.
● Реализованы все требования.
Анализ работы решения
![Page 13: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/13.jpg)
● Быстрый поиск данных.
● Возможность масштабирования.
● Ранжирование результатов.
● Поиск по разным критериям.
● Высокая скорость индексации.
Полнотекстовый поискТребования
![Page 14: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/14.jpg)
Обычно У нас
Противопоставление технологий
![Page 15: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/15.jpg)
● Стабильность решения.
● Возможность масштабирования.
● Приемлемая скорость работы.
● Ожидаемая нагрузка на сервер.
● А почему бы и нет?
Почему PostgreSQL?
![Page 16: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/16.jpg)
DB server
MAIN DBsync
На начальном этапе развития проекта
Схема работы
DATA PREPAREDfor search
search request
![Page 17: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/17.jpg)
DB server DB server
sync
Как может работать?При необходимости
Main DB DATA PREPAREDfor search
search request
![Page 18: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/18.jpg)
Data prepared for search
Indexes (gin) Tsearch2(full text engine)
Optimized SP(5 search layers in one)
![Page 19: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/19.jpg)
● Скорость работы.
Плюсы
● Незначительные.
Минусы
● Быстрое внесение изменений.
● Отсутствие неконтролируемого роста запросов.
● Транзакционность.
● Встроенные решения конкурентного доступа.
Логика в базе
![Page 20: PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль](https://reader037.vdocuments.pub/reader037/viewer/2022100406/557f363dd8b42a46658b5103/html5/thumbnails/20.jpg)
Ваши вопросы?