1

私のアプリでは、エンティティを次のように定義したいと考えています。

class MyModel(db.Model):
    title           = db.StringProperty()
    myBlob          = db.BlobProperty()

このブロブが約 1 メガバイトを保持しているとします。これにより、MyModel 型に対して行うクエリが遅くなりますか? エンティティごとに 1 MB 全体を取得していますか、それとも実際にブロブにアクセスしようとするまで参照しているだけですか?

4

1 に答える 1

1

プロジェクション クエリを実行しない限り、エンティティを取得した瞬間に BLOB がデータストアから読み込まれます。

必要になるまで BlobProperty の読み込みを回避するためのオプションがいくつかあります。

  1. 射影クエリを実行し、必要なときにのみ完全なエンティティをフェッチします。

  2. BlobProperty を Child エンティティに固定し (トップ レベルを祖先にします)、必要なときにのみ get でプロパティをフェッチします。

  3. BlobProperty を使用せずに、GCS (Google Cloud Storage) に貼り付けて、そこから提供します。

後者には、ブロブで処理を行わない場合、appengine インスタンスがその処理に関与する必要がないという利点があります (もちろん、要件によって異なります)。

于 2013-06-13T01:45:43.053 に答える