@pasha0011

Как высчитать максимальную нагрузку на БД?

Ситуация:

Устраиваем розыгрыш.
По условиям розыгрыша , после выполнения основного задания участнику даётся 1 лотерейный билет.

В базе данных генерируется id_лотерейного_билета и этот id связывается с id_участника_розыгрыша.
При розыгрыше - ставим рандом от цифры 1 до цифры крайнего id_лотерейного_билета
И таким образом мы понимаем кто выиграл приз.

За каждого приглашённого человека по реф ссылке в розыгрыш, участник розыгрыша получает столько же лотерейных билетов сколько у него есть на данный момент.
1билет Х2 итого 2 билета, потом за каждого нового приглашённого реферала участнику будет прилетать 2,4,8,16,32 и тд

Но есть проблема!
Когда участник розыгрыша пригласит 21-го человека - он получит 1.048.576 лотерейных билетов.

Это в базу данных нужно сгенерировать и записать 1млн строк в формате:
id_лотерейного_билета
id_участника_розыгрыша

собственно вопрос, как высчитать сколько данная операция будет потреблять ресурсов?
что б потом можно было понять сколько нужно будет времени на том или ином железе для выполнения данной операции.

возможно я вообще не в том направлении думаю и есть какие-то другие решения как это можно сделать)
_____________________________________
по поводу убрать х2, и добавить фиксированную "награду" - это можно, но это убьет мотивацию участников приглашать друзей. так как с каждым приглашением растут ставки и растет азарт.
тут есть масса вариаций как это можно изменить... к примеру, оставить Х2 до определенного значения, или давать на 10 билетов больше чем в прошлый раз...

но главный вопрос как же можно просчитать нагрузку по ресурсам)
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Шанс выигрыша определяется не номерами билетов, а исключительно их количеством. Так что никакого смысла генерировать и хранить номера нет. Достаточно добавлять нужное количество билетов пользователю.
Ответ написан
@rPman
номер лотерейного билета можно выдавать каким-либо детерминированным алгоритмом, формирующим номер по его позиции
тогда у пользователя можно хранить номера билетов интервалами (выданы билеты с номерами a+n...a+n*2), сам же список лотерейных билетов не обязательно хранить в базе данных

на время раздачи крутится сервис, раздающий последовательно номера (интервалами) пусть даже для этого тратит память, какой-нибудь полурекурсивный алгоритм перестановки, собственно это и есть вопрос, как его красиво реализовать

записывать же в базу данных 2^100500 чисел - неразумная трата ресурсов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы