2015-02-09 4 views
2

Я разработчик видеоигр, и я использую Parse.com для своих игр. Благодаря этому я сохраняю счет игроков и продолжительность игры. В конце каждой игровой сессии я показываю статистику сообщества, чтобы позволить игроку увидеть, где его оценка подходит для оценки сообщества.Parse.com: генерировать статистику из большого набора данных

Что-то вида: enter image description here

Как я не эксперт бэкэнд, и я никогда, хотя один из моих мини-игр, будет иметь дело с большим количеством данных, я наивно вычислил эти статистические данные, используя облачный код (функция, предоставляемая Parse.com), позволяющая каждому зачислять запись и создавая диаграмму, составленную из 40 пунктов.

До сих пор я извлек каждый счет из базы данных Parse.com и извлекали следующие данные:

  • max_score (INT): максимальный балл в наборе;
  • баллы (строка): 40 точек от 0 до 1, разделенные запятой, описывающие фактический график;
  • entry_count (int): количество записей в базе данных;
  • средний (поплавок): средний балл набора;

EDIT

точек строка является наиболее важным здесь. Это строка выглядит так:

0.4147,0.286,0.2179,0.1463,0.1106,0.0819,0.0676,0.0458,0.0363,0.0264,0.0206,0.014,0.0096,0.008,0.0063,0.0042,0.0027,0.0025,0.0018,0.0013,0.0008,0.0008,0.0004,0.0005,0.0003,0.0002,0.0002,0.0001,0.0001,0.0001,0.0001,0,0,0,0,0,0,0,0,0 

Каждое число представляет собой точку статистики. Чем больше игр с одинаковым счетом, тем выше будет номер точки. Первая точка представляет собой оценки, близкие к 0, а последняя точка представляет оценки, близкие к max_score. Числа от 0 до 1. Таким образом, если 90% от оценки равны 0 (или почти), то первое число в строке будет 0,9 ...

/EDIT

Проблема заключается в том, номер игр, которые были сыграны до сих пор (более 500K игр). Это означает, что сценарий, отвечающий за вычисления точек статистики, должен иметь дело с оценками 500K +, которые являются ПУТЕМ выше фактического ограничения массива JavaScript.

Я знаю, что это, вероятно, основная проблема для любого специалиста по бэкэнд, но я не могу найти умного решения. Я не знаю, как генерировать статистику из большого количества записей данных, используя Cloud Code, написанные на JavaScript в Parse.com.

Любая помощь или руководство будут оценены.

ответ

1

Поздравляем с популярным приложением. Счетчик строк - это операция с низкой стоимостью, просто выполните (новый Parse.Query («MyTable»)). Count(). Способ сделать сводную статистику состоит в том, чтобы поддерживать максимальную и среднюю значения в одной строке в своей таблице. Вы можете вычислить инкрементное среднее значение со счетом, see here. Суть является:

newAve = oldAve + (newScore-oldAverage)/count 

Макс еще проще:

newMax = (newScore>oldMax)? newScore : oldMax; 

Не уверен, что я понимаю, что points относится в вашем вопросе, но, надеюсь, вы можете расширить свои идеи здесь.

EDIT

Я думаю, я понимаю, данные точки, чтобы быть распределение баллов. Похоже, вы суммировали счет на 40 категорий (возможно, округляя), а затем подсчитываете количество баллов, полученных в каждом ящике. Если я прав, это тоже может быть обработано дополнительным сводным представлением: Добавьте таблицу со столбцом, который представляет бит (например, int, 0..40), и столбец int, который представляет количество баллов достигнутый в этом бункере. Вся эта таблица 40 * 2int легко читается в памяти и обрабатывается.

+0

Спасибо за ваш ответ. На самом деле основная проблема заключается в вычислительных точках. На изображении вы можете увидеть график из 40 пунктов. Чем выше точка (ближе к 1.0), тем больше игр с этим результатом. Тогда, если 90% игр имеют оценку, близкую к 150, а максимальная оценка - 300, то точки в центре графика будут иметь значение 0,9. Кроме того, левая сторона диаграммы равна 0, а правая сторона - максимальная оценка. Теперь ясно? – lvictorino

+0

Это простая идея, но она должна работать. Спасибо за вашу помощь. – lvictorino

Смежные вопросы