AppEngineデータストアについて知っていても、私はこれに対する答えは分かりません。誰かがすでに答えを知っていることを期待して、それを理解するために必要なすべてのコードを書いて実行する必要がないようにしようとしています。Google AppsエンジンのデータストアでONEを行う最も効率的な方法は何ですか
私はコードのように持っている:
class AddlInfo(db.Model)
user = db.ReferenceProperty(User)
otherstuff = db.ListProperty(db.Key, indexed=False)
そして持つレコードを作成します。私のような何かを行うことができます。このオブジェクトを取得するには
info = AddlInfo(user=user)
info.put()
を:
# This seems excessively wordy (even though that doesn't directly translate into slower)
info = AddlInfo.all().filter('user =', user).fetch(1)
または私は何ができます次のようなもの:
class AddlInfo(db.Model)
# str(user.key()) is the key to this record
otherstuff = db.ListProperty(db.Key, indexed=False)
の作成は次のようになります。
info = AddlInfo(key_name=str(user.key()))
info.put()
し、次いで情報を取得:
info = AddlInfo.get(str(user.key()))
私は(私はユーザーオブジェクトを使用してそこに着いた、AddlInfoでreference_propertyを必要としません最初の場所)。より速い/少ないリソース集約型はどれですか?私はこのようにそれをやった理由の
==================
一部はotherstuffは100+キーのリストかもしれないと私は必要だということですそれらは時々(たぶん50%未満です)、私はすべての要求にこれらの100以上のキーをロードする必要がないので、効率的にしようとしていました。.....
最も効率的な方法は、ただ正規化し、2つの別個のエンティティを持たないことです。 – geoffspear
最後にあなたが言及するオーバーヘッドを避けるための "トリック"があります - 子クラスに100以上のキーを置きます。それを選択し、キーを取得し(のみ)、親を見つけて、より少量のデータをプルすることができます。これはここの別の答え、どこかで説明されています.... –