?

Log in

No account? Create an account
official

Заводы стоят, одни мордоляпы в стране!


Previous Entry Share Next Entry
winter kaktus

Технология репостинга

Прочитал у Промыча об изменениях в механизмах рассчета вознаграждения за платные репосты. В целом я согласен с его выводами, однако сейчас разговор не об этом, а о технологии. В оригинале анонса, в частности, говорится, что:

«Теперь репостер будет получать кол-во жетонов, соответствующее новой аудитории, которую он привносит автору поста.».

И эта строка вызвала у меня некоторый ступор. Вы знаете, я люблю честный, научный подход и недолюблюваю магию. Но тут я не очень хорошо понимаю как без нее обойтись.

Вот есть два репостера, назовем их Вася и Петя. Оба разместили один и тот же репост. Если к ним в журнал зайдет какой-либо другой пользователь, и увидит исходный пост, то тут все понятно. К кому зашли, тот аудиторию и принес. А вот если пользователь, например, Колян, зашел в журнал к обоим репостерам? Кому добавится плюсик? Васе, кто первым разместил репост, или Пете, к которому Колян зашел первым?

Кроме того, я все еще наивно полагаю (видимо, потому что сам так делаю), что подавляющее большинство пользователей читает друзей через ленту. И тут ситуация осложняется до безобразия. Есть десять читателей. У каждого из них в друзьях по пять репостеров. Читатели дружно открывают ленту, и видят по пять одних и тех же репостов. Вопрос к залу, кому из пяти репостеров засчитают всю эту читательскую аудиторию? Как ее делить-то? Каждому по два? Или как-то иначе?

Кто-нибудь может объяснить мне, как же все-таки будет рассчитываться эта «новая аудитория» от которой напрямую зависит доход репостера?

UPD. acer_leaf и fukuro_raw прояснили ситуацию. Считаться будут не реальные читатели, просмотревшие пост, а потенциальные. То есть все френды репостера, минус френды всех предыдущих репостеров. И это совсем не здорово. Если репост сделает массфрнедер, то остальные репостеры не получат практически ничего. И я, как репостодатель в минусе, потому что профессиональных массфрендеров-репостеров по доброй воле никто не читает. В итоге и я плачу деньги вообще непонятно за что, и честные репостеры лишаются заработка.

UPD2. Ан нет, все не так плохо. sergey_45i приводит ссылку на разъяснения от администрации. Видимо для каждого репостера будет строиться список его читателей, которые учитыватались при расчете его СК, скажем за вчера. И из этого списка будут удалятся аналогичные читатели предыдущих репостеров. Тогда, при неограниченном бюджете, первый репостер получает вознаграждение как и раньше, по формуле, а все остальные за своих читателей, делающих им СК, кроме тех из них, которые учитывались при рассчете СК всех предудущих репостеров.

Тогда при минимальных ставках в 200 жетонов, для репостеров скорее всего ничего не изменится. Даже при СК = 100 уникальных читателей должно хватить, чтобы получить 200 жетонов будучи десятым в очереди. А вот репостодателям придется слегка расширить свои бюджеты. Но это не так уж и страшно, на промо уходит все равно гораздо больше.

А ленты действительно станут чище.

UPD3. Черт, я забыл про снятие ограничений по СК! Вот это реально засада. Я абсолютно не готов платить по 200 жетонов за единственное посещение репостера с СК = 20. Все равно от него читать мой пост никто не придет.

С техническими вопросами разобрались, но особой радости я по этому поводу не испытываю.

Buy for 100 tokens
Buy promo for minimal price.

  • 1
brenik March 9th, 2013
одно только но, несколько одновременных репостов разных постов это раз.
плюс цифра должна пересчитываться каждому кто на неё смотрит, а это может быть не одна сотня глаз. и для каждого должна сработать процедура, сселектить, проинсертить, вычислить, потом почистить после себя таблицу. а несколько из этой сотни человек ещё и усиленно жмут Ф5.

а это согласись уже совсем другая нагрузка. ой не всё так просто.

