2010-05-08 3 views
0

Я собираюсь по кругу с тем, что должно быть очень простой задачей, но я хочу сделать это наиболее эффективным способом с самого начала. Итак, я просмотрел видеоролики Google IO Бретта Слаткина (2008 & 2009) о создании масштабируемых приложений, включая http://www.youtube.com/watch?v=AgaL6NGpkB8, и прочитал документы, но, как n00b, я все еще не уверен.Покажите пользователям список уникальных элементов в Java Google App Engine

Я пытаюсь создать приложение на GAEJ, похожее на оригинальное «hotornot», где пользователю предоставляется элемент, который они оценивают. Как только они оценивают его, они представлены другим, которые они не видели раньше.
Мой вопрос в том, что; наиболее эффективно ли выполнять запрос перед захватом x элементов (скажем, 100) и помещать их в список (хранящийся в memcache?), или лучше просто сделать запрос для нового элемента после каждого рейтинга.
Чтобы отслеживать элементы, которые пользователь видел, я планирую хранить ключи этих элементов в свойстве списка объекта пользователя. Это звучит разумно?

Я действительно смутился из-за этого, поэтому любая помощь будет высоко оценена.

ответ

0

Я бы лично сделать что-то вроде:

Когда пользователь входит в систему, создать список из 100 случайных идентификаторов, что они не видели. Затем, когда они нажимают на следующий элемент, делайте запрос в хранилище данных и отбрасывайте тот, который находится впереди списка.

Если это происходит слишком медленно, вы можете попытаться кэшировать, но очень сложно хранить всю вашу базу данных. Даже загрузка 100 ребят, которые им нужны, будет сложной (по мере того, как количество пользователей уменьшится). Откат назад 1 запись для 1 загрузки веб-страницы не замедляется. Каждый клик будет после 1 комментария и вытащить 1 элемент назад. Простой, всего несколько MS от хранилища данных. Выполнение 100 случайных идентификаторов, которые они не видели, может быть медленным, поэтому имеет смысл делать заблаговременно и поддерживать (в своем запросе или сеансе в зависимости от того, как вы это делаете)

+0

большое спасибо за ваш ответ. Работая самостоятельно, хорошо знать, что я направляюсь в правильном направлении. Думаю об этом немного больше (после некоторого сна!) Я считаю, что на самом деле нет необходимости захватывать кучу идентификаторов в пакетном режиме. Я думаю, что просто буду держать его простым и захватить случайный идентификатор, который пользователь не видел. После того, как они отправят свой рейтинг, просто возьмите еще один, используя технику объединения, описанную в представленной выше презентации Google IO. Я предполагаю, что стоимость такого чтения незначительна и будет масштабироваться в порядке по мере увеличения числа пользователей. Спасибо. – James

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