2010-12-13 74 views
0

在我的应用程序有一个档案实体,其中有一些孩子,像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实体,其中包含对Profile的引用,时间戳和任意字符串数据。这将在稍后处理,以检查自上次用户登录后发生了什么。

问题是因为AdminLog与Profile不属于同一个实体组,所以我不能将它添加到同一个事务中,但是在另一方面,我认为将所有这些设置为不合适记录在同一个实体(配置文件)下,因为它不是重要数据。

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

预先感谢任何提示

回答

3

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

相关问题