Рейтинги в таблице Azure

Я просто застрял в проблеме дизайна. Я хочу присвоить ранги пользовательским записям в таблице. Они совершают какие-то действия на сайте и получают ранг на основе таблицы лидеров. И выбор, который я хочу для них, может быть в Top 10, позиции пользователя, Top 10, вошедших в систему сегодня и т. д.

Я просто не могу найти способ сохранить его в таблице Azure. Затем я подумал о хранении пользовательского объекта коллекции (отсортированного списка) в большом двоичном объекте.

Какие-либо предложения?


person Yahya    schedule 03.10.2011    source источник


Ответы (1)


Сущности таблицы сортируются по PartitionKey, RowKey. Хотя вы можете постоянно удалять и воссоздавать пользователей (таким образом, позволяя вам изменять PK, RK), чтобы задать правильный порядок, это кажется плохой идеей или, по крайней мере, излишним. Вместо этого я бы, вероятно, хранил данные, которые вы используете для вычисления рейтингов, и периодически вычислял и сохранял рейтинги (как вы говорите). Мы часто делаем это в нашей работе — предварительно вычисляем, как данные должны выглядеть в представлении JSON, сохраняем их в большом двоичном объекте и позволяем пользовательскому интерфейсу запрашивать их напрямую. Хитрость заключается в том, чтобы решить, когда пересчитывать представление. После того, как пользователь сделает что-то, что приведет к пересчету рейтинга, я, вероятно, поставлю сообщение в очередь и позволю рабочему процессу пересчитать представление. Это предотвращает одновременное обновление данных слишком большим количеством рабочих процессов.

person dunnry    schedule 03.10.2011