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)
这将避免处理结构化属性和验证的开销。
我需要存储很多 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)
这将避免处理结构化属性和验证的开销。