vmenshov March 9th, 2013
Не по каждому, а только по тому, у кого СК > 19, и кто еще эту страницу с момента последнего репоста не видел. Это достаточно малая часть запросов страницы. Если читатель с СК > 19 запись уже видел, то данные берутся из кэша. Если мимо кэша попали, то списки френдов просматривающего из первой таблицы берем по индексу, списки уже "занятых" френдов берем из "друзей поста", Вычитаем из второго списка первый, и получаем нужную цифру.

Если же читатель с СК > 19 нажал на кнопку репоста, то просто добавляем в таблицу "друзья поста" новых друзей пользователя и инвалидируем кэши по этому посту. Эти операции быстрые, так как все списки френдов отсортированы по Id, и содержат только интовые Id.

К тому же кнопка репоста грузится отдельным аяксовским запросом, пост показывается куда раньше нее. То есть те, кому репосты не интересны - вообще не увидят задержки, а кому нужна только кнопка, подождут немного, если что влруг затормозит.

brenik March 9th, 2013
таблица "друзья поста" некисло вырастет со временем.
всё зависит насколько это малая часть таких запросов будет.
что то мне подсказывает что несколько десятков могут уже вызывать задержку небольшую.
если будет меньше, то проблем не будет.

вобщем если денежду на кнопку поставит olegfreedom или Игрик, то тормоза обеспечены с их аудиторией.
возможно СУПу придётся повоевать с профессиональными нажимателями Ф5. или введут механизм который нажимателей Ф5 будет сдерживать.

vmenshov March 9th, 2013
F5 не приведет к тормозам если есть кэш. С большой вероятностью между нажатиями ничего не изменится.

Так же я редко видел посты с количеством репостов больше 30-ти. Если взять средний СК репостера в 200, то в таблице "друзья поста" на каждый такой пост с 30-ю репостами будет всего 6000 записей, это если у всех репостеров френды уникальные. В реальности их будет гороздо меньше.

Даже если представить себе теоретический максимум записей на один пост в таблице "друзья поста" - это будет distinct по первой таблице с СК-образующими френдами. Я уверен там будет уйма повторов, и дистинкт уменьшит количество записей из первой таблице раз в десять точно, а то и больше. То есть при 11443-х репостах мы получим всего 130 000 записей.

brenik March 9th, 2013
смотря как будет реализовано. если нажимает на кнопку, а цена поменялась, то вызывается пересчёт. нажимает ф5 в ожидание пополнения бюджета.
6000 записей - для одного вычесления, а для сотни в интервал времени 5 секунд? уже многовато.

distinct даже и не будет иметь смысла если в "друзья поста" будут инсертить только новые уникальные записи.
вычисляться же будут селектом minus или not exists. хотя знавал одних ребят когда такое через циклы и курсоры крутили. это уже если много доп проверок.
с удовольствием бы посмотрел код :)

brenik March 13th, 2013
ну и как тебе сегодняшние тормоза в ЖЖ. Некоторые страницы до 5 минут открываются.
кнопки репоста можно ждать долго.
вобщем теоретически быстро, а на практике жопа получается...

vmenshov March 13th, 2013
Так еще же не ввели новую схему.

brenik March 13th, 2013
что то явно уже ввели что так тормозит. мы видим одно, а что там внутри ещё та загадка.
говорят что завтра заработает, хотя кто его знает.
с нового года так не тормозил. даже кратковременные отказы были...

vmenshov March 13th, 2013
Может гоняют создание предварительных таблиц расчета перед вводом.

brenik March 13th, 2013
так создание таблиц не проблема, а вот перенос данных может создавать такую нагрузку.
может опять что то ушло и востанавливают из резервных баз. а может переносят данные на бд нового релиза. потому иногда отказы страниц происходят...

vmenshov March 13th, 2013
Я как раз и имел в виду не само создание таблиц, а переливку в них данных по всем активным френдам всего ЖЖ :)

brenik March 13th, 2013
странная процедура для 13 числа :)

vmenshov March 13th, 2013
Перед вводом новой версии репостинга - самое оно :)

  • 1