假设我们有基于 2 个模型的数百万个地址。
Address
模型具有纯字符串属性,即使对于常见的属性,如county
:class Address(ndb.Model): house_no = ndb.StringProperty() street = ndb.StringProperty() locality = ndb.StringProperty() # City/town county = ndb.StringProperty() zipcode = ndb.StringProperty()
StructuredAddress
model 通过将每个属性定义为 a 来保留更常见的属性作为对其他模型的引用KeyProperty
:class StructuredAddress(ndb.Model): house_no = ndb.StringProperty() street = ndb.StringProperty() locality = ndb.KeyProperty(kind=Locality) # City/town county = ndb.KeyProperty(kind=County) zipcode = ndb.KeyProperty(kind=Zipcode)
以下是问题:
当基于常见属性进行查询时,哪种模型更有效
zipcode
?假设
county
属性的数量约为 50,而zipcode
属性的数量约为数百万。给定数百万个地址记录,在这种情况下哪种模型更有效?KeyProperty
在这个例子中使用是否意味着更多的读取操作,并且实际上更高的账单?内置的 ndb 缓存会避免这种情况吗?