app engine ndb fetch非常慢

时间:2015-06-12 18:18:18

标签: google-app-engine google-cloud-datastore app-engine-ndb

我需要存储大量ModelA个实体,并且由于应用引擎定价基于写入/读取的实体数量,因此我将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会更好吗?

1 个答案:

答案 0 :(得分:0)

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

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)

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