1

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

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

假设这个 blob 大约有 1 兆字节。这会减慢我对 MyModel 类型进行的任何查询吗?它是获取每个实体的全部 1mb,还是只是引用,直到我真正尝试访问 blob?

4

1 回答 1

1

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

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

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

  2. 将 BlobProperty 粘贴在子实体中(使顶层成为祖先),并且仅在需要时使用 get 获取属性。

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

最后一个好处是,如果您不对 blob 进行任何处理,您的 appengine 实例就不需要参与服务它(当然取决于您的要求)

于 2013-06-13T01:45:43.053 回答