регистрация движка приложения в базе данных и группах объектов - PullRequest
0 голосов
/ 13 декабря 2010

В моем приложении есть сущность Profile, у которой есть несколько дочерних элементов, таких как ProfileAccount, ProfileLink и т. Д. Они обычно обновляются в транзакции, например

def update_profile(key): 
  profile = db.get(key)
  accounts = db.query("SELECT * FROM ProfileAccount WHERE ANCESTOR IS :1", profile)
  # do something with accounts and profile
  profile.put()

Я вызываю его с помощью db.run_in_transaction (update_profile, key), но мне нужно иметь административный журнал всего, что происходит при обновлении профиля, поэтому я создал общую сущность AdminLog, которая содержит ссылку на профиль, метка времени и произвольные строковые данные. Это будет обработано позже, чтобы проверить, что произошло с момента последнего входа пользователя.

Проблема в том, что AdminLog не принадлежит к той же группе сущностей, что и Профиль, я не могу добавить ее в ту же транзакцию, но, с другой стороны, я не думаю, что было бы разумно поместить все эти журналы под той же сущностью (профилем), так как это несущественные данные.

Одна вещь, о которой я подумал, - это StringList в профиле, который будет очищаться при каждом входе в систему, поэтому таким образом у меня будет все, что происходит с профилем. Как вы думаете, это хороший подход, или, может быть, есть какой-то другой обходной путь для такой ситуации?

Заранее благодарен за любые советы

1 Ответ

3 голосов
/ 14 декабря 2010

Использование дочерних объектов кажется лучшим вариантом.Это гарантирует, что вы можете обновить их транзакционно, и связывает изменения с сущностью, к которой они применяются.При желании вы можете собрать мусор в старых записях журнала администратора, чтобы сэкономить место.

...