У меня есть модель сообщения, и я хочу, чтобы в ней было несколько получателей, возможно, их много.Я также хотел бы иметь возможность сообщить каждому получателю, было ли сообщение просмотрено или нет (прочитано / не прочитано).Также я бы хотел, чтобы получатель мог удалить сообщение.
Возможны следующие два решения: для каждой модели сообщений у меня есть модель пользователя.
Для первого (используя идеи, представленные здесь http://www.google.com/events/io/2009/sessions/BuildingScalableComplexApps.html)
У меня есть класс MessageReceivers, у которого есть ListProperty, содержащий пользователей, которые будут получать сообщение и устанавливать родительский элемент для сообщения. Я запрашиваю это с помощью messages = db.GqlQuery('SELECT __key__ FROM MessageReceivers WHERE receivers = :1', user)
и do a db.get([ key.parent() for key in messages ])
.
Проблема, с которой я столкнулся, заключается в том, что я не уверен, как сохранить состояние сообщения: читается оно или нет, и возникает ли последующая проблема:У пользователя есть новые сообщения. Дополнительной проблемой могут быть накладные расходы на удаление сообщения (придется удалить пользователя из свойства списка получателей)
- Для второго: у меня есть MessageReceiver для каждого получателя, на который есть ссылкидля сообщения и для пользователя, а также сохраняет состояние (чтение / непрочитанное).
Какой из этих двух подходов вы считаете, что он имеет лучшую производительностьormance?И в случае первого у вас есть какие-либо предложения по обработке статуса сообщения.