这是有关Google数据存储区的最佳实践问题。我正在尝试建立对象关系,我看到了两个选项
第三个选项不可用,JDO加入
App Engine不支持连接查询:您无法使用子实体的属性查询父实体。 (您可以查询嵌入类的属性,因为嵌入式类存储父实体的属性。请参阅定义数据类:嵌入式类。)
我担心使用选项1是一个简单的搜索查询,我将返回许多不需要的数据。
作为Product Class和ProductDetail类的示例。当客户搜索我的产品时,他们只是根据类别,名称进行搜索并按价格排序。所有简单信息都在Product类中。在ProductDetail类中,我包含大型描述字符串,图像链接,关键属性列表。因此,在Product Class中,我可以嵌入ProductDetail类,或者只创建一个包含ProductDetail类的键值的外键属性。
那么我应该使用选项2吗?我在某个地方读到了不像对待数据库那样对待Google数据存储区。但是使用选项2就是我正在做的事情。
答案 0 :(得分:0)
同意选项1不可扩展,因为请求者通常对嵌入的子项不感兴趣。 JDO和JPA旨在按需执行延迟加载数据,但是当不需要嵌入数据时,可能仍会有开销。
选项2可能看起来像是严格关系的,但并非必须如此。如果您的实体未通过祖先密钥锁定到实体组中,则记录不相关且没有约束。实际上,您可以确定实体设计和应用程序代码的一致性。