db.BlobProperty()的性能注意事项

时间:2013-06-13 01:36:50

标签: google-app-engine

在我的应用中,我希望有一个像这样定义的实体:

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

假设这个blob大约1兆字节。这会减慢我在MyModel类型上进行的任何查询吗?它是为每个实体获取整个1mb,还是仅仅在我实际尝试访问blob之前引用?

1 个答案:

答案 0 :(得分:1)

检索实体的那一刻,除非您执行投影查询,否则将从数据存储区加载blob。

您有几个选项可以避免在需要之前加载BlobProperty。

  1. 执行投影查询,然后只在需要时获取完整实体。

  2. 将BlobProperty粘贴在Child实体中(将顶级域名设为祖先)并且只在需要时使用get获取属性。

  3. 不要使用BlobProperty,而是将其粘贴在GCS(Google CLoud Storage)中并从那里提供服务。

  4. 最后一个好处是,如果你不对blob进行处理,你的appengine实例不需要参与提供它(当然,取决于你的要求)