App Engine ndb fetch 非常慢

app engine ndb fetch is very slow

我需要存储很多 ModelA 个实体,因为应用引擎定价是基于实体的数量 written/read,我将 100 个实体捆绑在一起并将它们存储为一个 ModelB.

class ModelA(ndb.Expando):
  a1 ... a20 = ndb.IntegerProperty()

class ModelB(ndb.Model):
  data = ndb.StructuredProperty(ModelA, repeated=True)

我的数据存储区中只有 80 个这样的 ModelB 实体,它们应该使用大约 1-2MB 的内存,但 ModelB.query().fetch() 需要 5 秒。有什么办法可以让它更快吗?使用 LocalStructuredProperty 而不是 StructuredProperty 会更好吗?

如果您不需要为值编制索引(用于查询),您可能希望将它们存储为不透明对象:

class ModelB(ndb.Model):
    data = ndb.JsonProperty(indexed=False)

    def add_data(self, model_a)
        if not self.data:
            self.data = []
        self.data.append(model_a)

这将避免处理结构化属性和验证的开销。