0

在我的应用程序中,我有一个 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 与 Profile 不属于同一个实体组,我不能将它添加到同一个事务中,但另一方面,我认为将所有这些日志放在同一事务下并不聪明实体(个人资料),因为它不是基本数据。

我想到的一件事是配置文件上的 StringList,每次登录时都会清除它,所以这样我就可以拥有配置文件中发生的所有事情。您认为这是一个不错的方法,或者对于这种情况还有其他解决方法吗?

提前感谢您的任何提示

4

1 回答 1

3

使用子实体似乎是最好的选择。它确保您可以以事务方式更新它们,并将更改与它们应用到的实体相关联。如果您愿意,您可以垃圾收集旧的管理日志条目以节省空间。

于 2010-12-14T01:32:19.713 回答