我正在努力将应用程序从 db 转换为 ndb,并且正在努力提高我的查询效率。随着数据量的增加,应用程序变得有点慢,导致我们意识到查询效率很低。
背景:
我们的精简数据模型与此类似(请随意批评):
class ServiceRequest(ndb.Model):
technician = ndb.UserProperty()
application = ndb.KeyProperty() # ServiceRequestApplication kind
class ServiceRequestApplication(ndb.Model):
applicant = ndb.UserProperty()
管理员可以“批准” ServiceRequest 的 ServiceRequestApplication。ServiceRequestApplications 使用父 ServiceRequest 实例化。如果 ServiceRequestApplication 被批准,则应用程序的密钥存储在请求的应用程序属性中。
棘手的部分:
1 个实际服务预约(每位技术人员 1 个)可以有多个 ServiceRequest 实体。我们有一个 ServiceRequest,如果需要多种技术,我们会创建额外的 ServiceRequest,以主 ServiceRequest 作为父级。我们最初以这种方式解决问题是因为祖先查询非常容易,包括与查询/表示此数据的方式有关的其他一些原因。
谁能想到一种方法来查询没有子 ServiceRequest 的 ServiceRequest 实体?
谢谢!