Мне интересно, как лучше всего разработать социальное приложение, в котором участники будут выполнять действия и выполнять другие действия с помощью Google AppEngine.
Чтобы быть более конкретным, предположим, что мы имеем эти сущности:
- Пользователи, у кого есть друзья
- Действия, которые представляют действия, сделанные пользователями (например, каждое из них имеет строковое сообщение и ReferenceProperty для своего владельца или может использовать родительскую ассоциацию с помощью ключа appengine)
Жесткая часть следит за действиями ваших друзей, что означает объединение последних действий со всех ваших друзей. Обычно это будет объединение между таблицей "Деятельность" и списком друзей, но это не жизнеспособный дизайн приложения, так как нет имитации соединения, для этого требуется запуск N запросов (где N - количество друзей), а затем слияние в памяти - очень дорогой и, вероятно, превысит срок подачи запроса...)
В настоящее время я собираюсь реализовать это, используя очереди входящих сообщений, когда создание нового Activity будет запускать фоновый процесс, который поместит новый ключ активности в "входящие" для каждого следующего пользователя:
- Получение "Все пользователи, которые следуют за X" - это возможный запрос appengine
- Не очень дорогой пакетный ввод в новый объект "Входящие", который в основном хранит кортежи (Пользователь, активность).
Я буду рад услышать мысль об этом дизайне или альтернативных предложениях и т.д.