0

私のアプリケーションには、ProfileAccount、ProfileLink などのいくつかの子を持つ Profile エンティティがあります。これらは通常、次のようにトランザクションで更新されます。

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 がプロファイルと同じエンティティ グループに属していないためです。同じトランザクションに追加することはできませんが、一方で、これらすべてのログを同じエンティティ グループに配置するのは賢明ではないと思います。必須データではないため、エンティティ (プロファイル)。

私が考えたことの 1 つは、プロファイルの StringList で、ログインごとにクリアされるので、この方法でプロファイルに発生したすべてのものを取得できます。それは良いアプローチだと思いますか、それともこの種の状況に対する他の回避策があると思いますか?

ヒントを事前にありがとう

4

1 に答える 1

3

子エンティティを使用するのが最良の選択肢のようです。それらをトランザクションで更新できるようにし、変更を適用先のエンティティに関連付けます。必要に応じて、スペースを節約するために古い管理ログ エントリをガベージ コレクションできます。

于 2010-12-14T01:32:19.713 に答える