我正在设计我的应用程序数据模型,我怀疑是使用父索引还是简单索引。
Site{
@Id Long id;
}
Booking{
@Id Long id;
@Index/Parent Key<Site> site;
@Index Date date;
}
我的2个实体是预订和网站。关系是网站有许多预订。 我想以两种方式检索预订: getBookingBySiteAndDate (关键网站,日期日期)和 getBookingsByDate (日期日期)
如果我使用父,则第二次查询*效率不高,因为我需要预订的网站来检索所有预订。本网站可能已被删除。
如果我使用索引,则第一个查询效率不高,因为我需要(日期,网站)中的自定义索引并且成本很高。因为预订没有实体组而且我有1w / s的限制,因此创作的公寓不一致。
你有什么建议?
答案 0 :(得分:1)
我不会使用父母。我见过父母的唯一价值就是你需要创建一个交易组。在您的示例中,我只是将Site的id存储在预订表中,并为getBookingBySiteAndDate查询创建索引。它会非常快。索引将自动为您创建,无需您做额外的工作。
答案 1 :(得分:0)
我已经在Objectify邮件列表中进行了双重检查,并且没有限制将getBookingsByDate与Parent和没有Site Id一起使用。
他们建议我使用的解决方案是使用@Parent,因为它更快,而且你不需要Site-Date上的双索引。