2010-12-13 68 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

使用子實體似乎是最好的選擇。它確保您可以事務性地更新它們,並將更改與其應用的實體相關聯。如果你願意,你可以垃圾收集舊的管理日誌條目,以節省空間。

相關問題