Я работаю в системе, которая будет работать на GAE, в которой будет несколько связанных сущностей, и я не уверен, что лучше всего хранить данные.Этот пост является просьбой о совете от других, которые могут иметь подобный опыт ....
В системе будут пользователи, с данными профиля и изображением.Эти пользователи смогут создавать «события» и добавлять в него записи журнала.Для целей системы «события», скорее всего, будут содержать 1 или 2 записи в журнале, и что-либо более 10, вероятно, никогда не произойдет.Другие пользователи также смогут добавлять комментарии к записям пользователей, где популярные могут содержать сотни или даже тысячи комментариев.Когда случайный посетитель использует систему, он должен иметь возможность видеть последние события (последние, определяемые событиями с последними записями в журнале), выполнять поиск по тегу и выполнять базовый текстовый поиск.Затем, после выбора события для просмотра, оно должно отображаться со всеми записями журнала и всеми комментариями пользователей, с изображениями пользователей вместе с комментариями.У пользователя также должна быть своего рода страница для самостоятельного администрирования, позволяющая просматривать / изменять / удалять свои события и просматривать / изменять / удалять комментарии, которые они делали в отношении других событий.Таким образом, выполнение всего этого на обычной СУБД будет просто запрашивать несколько больших объединений в нескольких таблицах.На GAE это, очевидно, должно работать по-другому.Вот мои первые мысли о дизайне сущностей:
- Сущность события - идентификатор, имя, отметка времени, свойство списка тегов, количество просмотров, имя пользователя создателя, идентификатор изображения профиля создателя, количество записей в журнале.он содержит, общее количество комментариев, которые он содержит, отметку времени последнего обновления содержащихся записей журнала, свойство списка индексных слов для поиска (построено / обновлено на основе текста из содержащихся записей журнала)
- Объект JournalEntry - отметка времени, текст журнала, имя события, имя пользователя создателя, идентификатор изображения профиля создателя, свойство списка комментариев (содержащее имя пользователя и идентификатор изображения комментатора)
- Сущность пользователя - имя пользователя, хэш пароля, адрес электронной почты, свойство списка подписанных событий, отметка времени созданиядата, идентификатор изображения, количество опубликованных комментариев, количество созданных событий, количество созданных записей журнала, отметка времени последней активности журнала
- Объект UserComment - имя пользователя, идентификатор комментария к событию, комментарий к событию, отмеченному
- Сущность TagData - таg name, количество событий с тегами
Итак, я хотел бы услышать, что люди думают о дизайне и какие изменения нужно внести, чтобы он хорошо масштабировался.Спасибо!